Ⅰ linux命令行查看内存
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况...
还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。
top:
主要参数 :
free
1.作用
free命令用来显示内存的使用情况,使用权限是所有用户。
**2.格式 **
**3.主要参数 **
uptime
vmstat
**1 观察磁盘活动情况 **
磁盘活动情况主要从以下几个指标了解:
**2 观察cpu活动情况 **
vmstat比top更能反映出cpu的使用情况:
iostat
用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量
即使爬到最高的山上,一次也只能脚踏实地地迈一步。
Linux查看CPU和内存使用情况:
在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法。
1. /proc/meminfo
查看RAM使用情况最简单的方法是通过 /proc/meminfo 。这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。 /proc/meminfo 列出了所有你想了解的内存的使用情况。进程的内存使用信息也可以通过/proc/<pid>/statm 和 /proc/<pid>/status 来查看。
atop命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。
free命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。
GNOME System Monitor 是一个显示最近一段时间内的CPU、内存、交换区及网络的使用情况的视图工具。它还提供了一种查看CPU及内存使用情况的方法。
htop命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。列表可以水平及垂直滚动。
功能同 4 中介绍的GENOME版本。
memstat是一个有效识别executable(s), process(es) and shared libraries使用虚拟内存情况的命令。给定一个进程ID,memstat可以列出这个进程相关的可执行文件、数据和共享库。
nmon是一个基于ncurses的系统基准测试工具,它可以监控CPU、内存、I/O、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。
ps命令可以实时的显示各个进程的内存使用情况。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort”选项对进程进行排序,例如按RSS进行排序:
smem命令允许你统计基于/proc信息的不同进程和用户的内存使用情况。内存使用情况的分析可以导出图表(如条形图和饼图)。
top命令提供了实时的运行中的程序的资源使用统计。你可以根据内存的使用和大小来进行排序。
vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。
Ⅱ 求LCD显示模块 实现NiosII驱动240X128LCD显示 VHDL语言编程 急求,求好心人帮助
/drivers/video/niosii/nois11.c
自己去看吧。还要看/drivers/video/fbmem.c 这里面的函数有些会被调用.
给你举个例子:
staticvoidipu_clear_usage(intipu,intdi)
{
ipu_usage[ipu][di]=false;
}
/*!
*.Itiscalledringthe
*driverbindingprocess.
*thisroutine:Framebufferinitialization,Memoryallocationand
*mapping,Framebufferregistration,IPUinitialization.
*
*@
*/
staticintmxcfb_probe(structplatform_device*pdev)
{
structipuv3_fb_platform_data*plat_data=pdev->dev.platform_data;
structfb_info*fbi;
structmxcfb_info*mxcfbi;
structresource*res;
structdevice*disp_dev;
charbuf[32];
intret=0;
/*InitializeFBstructures*/
fbi=mxcfb_init_fbinfo(&pdev->dev,&mxcfb_ops);
if(!fbi){
ret=-ENOMEM;
gotoinit_fbinfo_failed;
}
ret=mxcfb_option_setup(pdev,fbi);
if(ret)
gotoget_fb_option_failed;
/**********byzxyadd:modpara*************************************************
printk(" byzxy1:fbi->var.xres=0x%x,fbi->var.yres=0x%x ",fbi->var.xres,fbi->var.yres);
printk(" byzxy1:fbi->var.xres_virtual=0x%x,fbi->var.yres_virtual=0x%x ",fbi->var.xres_virtual,fbi->var.yres_virtual);
fbi->var.xres=800;
fbi->var.yres=480;
fbi->var.xres_virtual=1920;
fbi->var.yres_virtual=1440;
printk(" byzxy2:fbi->var.xres=0x%x,fbi->var.yres=0x%x ",fbi->var.xres,fbi->var.yres);
printk(" byzxy2:fbi->var.xres_virtual=0x%x,fbi->var.yres_virtual=0x%x ",fbi->var.xres_virtual,fbi->var.yres_virtual);
/***********************************************************/
mxcfbi=(structmxcfb_info*)fbi->par;
spin_lock_init(&mxcfbi->lock);
mxcfbi->fbi=fbi;
mxcfbi->ipu_int_clk=plat_data->int_clk;
mxcfbi->late_init=plat_data->late_init;
mxcfbi->first_set_par=true;
mxcfbi->panel_width_mm=plat_data->panel_width_mm;
mxcfbi->panel_height_mm=plat_data->panel_height_mm;
ret=mxcfb_dispdrv_init(pdev,fbi);
//byzxyadd
//printk(" byzxy1:mxcfbi->default_bpp==%d ",mxcfbi->default_bpp);
//mxcfbi->default_bpp=16;
//printk(" byzxy1:mxcfbi->default_bpp==%d ",mxcfbi->default_bpp);
if(ret<0)
gotoinit_dispdrv_failed;
ret=ipu_test_set_usage(mxcfbi->ipu_id,mxcfbi->ipu_di);
if(ret<0){
dev_err(&pdev->dev,"ipu%d-di%dalreadyinuse ",
mxcfbi->ipu_id,mxcfbi->ipu_di);
gotoipu_in_busy;
}
res=platform_get_resource(pdev,IORESOURCE_MEM,0);
if(res&&res->start&&res->end){
fbi->fix.smem_len=res->end-res->start+1;
fbi->fix.smem_start=res->start;
// printk(" byzxy2:fbi->fix.smem_start=0x%x ",fbi->fix.smem_start);
fbi->screen_base=ioremap(fbi->fix.smem_start,fbi->fix.smem_len);
// printk(" byzxy3:fbi->screen_base=0x%x ",fbi->screen_base);
// printk(" byzxy4:fbi->fix.smem_len=0x%x ",fbi->fix.smem_len);
//byzxysee2
/*.*/
if(!mxcfbi->late_init)
memset(fbi->screen_base,0,fbi->fix.smem_len);
}
mxcfbi->ipu=ipu_get_soc(mxcfbi->ipu_id);
if(IS_ERR(mxcfbi->ipu)){
ret=-ENODEV;
gotoget_ipu_failed;
}
/**/
if(!g_dp_in_use[mxcfbi->ipu_id]){
mxcfbi->ipu_ch_irq=IPU_IRQ_BG_SYNC_EOF;
mxcfbi->ipu_ch_nf_irq=IPU_IRQ_BG_SYNC_NFACK;
mxcfbi->ipu_alp_ch_irq=IPU_IRQ_BG_ALPHA_SYNC_EOF;
mxcfbi->ipu_vsync_pre_irq=mxcfbi->ipu_di?
IPU_IRQ_VSYNC_PRE_1:
IPU_IRQ_VSYNC_PRE_0;
mxcfbi->ipu_ch=MEM_BG_SYNC;
/**/
if(pdev->id==0)
mxcfbi->cur_blank=mxcfbi->next_blank=FB_BLANK_UNBLANK;
else
mxcfbi->cur_blank=mxcfbi->next_blank=FB_BLANK_POWERDOWN;
ret=mxcfb_register(fbi);
if(ret<0)
gotomxcfb_register_failed;
ipu_disp_set_global_alpha(mxcfbi->ipu,mxcfbi->ipu_ch,
true,0x80);
ipu_disp_set_color_key(mxcfbi->ipu,mxcfbi->ipu_ch,false,0);
res=platform_get_resource(pdev,IORESOURCE_MEM,1);
ret=mxcfb_setup_overlay(pdev,fbi,res);
if(ret<0){
mxcfb_unregister(fbi);
gotomxcfb_setupoverlay_failed;
}
g_dp_in_use[mxcfbi->ipu_id]=true;
ret=device_create_file(mxcfbi->ovfbi->dev,
&dev_attr_fsl_disp_property);
if(ret)
dev_err(mxcfbi->ovfbi->dev,"Error%doncreating"
"filefordispproperty ",
ret);
ret=device_create_file(mxcfbi->ovfbi->dev,
&dev_attr_fsl_disp_dev_property);
if(ret)
dev_err(mxcfbi->ovfbi->dev,"Error%doncreating"
"filefordispdevice"
"propety ",ret);
}else{
mxcfbi->ipu_ch_irq=IPU_IRQ_DC_SYNC_EOF;
mxcfbi->ipu_ch_nf_irq=IPU_IRQ_DC_SYNC_NFACK;
mxcfbi->ipu_alp_ch_irq=-1;
mxcfbi->ipu_vsync_pre_irq=mxcfbi->ipu_di?
IPU_IRQ_VSYNC_PRE_1:
IPU_IRQ_VSYNC_PRE_0;
mxcfbi->ipu_ch=MEM_DC_SYNC;
mxcfbi->cur_blank=mxcfbi->next_blank=FB_BLANK_POWERDOWN;
ret=mxcfb_register(fbi);
if(ret<0)
gotomxcfb_register_failed;
}
platform_set_drvdata(pdev,fbi);
ret=device_create_file(fbi->dev,&dev_attr_fsl_disp_property);
if(ret)
dev_err(&pdev->dev,"Error%doncreatingfilefordisp"
"property ",ret);
ret=device_create_file(fbi->dev,&dev_attr_fsl_disp_dev_property);
if(ret)
dev_err(&pdev->dev,"Error%doncreatingfilefordisp"
"devicepropety ",ret);
disp_dev=mxc_dispdrv_getdev(mxcfbi->dispdrv);
if(disp_dev){
ret=sysfs_create_link(&fbi->dev->kobj,
&disp_dev->kobj,"disp_dev");
if(ret)
dev_err(&pdev->dev,
"Error%doncreatingfile ",ret);
}
INIT_WORK(&mxcfbi->vsync_pre_work,mxcfb_vsync_pre_work);
snprintf(buf,sizeof(buf),"mxcfb%d-vsync-pre",fbi->node);
mxcfbi->vsync_pre_queue=create_singlethread_workqueue(buf);
if(mxcfbi->vsync_pre_queue==NULL){
dev_err(fbi->device,
"Failedtoallocvsync-preworkqueue ");
ret=-ENOMEM;
gotoworkqueue_alloc_failed;
}
#ifdefCONFIG_HAS_EARLYSUSPEND
mxcfbi->fbdrv_earlysuspend.level=EARLY_SUSPEND_LEVEL_DISABLE_FB;
mxcfbi->fbdrv_earlysuspend.suspend=mxcfb_early_suspend;
mxcfbi->fbdrv_earlysuspend.resume=mxcfb_later_resume;
mxcfbi->fbdrv_earlysuspend.data=pdev;
register_early_suspend(&mxcfbi->fbdrv_earlysuspend);
#endif
//byzxydel,toloadlogo.bmp
printk(" byzxy3:fbi->var.xres=%d,fbi->var.yres=%d ",fbi->var.xres,fbi->var.yres);
printk(" byzxy3:fbi->var.xres_virtual=%d,fbi->var.yres_virtual=%d ",fbi->var.xres_virtual,fbi->var.yres_virtual);
printk(" byzxy3:fbi->var.bits_per_pixel=%d,fbi->var.pixclock=%d ",fbi->var.bits_per_pixel,fbi->var.pixclock);
// printk(" byzxy3:fbi->var.xres_virtual=0x%x,fbi->var.yres_virtual=0x%x ",fbi->var.xres_virtual,fbi->var.yres_virtual);
#ifdefCONFIG_LOGO
fb_prepare_logo(fbi,0);
fb_show_logo(fbi,0);
#endif
return0;
workqueue_alloc_failed:
mxcfb_setupoverlay_failed:
mxcfb_register_failed:
get_ipu_failed:
ipu_clear_usage(mxcfbi->ipu_id,mxcfbi->ipu_di);
ipu_in_busy:
init_dispdrv_failed:
fb_dealloc_cmap(&fbi->cmap);
framebuffer_release(fbi);
get_fb_option_failed:
init_fbinfo_failed:
returnret;
}
staticintmxcfb_remove(structplatform_device*pdev)
{
structfb_info*fbi=platform_get_drvdata(pdev);
structmxcfb_info*mxc_fbi=fbi->par;
if(!fbi)
return0;
#ifdefCONFIG_HAS_EARLYSUSPEND
unregister_early_suspend(&mxc_fbi->fbdrv_earlysuspend);
#endif
device_remove_file(fbi->dev,&dev_attr_fsl_disp_dev_property);
device_remove_file(fbi->dev,&dev_attr_fsl_disp_property);
mxcfb_blank(FB_BLANK_POWERDOWN,fbi);
mxcfb_unregister(fbi);
mxcfb_unmap_video_memory(fbi);
if(mxc_fbi->ovfbi){
device_remove_file(mxc_fbi->ovfbi->dev,
&dev_attr_fsl_disp_dev_property);
device_remove_file(mxc_fbi->ovfbi->dev,
&dev_attr_fsl_disp_property);
mxcfb_blank(FB_BLANK_POWERDOWN,mxc_fbi->ovfbi);
mxcfb_unsetup_overlay(fbi);
mxcfb_unmap_video_memory(mxc_fbi->ovfbi);
}
ipu_clear_usage(mxc_fbi->ipu_id,mxc_fbi->ipu_di);
if(&fbi->cmap)
fb_dealloc_cmap(&fbi->cmap);
framebuffer_release(fbi);
return0;
}
/*!
*.
*/
staticstructplatform_drivermxcfb_driver={
.driver={
.name=MXCFB_NAME,
},
.probe=mxcfb_probe,
.remove=mxcfb_remove,
.suspend=mxcfb_suspend,
.resume=mxcfb_resume,
};
#ifdefCONFIG_HAS_EARLYSUSPEND
staticvoidmxcfb_early_suspend(structearly_suspend*h)
{
structplatform_device*pdev=(structplatform_device*)h->data;
structfb_info*fbi=platform_get_drvdata(pdev);
structmxcfb_info*mxcfbi=(structmxcfb_info*)fbi->par;
pm_message_tstate={.event=PM_EVENT_SUSPEND};
structfb_eventevent;
intblank=FB_BLANK_POWERDOWN;
if(mxcfbi->ipu_ch==MEM_FG_SYNC)
return;
if(strstr(mxcfbi->dispdrv->drv->name,"hdmi")){
/**/
memset(fbi->screen_base,0,fbi->fix.smem_len);
return;
}
mxcfb_core_suspend(pdev,state);
event.info=fbi;
event.data=␣
fb_notifier_call_chain(FB_EVENT_BLANK,&event);
}
staticvoidmxcfb_later_resume(structearly_suspend*h)
{
structplatform_device*pdev=(structplatform_device*)h->data;
structfb_info*fbi=platform_get_drvdata(pdev);
structmxcfb_info*mxcfbi=(structmxcfb_info*)fbi->par;
structfb_eventevent;
if(mxcfbi->ipu_ch==MEM_FG_SYNC)
return;
/**/
if(strstr(mxcfbi->dispdrv->drv->name,"hdmi"))
return;
mxcfb_core_resume(pdev);
event.info=fbi;
event.data=&mxcfbi->next_blank;
fb_notifier_call_chain(FB_EVENT_BLANK,&event);
}
#endif
/*!
*.Thefunctionregistersthepower
*
*fbmem.c
*
*@
*/
int__initmxcfb_init(void)
{
returnplatform_driver_register(&mxcfb_driver);
}
voidmxcfb_exit(void)
{
platform_driver_unregister(&mxcfb_driver);
}
mole_init(mxcfb_init);
mole_exit(mxcfb_exit);
Ⅲ 大佬手机刷入win10系统开机 小米8多少原生系统可以尝鲜
作为一名钟爱刷机的小强,什么原生、移植包、官改包,只要有资源,有大佬能做出来。我真的超级乐意去感受,刷入之后感受它的新鲜感和未知的BUG。突然感觉自己有点像刷机届的西门大官人,哈哈哈……喜新厌旧。
手持米8这款神器,虽然他的官方系统更到MIUI12就宣布停止了维护。可是它的刷机包还真是不少,移植包的就有来自酷友的@YouLinw 大佬移植的Flyme和一加的H2OS。原生系统更是多似九天银河,比如Pixel、Lineage os、EvolutionX、DerpFest、Arrow OS、Atom、BootleggersROM、AOSiP、Havoc、POSP、Revenge OS、Syberia等等以及如马丁龙猪创建的魔趣。稳定省电急速的官改更是不用说,W大、白鸽、香水、蛋黄、暗夜、小宛宛、乌堆小透明、星空未来等等。真的太多了太多了,此时此刻我真的想引用一句伏拉夫的至理名言“我们小米8真是太厉害了!”
米6虽然依然坚守米粉一线岗位,成为最佳钉子户!可我们米8也是最佳的新一代刷机王,为什么这么说呢?继小米4适配Windows系统之后,手机运行win10的大任就由米8来抗了。来自UP主 5超级菜鸟5公布了win10刷入小米8的最新进展,这一下引爆机友们的兴趣。
米8在Recovery刷入,这个熟悉的画面。也是在下多少次三清后的重启界面,这才是男人梦魂牵绕的玩具啊!再次佩服这个项目的大佬,确实适配的很厉害,要不咋说高手在民间。
开机运行的界面,不再是安卓转圈圈加载。而是真的像黑客一般数据,存储路径位置的疯狂加载。看着都舒服,莫名的高大上解压。不知有密集恐惧症的人会不会感到不适?
看到大佬操作的时间,从刷入第一次开机再到开机界面大概有2分钟。祝大佬早日突破,我已经迫不及待的攻陷win10系统,让这个小美人刷进我的米8试一试。
不要在你的主手机中闪烁这个UEFI固件!!!
它非常不稳定,您可能会丢失数据。
UFS工作!
可以引导Linux Arm
时钟工作!
测试ACPI等。添加了表格。
并且可以加载Windows PE。
2020.1.6修复5编译器错误。
2020.1.7开始工作,在我手机上成功运行。
2020.1.8固定显示。
2020.4.17修复UFS驱动器和修复内存映射(谢谢柠檬1味)。
2020.4.19添加ACPI等。表和修复DSDT 24错误。(PS。ACPI和SSDT等。表格由提供5超级菜鸟5
2020.4.24修复时钟,时钟工作正常&&将SmemDxe SPI SPMI硬件驱动程序PmicDxe按钮xe芯片信息xe添加到二进制&&添加USB驱动程序
2020.4.30重新添加内存映射并可以将窗口引导至蓝屏(停止代码:内存管理器)和(停止代码:IRQL不小于或等于)
2020.5.6解决很多问题,但不解决任何问题。
2020.5.8修复很多,但什么都不做。
2020.5.10可以启动窗口。感谢柠檬1味耐心和巨大的帮助!
2020.5.11更改SMBIOS信息并添加一些二进制文件
1.修复fts触摸屏
2.修理ACPI的桌子
3.分割UFS
4 .让USB工作
Ⅳ linux systool 在哪个工具包中
systool命令
硬件管理
systool命令指令显示基于总线、类和拓扑显示系统中设备的信息。
语法
systool(选项)(参数)
选项
-a:显示被请求资源的属性;
-b<总线>:显示指定总线的信息;
-c<class>:显示指定类的信息;
-d:仅显示设备;
-h:显示指令的用法;
-m<模块名称>:显示指定模块的信息;
-p:显示资源的“sysfs”绝对路径;
-v:显示所有属性;
-A<属性>:显示请求资源的属性值;
-D:仅显示驱动程序信息;
-P:显示设备的父类。
参数
设备:指定要查看信息的设备名称。
实例
[root@localhost ~]# systool
Supported sysfs buses:
acpi
i2c
ide
pci_express
pci
pcmcia
platform
pnp
scsi
serio
usb
Supported sysfs classes:
backlight
cpuid
dma_v3
firmware
graphics
hidraw
hwmon
i2c-adapter
input
leds
mem
misc
msr
net
pci_bus
pcmcia_socket
printer
raw
sas_device
sas_end_device
sas_expander
sas_host
sas_phy
sas_port
scsi_device
scsi_disk
scsi_generic
scsi_host
sound
tty
usb_device
usb_endpoint
usb_host
vc
vtconsole
Supported sysfs devices:
acpi
pci0000:00
platform
pnp0
sequencer2
sequencer
seq
system
timer
Supported sysfs moles:
8250
acpi_memhotplug
ac
asus_acpi
ata_piix
auth_rpcgss
backlight
battery
button
cifs
cpufreq
crypto_api
dell_wmi
dm_log
dm_mem_cache
dm_message
dm_mirror
dm_mod
dm_multipath
dm_raid45
dm_region_hash
dock
e1000e
edac_mc
ehci_hcd
exportfs
ext3
hwmon
i2c_core
i2c_ec
i2c_i801
i7core_edac
i8042
ip_conntrack_netbios_ns
ip_conntrack
ip_tables
iptable_filter
ipv6
it821x
jbd
joydev
keyboard
libata
lockd
lp
md_mod
mousedev
mpt2sas
nfnetlink
nfs_acl
nfsd
nls_utf8
ohci_hcd
parport_pc
parport
pci_hotplug
pcmcia
pcmcia_core
pcspkr
piix
power_meter
printk
processor
psmouse
rsrc_nonstatic
sbs
scsi_dh
scsi_mod
scsi_transport_sas
sd_mod
serio_raw
sg
shpchp
snd_hda_intel
snd_hwdep
snd_mixer_oss
snd_page_alloc
snd_pcm_oss
snd_pcm
snd_seq_device
snd_seq_mmy
snd_seq_midi_event
snd_seq_oss
snd_seq
snd_timer
snd
soundcore
sunrpc
tcp_bic
tpm_bios
tpm_tis
tpm
uhci_hcd
usbcore
usbhid
video
wmi
x_tables
xfrm_nalgo
xt_limit
xt_state
xt_tcpudp
yenta_socket
Ⅳ 如何用linux命令彻底删除文件
1. shred – 覆盖文件以隐藏内容
shred可覆盖文件以隐藏内容,另外还可以删除文件。
$ shred -zvu -n 5 passwords.list
这个命令包括的几个选项有:
-z – 最后一次覆盖添加0,以隐藏覆盖操作
-v – 能够显示操作进度
-u – 覆盖后截断并删除文件
-n – 指定覆盖文件内容的次数(默认值是3次)
shred – 覆盖文件以隐藏内容。
你可以在shred的参考手册页找到更多的使用选项和信息:
$ man shred
2. wipe – 安全地擦除Linux下的文件
Linux的wipe命令,可安全地删除磁存储器中的文件,后续无法恢复已删除文件或目录的内容。
首先,你需要安装wipe工具才能使用它,运行下面命令:$ sudo apt-get install wipe [在Debian及其衍生版上]
$ sudo yum install wipe [在基于RedHat的系统上]
下面这个命令将擦除目录private下面的一切内容。
$ wipe -rfi private/*
相关标志的用法如下:
-r – 告诉wipe递归查询子目录
-f – 启用强行删除,并禁用确认查询
-i – 显示删除过程的进度
wipe – 安全地删除Linux下的文件
注意:wipe只能适用于磁存储器,对于固态磁盘要使用其他方法。
仔细阅读wipe的参考手册页,了解更多的使用选项和使用说明:
$ man wipe
3. 面向Linux的secure-deletetion工具包
secure-delete是一套安全文件删除工具,包含SRM(secure_deletion)工具,它是用来安全地删除文件。
首先,你要安装它,为此使用下面这个相关命令:$ sudo apt-get install secure-delete [在Debian及其衍生版上]
$ sudo yum install secure-delete [在基于RedHat的系统上]
一旦安装完毕,你可以使用srm工具,在Linux系统上安全地删除文件或目录,如下所示。
$ srm -vz private/*
使用的选项如下:
-v – 启用详细信息模式
-z – 用0而不是随机数据擦除上一次写入的内容
srm – 安全删除Linux下的文件
仔细阅读srm的参考手册页,了解更多的使用选项和信息:
$ man srm
4. sfill –安全免费的磁盘/索引节点空间擦除工具
ffill是secure-deletetion工具包的一部分,它是一种安全免费的磁盘和索引节点空间擦除工具,可以安全地删除闲置磁盘空间上的文件。sfill可检查指定分区上的闲置空间,并用来自/dev/urandom的随机数据来填充。
下面这个命令将在我的根分区上执行sfill,-v参数选项符启用详细信息模式:
$ sudo sfill -v /home/aaronkilik/tmp/
假设你创建了一个单独的分区,/home用来存储平常的系统用户主目录,那么你可以在该分区上指定一个目录,对它进行sfill操作:
$ sudo sfill -v /home/username
sfill有几个局限性,参考手册页中有说明,你还能找到另外的使用标志和操作说明:
$ man sfill
注意:secure-deletetion工具包中的下面两个工具(sswap和sdmem)与本文并不直接有关,不过我们会介绍它们,也许将来用得着。
5. sswap – 安全交换分区擦除工具
这是一个安全分区擦除工具,sswap删除的数据驻留在交换分区上的数据。
警告:记得在使用sswap之前先卸载掉你的交换分区!不然系统可能会崩溃!
只要确定你的交换分区(并使用swapon命令,核实分页和交换设备/文件是否开启),下一步,使用swapoff命令,禁用分页和交换设备/文件。
然后,在交换分区上运行sswap命令:
$ cat /proc/swaps
$ swapon
$ sudo swapoff /dev/sda6
$ sudo sswap /dev/sda6 #这个命令需要一段时间才能完成,默认情况下执行38趟
sswap – 安全交换分区擦除工具
确保仔细阅读sswap的参考手册页,了解更多的使用选项和信息:
$ man sswap
6. sdmem – 安全内存擦除工具
sdmem是安全内存擦除工具,它旨在安全地删除驻留在内存中的数据。
它原先名叫smem,但是在Den系统上,有另一个程序包名叫smem(报告每个进程和每个用户的内存使用情况),于是开发人员将它改名为sdmem。
$ sudo sdmem -f -v
想了解更多的使用信息,请仔细阅读sdmem的参考手册页:
$ man sdmem
Ⅵ 2021-01-11:linux中,如何看内存的使用情况呢
1./proc/meminfo
查看 RAM 使用情况最简单的方法是通过 /proc/meminfo。这个动态更新的虚拟文件实际上是许多其他内存相关工具 (如:free / ps / top) 等的组合显示。/proc/meminfo 列出了所有你想了解的内存的使用情况。进程的内存使用信息也可以通过 /proc//statm 和 /proc//status 来查看。
$cat/proc/meminfo
图0:Linux下查看内存使用情况方法总结
2.atop
atop 命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。
$sudoatop
3.free
free 命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。
$free-h
4.GNOME System Monitor
GNOME System Monitor 是一个显示最近一段时间内的 CPU、内存、交换区及网络的使用情况的视图工具。它还提供了一种查看 CPU 及内存使用情况的方法。
$gnome-system-monitor
5.htop
htop 命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。列表可以水平及垂直滚动。
$htop
6.KDE System Monitor
功能同 4 中介绍的 GENOME 版本。
$ksysguard
7.memstat
memstat 是一个有效识别 executable(s), process(es) and shared libraries 使用虚拟内存情况的命令。给定一个进程 ID,memstat 可以列出这个进程相关的可执行文件、数据和共享库。
$memstat-p
8.nmon
nmon 是一个基于 ncurses 的系统基准测试工具,它可以监控 CPU、内存、I/O、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示总 / 剩余内存、交换空间等信息。
$nmon
9.ps
ps 命令可以实时的显示各个进程的内存使用情况。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (totalamount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort” 选项对进程进行排序,例如按 RSS 进行排序:
$psaux–sort-rss
图8:Linux下查看内存使用情况方法总结
10.smem
smem 命令允许你统计基于 / proc 信息的不同进程和用户的内存使用情况。内存使用情况的分析可以导出图表(如条形图和饼图)。
11.top
top 命令提供了实时的运行中的程序的资源使用统计。你可以根据内存的使用和大小来进行排序。
12.vmstat
vmstat 命令显示实时的和平均的统计,覆盖 CPU、内存、I/O 等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。