第二十六章:編寫腳本實用工具
監測磁盤空間
需要的功能
du,顯示文件和目錄的磁盤使用情況
查看一個目錄的大小,我們可以這樣:
$ du --max-depth=0 -h android-sdk 6.1G android-sdk $ du -sh android-sdk 6.1G android-sdk $ du --max-depth=0 -sh android-sdk du: warning: summarizing is the same as using --max-depth=0 6.1G android-sdk
可以看到,--max-depth=0與-s是一樣的
可以用下面命令查看文件夾下一級目錄/文件的大小
$ du --max-depth=1 -h android-sdk 1.5G android-sdk/platforms 1.5G android-sdk/system-images 4.0K android-sdk/temp 526M android-sdk/docs 228M android-sdk/sources 2.2G android-sdk/add-ons 27M android-sdk/platform-tools 96M android-sdk/tools 239M android-sdk/samples 12M android-sdk/extras 6.1G android-sdk $ du -sh android-sdk/* 4.0K android-sdk/SDK Readme.txt 2.2G android-sdk/add-ons 526M android-sdk/docs 12M android-sdk/extras 27M android-sdk/platform-tools 1.5G android-sdk/platforms 239M android-sdk/samples 228M android-sdk/sources 1.5G android-sdk/system-images 4.0K android-sdk/temp 96M android-sdk/tools
--max-depth=1不僅統計了文件夾下一級目錄的,還統計了根目錄的大小,但是並沒有統計文件夾下文件信息。-s統計了文件夾下文件的信息,但是沒有計算文件夾本身的大小。想統計總和,只需要使用-c(count)。du -shc android-sdk/*
很多時候,我們只關心那些占用空間大的家伙,那麼只需要用sort排序即可,比如我們想找出前三名:
$ du -s android-sdk/* | sort -rn | sed -n '1,3p' 2217224 android-sdk/add-ons 1515352 android-sdk/system-images 1484724 android-sdk/platforms $ du -s android-sdk/* | sort -rn | head -n3 2217224 android-sdk/add-ons 1515352 android-sdk/system-images 1484724 android-sdk/platforms
sort中-n可以按著數字排序,能識別負號等;-r為從大到小排序
創建腳本
把上面內容總結一下,找到占用空間最大的三個家伙
#!/bin/bash F_DIR="$1" du -s "$F_DIR"* 2>/dev/null | sort -rn | head -n3 | sed '=' | sed 'N; s/\n/: /'
執行腳本
$ du_test.sh ../../android-sdk/ 1: 2217224 ../../android-sdk/add-ons 2: 1515352 ../../android-sdk/system-images 3: 1484724 ../../android-sdk/platforms
進行備份
歸檔數據文件
使用tar即可,如果要壓縮文件,使用-z選項。
我們為此可以添加時間
$ date +%Y%m%d%H%M%S 20131210132813
管理用戶賬戶
需要的功能
刪除賬戶。刪除賬戶至少需要4個步驟:
1.獲得要刪除用戶賬戶的正確賬戶名
2.強制終止正在系統上運行的屬於該賬戶的進程
3.確認系統上屬於該賬戶的所有文件
4.刪除用戶賬戶
首先我們要查看用戶輸入的賬戶是否存在:
$ cut -d ':' -f 1 /etc/passwd | grep -w "$user_account"
查看屬於此用戶的進程可以使用ps:
ps -u $user_account
然後把他們殺死:
kill -9 $user_pid
然後查找屬於該賬戶的文件:
find / -user $user_account
注意:下面我們這麼幾個選擇
1.刪除這些問題(這個沒有什麼好說的)
2.將這些文件關聯給其他用戶(這個也沒有什麼好說的)
3.不做處理
假設我們要刪除的賬戶的UID為1234,如果我們對所屬於他的文件不做處理,當我們刪除這個賬戶再建立新的賬戶的時候,如果新賬戶的UID為1234,那麼新賬戶將自動擁有這些文件!
最後我們刪除賬戶:
userdel $user_account
(筆記只保留了必要的腳本,沒有什麼新的知識,全部腳本請參閱原書第26章552頁)
轉貼請保留以下鏈接
本人blog地址
http://su1216.iteye.com/
http://blog.csdn.net/su1216/