首頁 > 軟體

在 Linux 中使用 shell 指令碼自動建立/移除並掛載交換檔案

2020-06-16 17:11:45

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

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

預設這個指令碼建立並掛載 512MB 的交換檔案。如果你想要更多的交換空間和不同的檔名,你需要相應地修改指令碼。修改指令碼不是一件困難的事,因為這是一個容易上手而且很小的指令碼。

推薦閱讀: Linux 中 3 種簡易建立或擴充套件交換空間的方法

 

如何檢查當前交換檔案大小

使用 free 和 swapon 命令檢查已經存在交換空間。

  1. $ free -h
  2. total used free shared buff/cache available
  3. Mem:2.0G1.3G139M45M483M426M
  4. Swap:2.0G655M1.4G
  5. $ swapon--show
  6. NAME TYPE SIZE USED PRIO
  7. /dev/sda5 partition 2G655.2M-1

上面的輸出顯示我當前的交換空間是 2GB

 

建立交換檔案

建立 create_swap.sh 檔案並新增下面的內容來自動化交換空間的建立和掛載。

  1. $ nano create_swap.sh
  2. #!/bin/sh
  3. #size of swapfile in megabytes
  4. swapsize=1024
  5. # does the swap file already exist?
  6. grep-q "swapfile"/etc/fstab
  7. #ifnotthen create it
  8. if[ $?-ne 0];then
  9. echo'swapfile not found. Adding swapfile.'
  10. fallocate -l ${swapsize}M /swapfile
  11. chmod600/swapfile
  12. mkswap/swapfile
  13. swapon/swapfile
  14. echo'/swapfile none swap defaults 0 0'>>/etc/fstab
  15. else
  16. echo'swapfile found. No changes made.'
  17. fi
  18. echo'--------------------------------------------'
  19. echo'Check whether the swap space created or not?'
  20. echo'--------------------------------------------'
  21. swapon--show

給檔案新增執行許可權。

  1. $ sudo+x create_swap.sh

執行檔案來建立和掛載交換檔案。

  1. $ sudo./create_swap.sh
  2. swapfile not found.Adding swapfile.
  3. Setting up swapspace version 1,size=1024MiB(1073737728 bytes)
  4. no label, UUID=d9004261-396a-4321-a45f-9923e3e1328c
  5. --------------------------------------------
  6. Check whether the swap space created ornot?
  7. --------------------------------------------
  8. NAME TYPE SIZE USED PRIO
  9. /dev/sda5 partition 2G954.1M-1
  10. /swapfile file1024M0B-2

你可以看到新的 1024M 的 swapfile。重新啟動系統以使用新的交換檔案。

 

移除交換檔案

如果不再需要交換檔案,接著建立 remove_swap.sh 檔案並新增下面的內容來移除交換檔案以及它的 /etc/fstab 掛載點。

  1. $ nano remove_swap.sh
  2. #!/bin/sh
  3. # does the swap file exist?
  4. grep-q "swapfile"/etc/fstab
  5. #if it does then remove it
  6. if[ $?-eq 0];then
  7. echo'swapfile found. Removing swapfile.'
  8. sed-i '/swapfile/d'/etc/fstab
  9. echo"3">/proc/sys/vm/drop_caches
  10. swapoff-a
  11. rm-f /swapfile
  12. else
  13. echo'No swapfile found. No changes made.'
  14. fi
  15. echo'--------------------------------------------'
  16. echo'Check whether the swap space removed or not?'
  17. echo'--------------------------------------------'
  18. swapon--show

並給檔案新增可執行許可權。

  1. $ sudo+x remove_swap.sh

執行指令碼來移除並解除安裝交換檔案。

  1. $ sudo./remove_swap.sh
  2. swapfile found.Removing swapfile.
  3. swapoff:/dev/sda5:swapoff failed:Cannot allocate memory
  4. --------------------------------------------
  5. Check whether the swap space removed ornot?
  6. --------------------------------------------
  7. NAME TYPE SIZE USED PRIO
  8. /dev/sda5 partition 2G951.8M-1

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

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

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

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-07/145332.htm


IT145.com E-mail:sddin#qq.com