linux tmp 目录权限不够,linux tmp目录与内存解析

free命令

使用free可以获取到设备当前的内存

/tmp # free

total used free shared buffers cached

Mem: 2888012 1850132 1037880 0 18864 123656

-/+ buffers/cache: 1707612 1180400

Swap: 0 0 0

其中,各项表示的含义如下所示:

total: 总计物理内存大小。

used: 已使用内存大小。

free: 可使用内存大小。

shared: 多个进程共享的内存总额。

buffers/cached: 磁盘缓存大小。

单位都为KB。

对于系统而言,buffers和cached都是被使用的,所以可用内存为1037880KB。

对于应用程序而言,buffers和cached是可用的。当应用程序需要内存的时候,buffers和cached会被回收。从应用程序的角度而言,可用内存=free memory+buffers+cached。按上面的例子,即可用内存为1037880+18864+123656=1180400。

使用cat /proc/meminfo可以查看更详细的内存信息。

/proc下内存相关文件

/proc/iomem:查看物理设备在物理内存中的映射关系

/proc/slabinfo:内核对象的当前使用状态

/proc/vmstat:虚拟内存统计信息。可以使用vmstat - Report virtual memory statistics 打印虚拟内存状态。

tmpfs

/tmp # df -h

Filesystem Size Used Available Use% Mounted on

/dev/sda7 1.9G 914.6M 893.3M 51% /

tmpfs 1.4G 15.1M 1.4G 1% /tmp

none 1.4G 292.0K 1.4G 0% /tmp/shm

/dev/sda3 5.0G 282.1M 4.5G 6% /data

/dev/sda6 350.8M 62.4M 270.1M 19% /boot

/dev/sda5 114.2M 2.1M 106.0M 2% /bootloader

none 1.4G 292.0K 1.4G 0% /tmp/shm

tmpfs 512.0K 0 512.0K 0% /dev

……

如上所示,/tmp为内存文件系统,内存挂载为内存文件系统(tmpfs)。使用的物理空间不是磁盘,而是内存条。设备重启后,/tmp下文件全清空。

tmpfs文件系统产生原因是为了提高性能。程序运行时候产生的临时文件放在磁盘会影响性能,于是tmpfs作为虚拟内存子系统来储存文件。POSIX共享内存也是基于tmpfs来实现的。

tmpfs的最大空间由RM(Real Memory,即物理内存)和swap(硬盘虚拟的内存空间)组成。

查看挂载信息,可知 tmpfs 文件系统的挂载点有两个,一个/dev/shm,另一个为/tmp。默认情况下, /tmp 将最多使用一半内存。

/tmp # cat /etc/fstab

none /sys sysfs defaults 0 0

none /proc proc defaults 0 0

none /dev/shm tmpfs defaults 0 0

none /dev/pts devpts defaults 0 0

none /tmp tmpfs defaults 0 0

/dev/sda3 /data ext3 defaults 0 0

/dev/sda6 /boot ext3 defaults 0 0

/dev/sda5 /bootloader ext3 defaults 0 0

如果往/tmp文件夹加入大量文件,也会造成系统内存不足。

/tmp # free

total used free shared buffers cached

Mem: 2888012 2787560 100452 0 102128 959180

-/+ buffers/cache: 1726252 1161760

Swap: 0 0 0

/tmp # dd if=/dev/zero of=file_test4 bs=1M count=256

256+0 records in

256+0 records out

268435456 bytes (256.0MB) copied, 0.300576 seconds, 851.7MB/s

/tmp #

total used free shared buffers cached

Mem: 2888012 2801328 86684 0 1412 1106424

-/+ buffers/cache: 1693492 1194520

Swap: 0 0 0

进程内存

使用ps可以查看进程的状态

$ ps -aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.2 119700 4384 ? Ss 11月03 0:09 /sbin/init splash

root 2 0.0 0.0 0 0 ? S 11月03 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 11月03 0:31 [ksoftirqd/0]

root 5 0.0 0.0 0 0 ? S< 11月03 0:00 [kworker/0:0H]

其中与内存相关项含义如下所示:

VSZ:虚拟内存大小。virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change. (alias vsize).

RSS:实际使用物理内存。resident set size, the non-swapped physical memory that a task has used (in kiloBytes). (alias rssize, rsz).

虚拟内存是对进程而言使用的内存,会比较大,可以理解为一个内存布局,建立虚拟内存和磁盘文件的映射关系。在进程调用的时候,查找虚拟内存,将虚拟内存对应磁盘文件拷贝到物理内存,进行调度寻址等操作。

进程使用的物理内存为RSS表示的物理内存大小,其中包括链接的动态库使用的内存,不只是单独进程使用的物理内存大小。

也可以通过/proc/下去查找对应进程id的相关内存信息。

/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。

/proc/pid/statm 进程所占用的内存。

内存不足时

使用sync,将系统缓存写入磁盘。

#sync

释放所有缓存

#echo 3 > /proc/sys/vm/drop_caches

cache释放说明:

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

echo 3 > /proc/sys/vm/drop_caches

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值