當在終端或控制檯工作時,可能不希望由於運行一個作業而佔住了屏幕,因爲可能還有更重要的事情要
做.因此有幾種選擇方法可供使用:
設置crontab文件,並用它來提交作業
使用at命令來提交作業
在後臺提交作業
使用nohup命令提交作業
名詞解釋:
cron:系統調用進程,可以使用它在每天的非高峯負荷時間段運行作業,或在一週或一月中的不同時段
設置crontab文件,並用它來提交作業
使用at命令來提交作業
在後臺提交作業
使用nohup命令提交作業
名詞解釋:
cron:系統調用進程,可以使用它在每天的非高峯負荷時間段運行作業,或在一週或一月中的不同時段
運行.
at:at命令.使用它在一個特定的時間運行一些特殊的作業,或在晚一些的非負荷高峯時間段或高峯負
at:at命令.使用它在一個特定的時間運行一些特殊的作業,或在晚一些的非負荷高峯時間段或高峯負
荷時間段運行.
&:使用它在後臺運行一個佔用時間不長的進程.
nohup:使用它在後臺運行一個命令,即使在用戶退出時也不受影響.
&:使用它在後臺運行一個佔用時間不長的進程.
nohup:使用它在後臺運行一個命令,即使在用戶退出時也不受影響.
1.cron和crontab
cron是系統主要的調度進程,可以在無需人工干預的情況下運行作業.有一個叫做crontab的命令
cron是系統主要的調度進程,可以在無需人工干預的情況下運行作業.有一個叫做crontab的命令
允許用戶提交,編輯或刪除相應的作業.每一個用戶都可以用一個crontab文件來保存調度信息.可以使
用它運行任意一個shell腳本或命令,每小時運行一次,或一週三次.每一個用戶都可以有自己的
crontab文件,但在一個較大的系統中,系統管理員一般會禁止這些文件,而只在整個系統保留一個這樣
的文件,系統管理員是通過cron.deny和cron.allow這兩個文件來禁止或允許用戶擁有自己的crontab
文件.
1.1 crontab的域
爲了能夠在特定的時間運行作業,需要了解crontab文件每個條目中各個域的意義和格式:
第1列: 分鐘 1-59
第2列: 小時 1-23
第3列: 日 1-31
第4列: 月 1-12
第5列: 星期 0-6 (0表示星期天)
第6列: 要運行的命令
下面是crontab的格式:
分<>時<>日<>月<>星期<>要運行的命令
crontab文件的一個條目是從左邊讀起的,第一列是分,最後一列是要運行的命令,它位於星期的後
1.1 crontab的域
爲了能夠在特定的時間運行作業,需要了解crontab文件每個條目中各個域的意義和格式:
第1列: 分鐘 1-59
第2列: 小時 1-23
第3列: 日 1-31
第4列: 月 1-12
第5列: 星期 0-6 (0表示星期天)
第6列: 要運行的命令
下面是crontab的格式:
分<>時<>日<>月<>星期<>要運行的命令
crontab文件的一個條目是從左邊讀起的,第一列是分,最後一列是要運行的命令,它位於星期的後
面.
在這些域中,可以用橫槓-來表示一個時間範圍,例如希望星期一至星期五運行某個作業,那麼可以
在這些域中,可以用橫槓-來表示一個時間範圍,例如希望星期一至星期五運行某個作業,那麼可以
在星期域使用1-5來表示,還可以在這些域中使用逗號",",例如希望星期一和星期四運行某個作業,只
需要使用1,4來表示.可以用星號*來表示連續的時間段,如果對某個表示時間的域沒有特別的限定,也
應該在該域中填入*.該文件的每一個條目必須含有5個時間域,而且每個域之間要用空格分隔.該文件
中所有的註釋行要在行首用#來表示.
1.2 crontab條目舉例
30 21 * * * /apps/bin/cleanup.sh
表示每天晚上21:30運行/apps/bin/cleanup.sh這個文件
45 4 1,10,22 * * /apps/bin/backup.sh
表示每月1,10,22日的4:45分運行/apps/bin/backup.sh這個文件
10 1 * * 6,0 /bin/find -name "core" -exec rm {} /;
表示每週六,日的1:10運行一個find命令並刪除core文件.
0,30 18-23 * * * /apps/bin/dbcheck.sh
表示每天18:00至23:00之間每隔30分鐘運行/apps/bin/dbcheck.sh這個文件
0 23 * * 6 /apps/bin/qtrend.sh
表示每週六的23:00運行/apps/bin/qtrend.sh這個文件
1.3 crontab命令選項
crontab命令的一般形式爲:
crontab [-u user] -e -l -r
-u 用戶名
-e 編輯crontab文件
-l 列出crontab文件中的內容
-r 刪除crontab文件
如果使用自己的名字登錄,就不用使用-u選項,因爲在執行crontab命令時,該命令能夠知道當前用
1.2 crontab條目舉例
30 21 * * * /apps/bin/cleanup.sh
表示每天晚上21:30運行/apps/bin/cleanup.sh這個文件
45 4 1,10,22 * * /apps/bin/backup.sh
表示每月1,10,22日的4:45分運行/apps/bin/backup.sh這個文件
10 1 * * 6,0 /bin/find -name "core" -exec rm {} /;
表示每週六,日的1:10運行一個find命令並刪除core文件.
0,30 18-23 * * * /apps/bin/dbcheck.sh
表示每天18:00至23:00之間每隔30分鐘運行/apps/bin/dbcheck.sh這個文件
0 23 * * 6 /apps/bin/qtrend.sh
表示每週六的23:00運行/apps/bin/qtrend.sh這個文件
1.3 crontab命令選項
crontab命令的一般形式爲:
crontab [-u user] -e -l -r
-u 用戶名
-e 編輯crontab文件
-l 列出crontab文件中的內容
-r 刪除crontab文件
如果使用自己的名字登錄,就不用使用-u選項,因爲在執行crontab命令時,該命令能夠知道當前用
戶.
1.4 創建一個新的crontab文件
在考慮向cron進程提交一個crontab文件之前,首先要做的一件事情就是設置環境變量
1.4 創建一個新的crontab文件
在考慮向cron進程提交一個crontab文件之前,首先要做的一件事情就是設置環境變量
EDITOR.cron進程根據它來確定使用哪個編輯器編輯crontab文件.
創建一個davecron文件,在該文件中加入如下的內容
0,15,30,45 18-06 * * * /bin/echo `date` >> /root/tanjun
保存並退出.然後再運行
crontab davecron
現在該文件已經提交給cron進程,它將每隔15分鐘運行一次.
同時,新創建文件一個副本已經被放在/var/spool/cron/目錄中,文件名就是用戶名.
1.5 列出crontab文件
爲了列出crontab文件,可以用:
crontab -l
1.6 編輯crontab文件
如果希望添加,刪除或編輯crontab文件中的條目,而EDITOR環境變量又設置爲vi,那麼就可以使用
創建一個davecron文件,在該文件中加入如下的內容
0,15,30,45 18-06 * * * /bin/echo `date` >> /root/tanjun
保存並退出.然後再運行
crontab davecron
現在該文件已經提交給cron進程,它將每隔15分鐘運行一次.
同時,新創建文件一個副本已經被放在/var/spool/cron/目錄中,文件名就是用戶名.
1.5 列出crontab文件
爲了列出crontab文件,可以用:
crontab -l
1.6 編輯crontab文件
如果希望添加,刪除或編輯crontab文件中的條目,而EDITOR環境變量又設置爲vi,那麼就可以使用
vi來編輯crontab文件,相應的命令爲:
crontab -e
可以像使用vi編輯其它任何文件那樣修改crontab文件並退出.
1.7 刪除crontab文件
crontab -r
crontab -e
可以像使用vi編輯其它任何文件那樣修改crontab文件並退出.
1.7 刪除crontab文件
crontab -r
2.at命令
at命令允許用戶向cron守護進程提交作業,使其在稍後的時間運行.一旦一個作業被提交,at命令
將會保留所有當前的環境變量,包括路徑.該作業的所有輸出都將以電子郵件的形式發送給用戶,除非
對其輸出進行了重定向,絕大多數情況下是重定向到某個文件中.
和crontab一樣,根用戶可以通過/etc/目錄下的at.allow和at.deney文件來控制哪些用戶可以使
和crontab一樣,根用戶可以通過/etc/目錄下的at.allow和at.deney文件來控制哪些用戶可以使
用at命令,哪些用戶不行.
at命令的基本形式爲:
at [-f script] [-m -l -r] [time] [date]
-f script 是所要提交的腳本或命令
-l 列出當前所有等待運行的作業, atq命令具有相同的作用
-r 清除作業,爲了清除某個作業,還要提供相應的作業標識(ID)
-m 作業完成後給用戶發郵件
time at命令的時間格式非常靈活,可以是H,HH.HHMM,HH:MM或H:M,其中H和M分別是小時和分鐘,還
at命令的基本形式爲:
at [-f script] [-m -l -r] [time] [date]
-f script 是所要提交的腳本或命令
-l 列出當前所有等待運行的作業, atq命令具有相同的作用
-r 清除作業,爲了清除某個作業,還要提供相應的作業標識(ID)
-m 作業完成後給用戶發郵件
time at命令的時間格式非常靈活,可以是H,HH.HHMM,HH:MM或H:M,其中H和M分別是小時和分鐘,還
可以使用a.m和p.m
date 日期格式可以是月份或日期數,而且at命令還能夠識別諸如today,tomorrow這樣的詞
2.1 使用at命令提交命令或腳本
使用at命令提交作業有幾種不同的形式,可以通過命令行方式,也可以使用at命令提示符.一般來
date 日期格式可以是月份或日期數,而且at命令還能夠識別諸如today,tomorrow這樣的詞
2.1 使用at命令提交命令或腳本
使用at命令提交作業有幾種不同的形式,可以通過命令行方式,也可以使用at命令提示符.一般來
說在提交若干行的系統命令時,使用at命令提示符方式,而在提交shell腳本時,使用命令行方式.
如果想提交若干行命令,可以在at命令後面跟上日期/時間並回車.然後就進行了at命令提示符,這
如果想提交若干行命令,可以在at命令後面跟上日期/時間並回車.然後就進行了at命令提示符,這
時只需要逐條輸入相應的命令,然後按<ctrl+d>退出.
at 21:10
at> find / -name "passwd" -print
at> EOF
其中EOF就是<CTRL+D>,在21:10系統將執行一個簡單的find命令
如果希望向at命令提交一個shell腳本,使用其命令行方式即可.在提交腳本時使用-f選項.
at 3.00pm tomorrow -f /apps/bin/db_table.sh
該命令將在明天下午3:00運行.
2.2 列出所提交的作業
一個作業被提交後,可以使用at -l命令來列出所有的作業
2.3 清除一個作業
清除作業的命令格式爲:
atrm [job no] 或 at -r [job no]
如:
atrm job 3
3.&命令
當在前臺運行某個作業時,終端被該作業佔據,而在後臺運行作業時,它不會佔據終端.可以使用&
at 21:10
at> find / -name "passwd" -print
at> EOF
其中EOF就是<CTRL+D>,在21:10系統將執行一個簡單的find命令
如果希望向at命令提交一個shell腳本,使用其命令行方式即可.在提交腳本時使用-f選項.
at 3.00pm tomorrow -f /apps/bin/db_table.sh
該命令將在明天下午3:00運行.
2.2 列出所提交的作業
一個作業被提交後,可以使用at -l命令來列出所有的作業
2.3 清除一個作業
清除作業的命令格式爲:
atrm [job no] 或 at -r [job no]
如:
atrm job 3
3.&命令
當在前臺運行某個作業時,終端被該作業佔據,而在後臺運行作業時,它不會佔據終端.可以使用&
命令把作業放到後臺執行.
該命令的一般形式爲:
命令 &
3.1 殺死後臺進程
如果想殺死後臺進程可以使用kill命令.
4.nohup命令
如果正在運行一個進程,而且覺得在退出帳戶時該進程還不會結束,那麼可以使用nohup命令,該命
該命令的一般形式爲:
命令 &
3.1 殺死後臺進程
如果想殺死後臺進程可以使用kill命令.
4.nohup命令
如果正在運行一個進程,而且覺得在退出帳戶時該進程還不會結束,那麼可以使用nohup命令,該命
令可以在你退出帳戶之後繼續運行相應的進程.nohup就是不掛起的意思.
該命令的一般形式爲:
nohup command &
4.1 使用nohup命令提交作業
如果使用nohup命令提交作業,那麼在缺省情況下該作業的所有輸出都被重定向到一個名爲
該命令的一般形式爲:
nohup command &
4.1 使用nohup命令提交作業
如果使用nohup命令提交作業,那麼在缺省情況下該作業的所有輸出都被重定向到一個名爲
nohup.out的文件中,除非另外指定了輸出文件.
nohup command > myout.file 2>&1
輸出被重定向到myout.file文件中.