歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 每天一個Linux命令(44)crontab命令

每天一個Linux命令(44)crontab命令

日期:2017/3/3 12:01:55   编辑:Linux技術

[b] crontab命令被用來提交和管理用戶需要周期性執行的任務,與windows下的計劃任務類似。[/b]

[b] (1)用法:[/b][b] 用法: [/b]crontab [-u user] file

     crontab [-u user] [ -e | -l | -r ][b] (2)功能:[/b]

[b] 功能: 當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。 [/b] 在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常設合周期性的日志分析或數據備份等工作。

[b] (3)選項參數:[/b] 1) -l         列出當前計時器的設置,查看定時運行的程序

2) -e      編輯該用戶的計時器設置,設置計時器 3) -r        刪除該用戶的計時器設置

4) -u<用戶名稱>  指定要設定計時器的用戶名稱 [b] (4)實例:(此命令用的不常,在此簡要介紹)[/b]

1)每1分鐘執行一次command

* * * * * command

2)每五分鐘執行一次命令

*/5 * * * * command

3)在每天的17:00執行這個命令

00 17 * * *  command

4)在8:02,11:02,14:02,17:02,20:02 執行,在8點到20點的時間內,每三個小時執行一下命令

2 8-20/3 * * * command

以後會討論crondtab的幾個用法:

[b] *創建一個新的crontab文件:[/b]  1.進入 /var/spool/cron目錄下(目錄為空表明當前系統內沒有任何Linux計劃任務需要執行)

[root@localhost /]# cd /var/spool/cron
[root@localhost cron]# ll
總用量 0
[b] *列出crontab文件:[/b]

2.用crontab自帶的命令crontab -l 發現也是沒有任何東西()

[root@localhost cron]# crontab -l
no crontab for root

[b] *編輯crontab文件;[/b] 3.如果目錄已經存在指定的文件(文件名為當前用戶名),則crontab -e 命令編輯它,否則創建新的文件。cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次 /etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。

*/2 * * * * ls -l /home/sunjimeng/Documents > root.txt
*   * * * * echo "I am MenAngel" > root.txt
*刪除crontab文件;

恢復丟失的crontab文件; [b] (5)其他:[/b]

1.什麼是Windows的計劃任務?

在Windows中,系統有一項重要的“計劃任務”功能,通過設置“計劃任務”,你可以將每天或某一天的某個時間需要做的事擬成計劃,到約定的時間,不管你在電腦上進行什麼工作,系統都會提醒你或者啟動你設定好的任務程序。2.crontab的簡介:

crontab命令常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。該命令從標准輸入設備讀取指令,並將其存放於“crontab”文件中,以供之後讀取和執行。該詞來源於希臘語 chronos(χρνο),原意是時間。常,crontab儲存的指令被守護進程激活, crond常常在後台運行,每一分鐘檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。3.crontab文件:

  crontab文件包含送交cron守護進程的一系列作業和指令。每個用戶可以擁有自己的crontab文件;同時,操作系統保存一個針對整個系統的crontab文件,該文件通常存放於/etc或者/etc之下的子目錄中,而這個文件只能由系統管理員來修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔為數個領域,每個領域可以放置單一或多個數值。 4.Linux下的任務調度

Linux下的任務調度分為兩類:系統任務調度和用戶任務調度。 系統任務調度: 系統周期性所要執行的工作,比如寫緩存數據到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件:

[root@localhost /]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
前三行是用來配置crond任務運行的環境變量。第一行SHELL變量指定了系統要使用哪個shell,這裡是bash;第二行PATH變量指定了系統執行命令的路徑;第三行MAILTO變量指定了crond的任務執行信息將通過電子郵件發送給root用戶,如果MAILTO變量的值為空,則表示不發送任務執行信息給用戶。

*: 表示任何時刻
  ,: 表示分割
-:表示一個段,如第二端裡: 1-5,就表示1到5點
 /n : 表示每個n的單位執行一次,如第二段裡,*/1, 就表示每隔1個小時執行一次命令。也可以寫成1-23/1.
用戶任務調度: 用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致。

[root@localhost /]# cd /var/spool/cron
[root@localhost cron]# ll
總用量 0
/etc/cron.deny       該文件中所列用戶不允許使用crontab命令 
/etc/cron.allow      該文件中所列用戶允許使用crontab命令 
/var/spool/cron/      所有用戶crontab文件存放的目錄,以用戶名命名

5.crond服務

  1)安裝crontab: yum install crontabs

服務操作說明:

/sbin/service crond start //啟動服務

/sbin/service crond stop //關閉服務

/sbin/service crond restart //重啟服務

/sbin/service crond reload //重新載入配置

  查看crontab服務狀態:  service crond status

[root@localhost sunjimeng]# service crond status
Redirecting to /bin/systemctl status  crond.service
crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
   Active: active (running) since 五 2016-05-27 23:11:47 PDT; 1 weeks 5 days ago
 Main PID: 1303 (crond)
   CGroup: /system.slice/crond.service
           └─1303 /usr/sbin/crond -n

5月 27 23:11:47 localhost.localdomain systemd[1]: Started Command Scheduler.
5月 27 23:11:47 localhost.localdomain crond[1303]: (CRON) INFO (RANDOM_DELAY...
5月 27 23:11:48 localhost.localdomain crond[1303]: (CRON) INFO (running with...
Hint: Some lines were ellipsized, use -l to show in full.

  手動啟動crontab服務:  service crond start

[root@localhost sunjimeng]# service crond start
Redirecting to /bin/systemctl start  crond.service

  查看crontab服務是否已設置為開機啟動,執行命令:  ntsysv

[root@localhost sunjimeng]# ntsysv

輸入上述命令後,centOS彈出下面的頁面:

  *加入開機自動啟動:  chkconfig –level 35 crond on(以後再介紹) *要把cron設為在開機的時候自動啟動,在 /etc/rc.d/rc.local 腳本中加入 /sbin/service crond start即可。

Copyright © Linux教程網 All Rights Reserved