首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 可以通过这个设备向内存中读写文件, 以加快某些I/O高的操作,比如对一个大型文件频繁的open, write, read!
Oracle
就利用了/dev/shm(shitou没用过oracle), 可以通过mount命令列出当前的/dev/shm的挂载的文件系统,
你可以直接对/dev/shm进行读写操作, 例如:
#touch/dev/shm/file1
既然是基于内存的文件系统,系统重启后/dev/shm下的文件就不存在了。Linux默认(CentOS)/dev/shm分区的大小是系统物理内存的50%, 虽说使用/dev/shm对文件操作的效率会高很多。但是目前各发行软件中却很少有使用它的(除了前面提到的Oracle), 可以通过ls /dev/shm查看下面是否有文件, 如果没有就说明当前系统并没有使用该设备。
因此需要在 /etc/fstab 文件中加上配置:
DAYTIME=$(date+%Y%m%d) memTotal=$(grepMemTotal/proc/meminfo|awk'{print $2}') shmTotal=$(df-k/dev/shm|awk'{print $2}'|head-n2|tail-n1) if [ "$(grep -E -c "/dev/shm" /etc/fstab)"-eq0 ]; then [ !-f/etc/fstab."${DAYTIME}" ] &&cp/etc/fstab/etc/fstab."${DAYTIME}"cat<<EOF>>/etc/fstabtmpfs/dev/shmtmpfssize=${memTotal}k00EOFmount-oremount/dev/shmelseif [ "$shmTotal"-lt"$memTotal" ]; thenshmTotal=$memTotal [ !-f/etc/fstab."${DAYTIME}" ] &&cp/etc/fstab/etc/fstab."${DAYTIME}"line=$(grep-n"/dev/shm"/etc/fstab|awk-F":"'{print $1}') sed-i"${line} d"/etc/fstabcat<<EOF>>/etc/fstabtmpfs/dev/shmtmpfssize=${memTotal}k00EOFmount-oremount/dev/shmfifi
本次分享到此结束啦~