按期執行任務的相關命令
做爲一個linux系統運維師,在咱們工做的時候須要按期去執行一些腳本或是命令,好比早上幾點咱們要開啓什麼服務,咱們不可能守在計算機旁等到那個時候去手動執行那些須要腳本或是命令,萬一咱們沒有按時趕到工做場所就會給咱們的公司帶來巨大的損失,鑑於此,linux給咱們提供了一個很好的命令crontab。
在咱們學習此命令以前我還會給你們介紹一個臨時執行按期任務的命令,此命令只是在將來的時間段內執行一次。
1、在將來的某個時間僅執行一次
# at 和 # batch
時間表示法:
HH:MM(AM,PM)
MM/DD/YY
now + # (minutes,hours,days,weeks
[root@localhost ~]# at now+1minutes
at>
當輸入 at now+1minutes 按回車以後會出現at> ,在這以後能夠輸入你要執行的命令或是腳本,輸入完以後按crtl+d ,這些命令執行完以後,系統會給你發mail 。
[root@localhost ~]# at -l 列出任務列表 或是(atq)
2 2012-02-27 21:07 a root
[root@localhost ~]# at -r 2 能夠刪除將來要執行但還沒有執行的任務(atrm job_num)
[root@localhost ~]# at -l 在查看一下列表發現任務以刪除
[root@localhost ~]#
[root@localhost ~]# at -f 1.sh now+1minutes 當是一個腳本的時候須要加-f
batch的方法和at的差很少,只是batch 在用的時候不須要指定時間,計算機會根據你的系統運行狀況,在資源利用率低,閒下來的時候去執行你給出的命令。
2、按期執行任務的命令 (如今就開始講今天的重點)
crontab是一個按期執行任務的命令,在使用的時候實際上是在編譯一個文件
其分爲兩類,
1. 用戶cron 文件在 /var/spool/cron/USERNAME
2. 系統cron 文件在 /etc/crontab
咱們先看一些文件中都有什麼內容
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
~
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
在這個文件中咱們只要關注的是後四行,每一行能夠分紅7列,像下邊的同樣,分別表示對應的關係
01 * * * * root run-parts /etc/cron.hourly
分鐘 小時 天 月 周幾 用戶 命令或腳本
其中在普通用戶中沒有用戶那一列,前五列均可以用數字表示,若是用 * 則表示「每」的意思
還有一些特別的表示方法:
非連續的時間點:
15,45 * * * * 每小時的第15分鐘和第45分鐘執行一次
連續的時間點:
1 8—18 * * * 從8點到18點每小時執行一次
*/#
*/3 * * * * 每隔三分鐘執行一次
[root@localhost ~]# crontab -e 能夠打開一個編譯文件,這是普通用戶
[root@localhost ~]# crontab -l 列出本身的任務計劃
*/3 * * * * /sbin/hwclock -s
作爲管理員能夠爲普通用戶定義計劃
#crontab -u name -e
其中在咱們在執行命令以後在文件中寫的命令,要把命令的路徑給指出來,由於系統不識別,還要注意的是若是是一個腳本的話,腳本里的命令也要指出其全路徑
咱們能夠經過以下命令來獲取每一個命令的路徑
[root@localhost ~]# which useradd 查看其在那個目錄裏
/usr/sbin/useradd
[root@localhost ~]# rpm -qf /usr/sbin/crond 查看命令是由那個包安裝以後實現的
vixie-cron-4.1-76.el5
咱們在將一些其餘的查看命令
[root@localhost ~]# chkconfig --list 查看服務列表
當咱們學會了怎樣運用crontab命令以後,咱們思考一下,其實這個命令是有一些漏洞的,當咱們的電腦關機以後,寫在文件中的命令,電腦是不會執行的,也就是咱們的按期任務不能順利的完成,因此在有些時候會出現一些問題的。但咱們的linux大可能是做爲服務器的,機器壓根就不回隨便的重啓或是關機,因此這個命令已經足夠對付咱們工做是的任務了。
但爲了知足一些linux各人發燒有的要求,在此我仍是給你們說一個在咱們的電腦關機以後系統仍然會執行按期任務的命令anacron,
anacron (即便電腦關機任務依然執行)只有定義了計劃 才能啓動其服務
其文件在/etc/anacrontab
1 65 cron.daily run-parts /etc/cron.daily
1表示曾通過去多少天沒有執行的任務 65系統開機多長分鐘執行沒執行的任務
今天除了這些以外我在給你們說一個小命令 hwclock
#hwclock -w 將date寫入clock
-s 將clock寫入date
date是當前系統的時間,有時候會不穩定,
clock貌似是 biso時間通常都是很穩定的,因此就有了上述的命令,來更改咱們錯亂的時間,也能夠將一個命令寫在按期任務裏邊,來使機器開啓的時候自動校對時間。
*/3 * * * * /sbin/hwclock -s