首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理
存储
设备,一个tmp filesystem, 可以通过这个设备向内存中读写文件, 以加快某些I/O高的操作,比如对一个大型文件频繁的open, write, read!
Oracle 就利用了/dev/shm(shitou没用过oracle), 可以通过mount命令列出当前的/dev/shm的挂载的文件系统,
你可以直接对/dev/shm进行读写操作, 例如:
1 2 3 4 5
| #touch /dev/shm/file1
AI写代码bash
* 1
|
既然是基于内存的文件系统,系统重启后/dev/shm下的文件就不存在了。Linux默认(CentOS)/dev/shm分区的大小是系统物理内存的50%, 虽说使用/dev/shm对
文件操作
的效率会高很多。但是目前各发行软件中却很少有使用它的(除了前面提到的Oracle), 可以通过ls /dev/shm查看下面是否有文件, 如果没有就说明当前系统并没有使用该设备。
因此需要在 /etc/fstab 文件中加上配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| DAYTIME=$(date +%Y%m%d) memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}') shmTotal=$(df -k /dev/shm | awk '{print $2}' | head -n 2 | tail -n 1) if [ "$(grep -E -c "/dev/shm" /etc/fstab)" -eq 0 ]; then [ ! -f /etc/fstab."${DAYTIME}" ] && cp /etc/fstab /etc/fstab."${DAYTIME}" cat <<EOF >>/etc/fstab tmpfs /dev/shm tmpfs size=${memTotal}k 0 0 EOF mount -o remount /dev/shm else if [ "$shmTotal" -lt "$memTotal" ]; then shmTotal=$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/fstab cat <<EOF >>/etc/fstab tmpfs /dev/shm tmpfs size=${memTotal}k 0 0 EOF mount -o remount /dev/shm fi
fi
AI写代码bash
* 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22
|
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
❤️
技术
交流可以 关注公众号:Lucifer三思而后行 ❤️