crontab 命令
crontab 命令是 Linux 中用來設(shè)定重復(fù)執(zhí)行命令或腳本的工具。它能夠在指定的時間段內(nèi),按照需求以某一時間間隔執(zhí)行命令或腳本。
crontab 的基本用法
crontab [-u <user>] [-e|-l|-r]crontab <filename>
crontab <filename>
可以讀入一個以 crontab 語法書寫的文件,并依照文件內(nèi)的指示執(zhí)行定時任務(wù)。與此同時,crontab -l
能夠在標(biāo)準(zhǔn)輸出上列出當(dāng)前用戶所有的定時任務(wù)情況。因此,我們可以用 crontab -l > <filename>
來保存當(dāng)前 crontab 的狀況,在有需要的時候(比如誤刪除)用 crontab <filename>
讀入恢復(fù)。
crontab -e
則會啟動系統(tǒng)默認(rèn)的編輯器。這個編輯器由系統(tǒng)環(huán)境變量 EDITOR 指定;例如 export EDITOR=vi
,則 crontab -e
會啟動 vi 來編輯當(dāng)前用戶的 crontab 定時任務(wù)文件。crontab -r
則會刪除用戶的所有 crontab 定時任務(wù)。
用來指定用戶的 -u <user>
選項則會改變 -e/-l/-r
等選項的行為。如果不通過 -u
指定用戶,則默認(rèn)的操作都是針對當(dāng)前用戶的;反之,則針對指定的用戶。例如 crontab -u Liam -r
則會刪除用戶 Liam 的 crontab 定時任務(wù)——當(dāng)然,你需要有足夠的權(quán)限這么做。
crontab 文件的格式
不管是用 crontab <filename
> 從文件讀入定時任務(wù),還是用 crontab -e
編輯定時任務(wù),我們都會接觸到 crontab 格式的命令。
crontab 的命令格式如下:
從上圖我們可以看出:
此外,和 Shell 腳本一樣,在 crontab 文件中,我們也可以用 # 來表示注釋。
花式定時
在 crontab 命令中用于定時的前 5 列中,支持以下符號,用于「花式定時」:
一些例子
有了這些知識,我們就可以看一些實例了。
# 每分鐘執(zhí)行一次* * * * * command# 每 5 分鐘執(zhí)行一次*/5 * * * * command# 每個小時的 15 分和 45 分執(zhí)行一次15,45 * * * * command# 晚上 20:00 -- 20:15 每分鐘執(zhí)行一次0-15 20 * * * command# 每周一上午 10 點執(zhí)行一次0 10 * * 1 command
find —— 找些樂子
man find 給出的 find 命令的一般形式是:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] path ... [expression]
其中 [-H] [-L] [-P] [-D debugopts] [-Olevel]
很少會用到。因此,find 命令的一般形式可以簡化為 find path ... [expression];
亦即,在一些路徑(默認(rèn)遞歸地包含子路徑)中找到合適的文件,然后根據(jù) expression 執(zhí)行相應(yīng)動作。
path ...: find
命令查找的路徑
expression: 具體形式是 -parameters [-exec -ok]
-parameters
有很多,待下一節(jié)具體介紹常用的參數(shù)
-exec command {}
/; 執(zhí)行一條 Shell 命令
-ok command {} /
; 同 -exec 的作用,不過在執(zhí)行每條命令前,都會提示用戶確認(rèn)
常用的參數(shù)
-name
: 按照文件名查找文件,接受通配符
find . -name "*.cpp": 在當(dāng)前目錄 (.) 及子目錄下遞歸地查找所有后綴為 .cpp 的文件,并打印在標(biāo)準(zhǔn)輸出中
-perm
: 按照文件權(quán)限查找文件
find . -perm 755: 在當(dāng)前目錄 (.) 及子目錄下遞歸地查找所有權(quán)限為 755 的文件(目錄),并打印在標(biāo)準(zhǔn)輸出中
find . -perm 644 -name "*.cpp": 在當(dāng)前目錄及子目錄下 (.) 遞歸地查找所有權(quán)限為 644 的 .cpp 文件,并打印在標(biāo)準(zhǔn)輸出中
-group
: 按照文件的所屬組查找
-user
: 按照文件的所有者查找
find . -user search: 在當(dāng)前目錄 (.) 及子目錄下遞歸地查找所有 search 賬號所屬的文件,并打印在標(biāo)準(zhǔn)輸出中
-atime, -mtime, -amin, -mmin
: a 開頭的表示「按照上次訪問時間查找」,m 開頭的表示「按照上次修改時間查找」;-n 表示 n 時間內(nèi),+n 表示 n 時間以前
find . -atime +7: 在當(dāng)前目錄 (.) 及子目錄下遞歸地查找所有上次訪問在 7 天以前的文件,并打印在標(biāo)準(zhǔn)輸出中
find . -mmin -10: 在當(dāng)前目錄 (.) 及子目錄下遞歸地查找所有上次修改在 10 分鐘以內(nèi)的文件,并打印在標(biāo)準(zhǔn)輸出中
-newer file1 ! file2
: 查找比 file1 新但是比 file2 舊的文件
-type [b|d|c|p|l|f]
: 按照文件類型查找
b: 塊設(shè)備文件
d: 目錄
c: 字符設(shè)備文件
p: 管道文件
l: 符號鏈接文件
f: 普通文件
-follow
: 如果 find 命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件
-delete
: 刪除查找到的文件或目錄
定期清理
至此,定期清理無用的文件就變得很簡單了。我們只需要在 crontab 里結(jié)合 find 命令的 -delete
選項即可。
0 8 * * * find /home/s/coredump -user search -type f -mtime +7 -delete
這里,我們在每天早上 8 點整執(zhí)行 find 命令;該命令會在 /home/s/coredump 目錄下尋找 search 用戶創(chuàng)建的普通 7 天前的文件,然后刪除掉。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
新聞熱點
疑難解答
圖片精選