❶ linux下定時任務(系統任務調度、用戶任務調度)crontab使用詳解
crond是Linux下用來周期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,在CentOS Linux release 7.2.1511中默認是開機啟動的,大家可以使用命令:systemctl status crond進行查看。 crond進程定期(每分鍾)檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。用戶在cron表
(也被稱為crontab文件)指定了定時任務,crontab也就是我們常見的定時任務設置命令。Linux下的任務調度分為兩類,系統任務調度和用戶任務調度。
系統任務調度 :系統周期性所要執行的工作,比如寫緩存數據到硬碟、日誌清理等。/etc/crontab文件就是系統任務調度的配置文件。
用戶任務調度 :用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定製自己的計劃任務。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致,使用者許可權文件如下:
通過以上幫助信息,我們可以知道crond是執行任務計劃的一個守護進程。在使用crontab之前我們可以根據幫助信息來設置相關選項,一般情況下我們都使用默認值。
1.建立演示賬號crontab。
2.星號(*)使用舉例。
以上例子中完整演示了crontab從建立到執行的過程。「5 0 * * * echo "GeekDevOps"」表示在每天00:05執行命令:echo "GeekDevOps"。後面的星號表示只要前面條件滿足都執行。例子中的-u選項指定了用戶:crontab,-l選項列舉了相關用戶的用戶任務調度,不指定用戶則默認為root。執行結果默認寫入到用戶mail目錄下的相關文件中。
3.逗號(,)的使用舉例。
現在我們已經把用戶切換到crontab下,因此無需額外指定-u選項相關內容。「3 2,6,8 * * *」表示每天的02:03:00、06:03:00、08:03:00分別執行一次命令:ls /usr/local。
4.減號(-)的使用舉例。
例子中的「0 2-6 * * 6 df -h /」表示用戶crontab在每周六的02:00、03:00、04:00、05:00、06:00執行命令:df -h / 。
5.斜杠(/)的使用舉例。
例子中表示每隔2分鍾執行一次命令:echo "GeekDevOps">>/root/GeekDevOps.txt。
6.crontab的使用非常簡單,很容易理解,只要在取值范圍內設置執行的值基本是沒有問題的。現在我們要刪除已經設置的這些定時任務。
例子中,選項-r表示刪除所有定時任務。選項-i表示在刪除前進行再次確定,輸入y或者Y才能真正刪除。
7.備份我們設置的用戶任務調度配置文件。
8.系統任務調度的使用舉例。
系統任務調度與用戶任務調度不一樣,需要直接在/etc/crontab裡面配置,如果需要指定用戶,還需要在執行命令前指定用戶名。通過crontab -l 命令是查看不到系統任務調度任務的。
❷ Linux下定時執行任務的幾種方式
1、使用腳本
這個方式比較簡單,就是寫個腳本,每次開機的時候自動讓它啟動,然後放在後台去執行就可以了。腳本代碼如下:
$ cat cleanwitch.sh
View Code
我們把這個文件放到/usr/local/bin目錄下,並且給可運行許可權:
$ chmod 755 cleanwitch.sh
這樣一個可以執行的腳本就寫好了,但是還沒有設置開機啟動呢。設置開機啟動的方式也比較簡單,就是在/etc/rc.local這個配置文件下增加一句運行我們這個腳本的命令就可以了,增加的這句話如下:
/usr/local/bin/cleanwitch.sh &
為什麼要在這句話後面加個&呢?因為在一個命令後面加上這個符號之後呢,這句腳本中運行的命令就會被放到後台作為一個服務去執行了。因為每次linux開機後都會去執行一次這個/etc/rc.local腳本,所以我們的清理腳本也會在開機的時候自動執行,並且每隔一段時間就會去執行我們讓它做的事情。
需要注意的是,不同的linux發行版中,rc.local的位置可能不同,不過基本都在/etc這個總目錄下,如果實在找不到,可以使用下面的命令找一下:
$ cd /etc/
$ find -name rc.local
如果要想停掉這個腳本怎麼做呢?在命令行執行如下命令就可以了:
$ killall cleanwitch.sh
2、第二種方式就是使用crontab了
還不會~~