Linux中國

在 Linux 中使用 shell 腳本自動創建/移除並掛載交換文件

幾天前我們寫了一篇關於在 Linux 中 3 種創建交換文件的方法,它們是常見的方法,但是需要人工操作。

今天我發現了一個 Gary Stafford 寫的 shell 小腳本(兩個 shell 腳本,一個用於創建交換文件,另外一個用於移除交換文件),它可以幫助我們在 Linux 中創建/移除並且自動掛載交換文件。

默認這個腳本創建並掛載 512MB 的交換文件。如果你想要更多的交換空間和不同的文件名,你需要相應地修改腳本。修改腳本不是一件困難的事,因為這是一個容易上手而且很小的腳本。

推薦閱讀: Linux 中 3 種簡易創建或擴展交換空間的方法

如何檢查當前交換文件大小

使用 freeswapon 命令檢查已經存在交換空間。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           2.0G        1.3G        139M         45M        483M        426M
Swap:          2.0G        655M        1.4G

$ swapon --show
NAME      TYPE      SIZE   USED PRIO
/dev/sda5 partition   2G 655.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

# if not then create it
if [ $? -ne 0 ]; then
    echo 'swapfile not found. Adding swapfile.'
    fallocate -l ${swapsize}M /swapfile
    chmod 600 /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 = 1024 MiB (1073737728 bytes)
no label, UUID=d9004261-396a-4321-a45f-9923e3e1328c
-----------------------------------------Check whether the swap space created or not?
-----------------------------------------NAME      TYPE       SIZE   USED PRIO
/dev/sda5 partition    2G 954.1M   -1
/swapfile file      1024M     0B   -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 or not?
-----------------------------------------NAME      TYPE      SIZE   USED PRIO
/dev/sda5 partition   2G 951.8M   -1

via: http://www.2daygeek.com/shell-script-create-add-extend-swap-space-linux/

作者:2DAYGEEK 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國