2021-05-12 14:32:11
在 Linux 中使用 shell 指令碼自動建立/移除並掛載交換檔案
2020-06-16 17:11:45
幾天前我們寫了一篇關於在 Linux 中 3 種建立交換檔案的方法,它們是常見的方法,但是需要人工操作。
今天我發現了一個 Gary Stafford 寫的 shell 小指令碼(兩個 shell 指令碼,一個用於建立交換檔案,另外一個用於移除交換檔案),它可以幫助我們在 Linux 中建立/移除並且自動掛載交換檔案。
預設這個指令碼建立並掛載 512MB 的交換檔案。如果你想要更多的交換空間和不同的檔名,你需要相應地修改指令碼。修改指令碼不是一件困難的事,因為這是一個容易上手而且很小的指令碼。
推薦閱讀: Linux 中 3 種簡易建立或擴充套件交換空間的方法
如何檢查當前交換檔案大小
使用 free 和 swapon
命令檢查已經存在交換空間。
$ free -h
total used free shared buff/cache available
Mem:2.0G1.3G139M45M483M426M
Swap:2.0G655M1.4G
$ swapon--show
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2G655.2M-1
上面的輸出顯示我當前的交換空間是 2GB
。
建立交換檔案
建立 create_swap.sh
檔案並新增下面的內容來自動化交換空間的建立和掛載。
$ nano create_swap.sh
#!/bin/sh
#size of swapfile in megabytes
swapsize=1024
# does the swap file already exist?
grep-q "swapfile"/etc/fstab
#ifnotthen create it
if[ $?-ne 0];then
echo'swapfile not found. Adding swapfile.'
fallocate -l ${swapsize}M /swapfile
chmod600/swapfile
mkswap/swapfile
swapon/swapfile
echo'/swapfile none swap defaults 0 0'>>/etc/fstab
else
echo'swapfile found. No changes made.'
fi
echo'--------------------------------------------'
echo'Check whether the swap space created or not?'
echo'--------------------------------------------'
swapon--show
給檔案新增執行許可權。
$ sudo+x create_swap.sh
執行檔案來建立和掛載交換檔案。
$ sudo./create_swap.sh
swapfile not found.Adding swapfile.
Setting up swapspace version 1,size=1024MiB(1073737728 bytes)
no label, UUID=d9004261-396a-4321-a45f-9923e3e1328c
--------------------------------------------
Check whether the swap space created ornot?
--------------------------------------------
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2G954.1M-1
/swapfile file1024M0B-2
你可以看到新的 1024M 的 swapfile
。重新啟動系統以使用新的交換檔案。
移除交換檔案
如果不再需要交換檔案,接著建立 remove_swap.sh
檔案並新增下面的內容來移除交換檔案以及它的 /etc/fstab
掛載點。
$ nano remove_swap.sh
#!/bin/sh
# does the swap file exist?
grep-q "swapfile"/etc/fstab
#if it does then remove it
if[ $?-eq 0];then
echo'swapfile found. Removing swapfile.'
sed-i '/swapfile/d'/etc/fstab
echo"3">/proc/sys/vm/drop_caches
swapoff-a
rm-f /swapfile
else
echo'No swapfile found. No changes made.'
fi
echo'--------------------------------------------'
echo'Check whether the swap space removed or not?'
echo'--------------------------------------------'
swapon--show
並給檔案新增可執行許可權。
$ sudo+x remove_swap.sh
執行指令碼來移除並解除安裝交換檔案。
$ sudo./remove_swap.sh
swapfile found.Removing swapfile.
swapoff:/dev/sda5:swapoff failed:Cannot allocate memory
--------------------------------------------
Check whether the swap space removed ornot?
--------------------------------------------
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2G951.8M-1
via: http://www.2daygeek.com/shell-script-create-add-extend-swap-space-linux/
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-07/145332.htm
相關文章