1. 程式人生 > >linux crontab定時執行任務

linux crontab定時執行任務

apache。 它的 相同 24小時 介紹 window 進度 打開 屏幕截圖

在使用一個計算機系統時,常常需要在日程表上執行某些重復的工作。你可以通過使用Linux Cron工具和Crontab命令更簡便地執行每一次所需的命令,而不是手動去執行。想知道如何使用這些命令在Linux中安排定時任務嗎?繼續往下看吧。
就像Windows中的task調度工具一樣,你也可以利用Cron工具來安排Linux的工作,定期在固定的時間間隔運行。通常用於自動化系統維護或管理工作,如備份數據、更新包和更多的一些工作,任何Linux系統管理員都知道它的重要性。

什麽是Cron?
Cron服務是一種基於時間的工作安排服務,通常在系統啟動時啟動。它會檢查每一分鐘的工作,並在它們存在時啟動。

什麽是Crontab?
為了控制任務進度,我們在Linux中使用Crontab程序。對於cron表來說,Crontab是一個配置文件。Crontab的每一行代表一個任務,包含關於運行什麽和什麽時候運行的信息。
下面是Linux Crontan的格式:
*  *  *  *  *  command
分 時 日 月 周 命令
簡要介紹下各個參數的作用
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令

crontab文件的例子
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
表示每晚的21:30重啟apache。

00 5 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
表示每月1、10、22日的5 : 00重啟apache。

0 */1 * * * /usr/local/bin/php /usr/local/test.php
表示每一個小時調用test.php腳本,使用本地方式調用

*/1 * * * * curl http://localhost/test.php
表示每分鐘調用test.php腳本,使用curl方式調用

列出用戶目前的crontab
$crontab -l

每當所有的時間規範字段與當前日期和時間匹配時,就會執行該命令。通常情況下,我們在時間規範字段中使用星號(*)來匹配該字段中的任何值。

如何打開和編輯Crontab?
現在,讓我們學習如何打開和編輯Crontab文件,這是Linux任務調度中的一個重要步驟。為了實現這一目的,我們可以使用以下命令:
crontab –e
執行此命令後,可能會提示你選擇一個編輯器。如果你是初學者,建議選擇Nano,當然,也可以根據自己的喜好習慣任意選擇。
選擇編輯器之後,會打開一個類似於下面屏幕截圖的文件:
註意:Hash(#)符號用於表示註釋,這些註解將被Cron忽視。

定時任務
現在,為了在Linux中調度任務,你所要做的就是按照上面提到的格式輸入所有必要的細節。這裏有一個例子:假設我想在每個月的第一天的淩晨2:30運行命令usr/bin/backup,需要將下面一行添加到Crontab:
30 02 1 * * /usr/bin/backup
30 : 30分
02 : 上午2點
1 : 第一天
* : 每個月
* : 這周的每一天
指定多個值和範圍

也有可能在Linux中安排工作多次出現。只需使用逗號(,)分隔所需要的值。我們繼續用前面的例子進行介紹。現在,如果我想在下午2點半執行命令,我需要做的就是:
30 02,14 1 * * /usr/bin/backup
30 : 30分
02,14 :2 AM和2 PM
1 :第一天
* : 每個月
* : 這周的每一天
註意:我們已經利用14指定了下午2點,因為Crontab使用24小時的時間格式。
再者,Crontab甚至可以在Linux任務調度中指定一段時間,只需插入一個由dash (–)分隔的值。在這裏,我們將再次考慮我們的初始示例,以展示它是如何完成的。這一次,假設我們希望在每個月的第一天的2點到2點之間執行命令。我們將以以下方式來做這件工作:
00 02-14 1 * * /usr/bin/backup
00 : 0 分
02-14 : 2AM, 3AM, 4AM, 5AM, 6AM, 7AM, 8AM, 9AM, 10AM, 11AM, 12AM, 1PM, 2PM 1 : 第一天
* : 每個月
* : 這周的每一天
Crontab快捷鍵
在本文中,關於如何在Linux中調度任務的一個好處是,考慮一下Crontab格式的下面的快捷方式和關鍵字,這在Linux中可以很方便地安排工作:
@yearly : 在每年1月1日淩晨0點運行一次
@annually : 與@yearly 相同
@monthly : 在每月第一天的淩晨0點運行一次
@weekly : 在每周日的淩晨0點運行一次
@daily : 每天0點運行一次
@midnight : 與@daily相同
@hourly : 在每小時開始時運行一次
例如:假設我每個月必須運行/usr/bin/backup命令,Crontab的格式應該是:
@monthly /usr/bin/backup

linux crontab定時執行任務