標籤:

Linux計劃任務(at & cron)的基本用法

---

單次計劃任務(at)

命令用法

at [選項] [時間]

選項

-l : 列出所有的計劃任務。(等價於atq命令)

-c <任務號> : 查看指定序號計劃任務的腳本內容。(一個腳本,包含環境變數)

-d <任務號>: 刪除計劃任務。(等價於atd命令)

注意

  1. 在添加計劃任務時,at會從標準輸入讀取任務內容,可以輸入多條命令,輸入完成後,另起一個空行,按Ctrl+D結束輸入。輸入的命令會被自動轉化為腳本。詳情請看下面的例子。

  2. 請確保atd服務已經啟用,否則計劃任務不能執行。

時間常用格式(精確到分鐘)

1、絕對時間

時:分例:12:00時:分 年-月-日 例:05:20 2017-05-20

2、相對時間

絕對時間 +偏移量 偏移單位偏移單位有:minutes, hours, days, weeks例:now +2 hours (兩小時後) 23:00 +30 minutes (23:00再過30分鐘)

舉例

添加計劃任務

[root: ~]# at 08:24

at> sleep 5 at> <EOT> #這裡按Ctrl+Djob 3 at Tue May 16 08:24:00 2017#計劃任務被指定為3號

查看計劃任務

列出所有的計劃任務

[root: ~]# at -l

3 Tue May 16 08:24:00 2017 a root

查看指定序號計劃任務的腳本內容

[root: ~]# at -c 3

#!/bin/sh# atrun uid=0 gid=0# mail root 0umask 22... #省略多行cd /root || { echo Execution directory inaccessible >&2 exit 1}${SHELL:-/bin/sh} << marcinDELIMITER38168611sleep 5marcinDELIMITER38168611#真正的任務內容在最後面。

刪除計劃任務

[root: ~]# at -d 3

確認是否刪除成功

[root: ~]# at -c 3Cannot find jobid 3

---

周期計劃任務(crontab)

命令用法

crontab [選項]

選項

-l : 列出所有的計劃任務。

-e : 使用vi文本編輯器編輯計劃任務列表。

注意

  1. 如果不加任何選項直接運行crontab,就會跟上面的at命令一樣從標準輸入接收配置,但是這會導致已存在的計劃任務列表被覆蓋,這是非常危險的事情!不推薦使用此方法添加計劃任務,除非計劃任務列表為空。

  2. 請確保crond服務已經啟用,否則計劃任務不能執行。

計劃任務條目格式

第一列至第五列為時間段,星號(*)表示所有時間,橫杆(-)表示一段連續的時間,逗號(,)表示不連續的時間,斜杠(/)表示間隔的時間。請看下面的例子:

舉例

列出計劃任務

[root: ~]# crontab -l

1 * * * * python /opt/iredapd/tools/cleanup_db.py >/dev/null #每小時01分執行*/30 * * * * python /opt/iredapd/tools/spf_to_greylist_whitelists.py >/dev/null #每半小時執行1 2 * * * python /var/www/iredadmin/tools/cleanup_amavisd_db.py >/dev/null #每天2:01執行1 * * * * python /var/www/iredadmin/tools/cleanup_db.py >/dev/null 2>&1 #每小時01分執行2 2 * * * /usr/bin/php /var/www/roundcubemail/bin/cleandb.sh >/dev/null #每天2:02執行2 2 * * * /usr/bin/php /var/www/roundcubemail/bin/gc.sh >/dev/null #每天2:02執行1 */1 * * * /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=web >/dev/null #每小時01分執行1 */1 * * * /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=smtp >/dev/null #每小時01分執行

編輯計劃任務

[root: ~]# crontab -e

然後用vi編輯,編輯完成之後在末行模式輸入wq保存。

如果沒有語法錯誤,系統會給出提示。

crontab: installing new crontab

推薦閱讀:

Linux內存被吃掉了,它去哪裡了?
Linux小白學習法寶-命令大全第一部分
如何理解「In UNIX, everything is a file」?
有哪些 Linux 逆向相關的學習資料推薦?

TAG:Linux |