當你在終端或控制臺工作時,可能不希望由于運行一個作業而占住了屏幕,因為可能還有更重要的事情要做,比如閱讀電子郵件。對于密集訪問磁盤的進程,你可能希望它能夠在每天的非負荷高峰時間段運行。為了使這些進程能夠在后臺運行,也就是說不在終端屏幕上運行,有幾種選擇方法可供使用:
- 設置crontab文件,并用它來提交作業。
- 使用at命令來提交作業。
- 在后臺提交作業。
- 使用nohup命令提交作業。
名詞解釋:
- cron系統調度進程。可以使用它在每天的非高峰負荷時間段運行作業,或在一周或一月中的不同時段運行。
- at命令。使用它在一個特定的時間運行一些特殊的作業,或在晚一些的非負荷高峰時間段或高峰負荷時間段運行。
- & 使用它在后臺運行一個占用時間不長的進程。
- Nohup 使用它在后臺運行一個命令,即使在用戶退出時也不受影響。
一個舉一個例子
crontab
用crontab提交一個任務在每天晚上7點對zhangwanzhi說i love you
- /home/l/g/tomotoboy >touch tomotoboycron
- /home/l/g/tomotoboy >cat > tomotoboycron
- 0 19 * * * echo "I love zhangwanzhi"
- /home/l/g/tomotoboy >crontab tomotoboycron
- cron may not be running - call your system administrator
- /home/l/g/tomotoboy >crontab -l
- 0 19 * * * echo "I love zhangwanzhi"
/home/l/g/tomotoboy >touch tomotoboycron
/home/l/g/tomotoboy >cat > tomotoboycron
0 19 * * * echo "I love zhangwanzhi"
/home/l/g/tomotoboy >crontab tomotoboycron
cron may not be running - call your system administrator
/home/l/g/tomotoboy >crontab -l
0 19 * * * echo "I love zhangwanzhi"
刪除crontab 文件
- /home/l/g/tomotoboy >crontab -r
- cron may not be running - call your system administrator
- /home/l/g/tomotoboy >crontab -l
- crontab: can't open your crontab file.
/home/l/g/tomotoboy >crontab -r
cron may not be running - call your system administrator
/home/l/g/tomotoboy >crontab -l
crontab: can't open your crontab file.
恢復丟失的crontab文件
如果不小心誤刪了crontab文件,假設你在自己的$HOME目錄下還有一個備份,那么可以將其拷貝到/var/spool/cron/<username >,其中<username>是用戶名。如果由于權限問題無法完成拷貝,可以用:
$ crontab <filename>
現在我們來恢復tomotoboycron
- /home/l/g/tomotoboy >crontab tomotoboycron
- cron may not be running - call your system administrator
- /home/l/g/tomotoboy >crontab -l
- 0 19 * * * echo "I love zhangwanzhi"
/home/l/g/tomotoboy >crontab tomotoboycron
cron may not be running - call your system administrator
/home/l/g/tomotoboy >crontab -l
0 19 * * * echo "I love zhangwanzhi"
at
在命令提交一分鐘后執行
- /home/l/g/tomotoboy >ls -l|grep "tomotoboy"|at now +1 minute
- cron may not be running - call your system administrator
- commands will be executed using /bin/bash
- job 1249815115.a at Sun Aug 9 18:51:55 2009
/home/l/g/tomotoboy >ls -l|grep "tomotoboy"|at now +1 minute
cron may not be running - call your system administrator
commands will be executed using /bin/bash
job 1249815115.a at Sun Aug 9 18:51:55 2009
列出已經提交的at任務:
- /home/l/g/tomotoboy >at -l
- 1249815115.a Sun Aug 9 18:51:55 2009
- 1249813233.a Sun Aug 9 18:20:33 2009
- 1249813261.a Sun Aug 9 18:21:01 2009
/home/l/g/tomotoboy >at -l
1249815115.a Sun Aug 9 18:51:55 2009
1249813233.a Sun Aug 9 18:20:33 2009
1249813261.a Sun Aug 9 18:21:01 2009
使用atrm刪除一個任務:
- /home/l/g/tomotoboy >atrm 1249815115.a
- cron may not be running - call your system administrator
- 1249815115.a: removed
- /home/l/g/tomotoboy >at -l
- 1249813233.a Sun Aug 9 18:20:33 2009
- 1249813261.a Sun Aug 9 18:21:01 2009
/home/l/g/tomotoboy >atrm 1249815115.a
cron may not be running - call your system administrator
1249815115.a: removed
/home/l/g/tomotoboy >at -l
1249813233.a Sun Aug 9 18:20:33 2009
1249813261.a Sun Aug 9 18:21:01 2009
&和nohup
在后臺運行echo "I love you zhangwanzhi" ,用戶退出時不終止:
- /home/l/g/tomotoboy >nohup echo "I love you zhangwanzhi" &
- [1] 20784
- /home/l/g/tomotoboy >Sending output to nohup.out
- /home/l/g/tomotoboy >cat nohup.out
- Ilove you zhangwanzhi