後臺命令及cron

1 後臺執行命令

cron :系統調度進程。可以使用它在每天的非高峯負荷時間段運行作業,或在一週或一月中的不同時段運行。
At at :命令。使用它在一個特定的時間運行一些特殊的作業,或在晚一些的非負荷高峯時間段或高峯負荷時間段運行。
&     :使用它在後臺運行一個佔用時間不長的進程。
Nohup :使用它在後臺運行一個命令,即使在用戶退出時也不受影響。


2 cron和crontab

cron 是系統主要的調度進程,可以在無需人工干預的情況下運行作業。
有個 crontab 命令允許用戶提交、編輯或***相應的作業。
每一個用戶都可以有一個 crontab 文件來保存調度信息。可以使用它運行任意一個shell腳本或某個命令,每小時運行一次,或一週三次,這完全取決於你。
每一個用戶都可以有自己的 crontab 文件,但在一個較大的系統中,系統管理員一般會禁止這些文件,而只在整個系統保留一個這樣的文件。系統管理員是通過 cron.deny
和 cron.allow 這兩個文件來禁止或允許用戶擁有自己的 crontab文件。

crontab 文件條目 例子:
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的21:30 運行 /apps/bin目錄下的 cleanup.sh。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、1 0、2 2日的 4:45 運行 /apps/bin目錄下的backup.sh。
10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
上面的例子表示每週六、週日的1:10運行一個find命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天 18:00至23:00之間每隔30分鐘運行 /apps/bin目錄下的 dbcheck.sh。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11:00pm運行 /apps/bin目錄下的 qtrend.sh。

上面例子中,每個命令都給出了絕對路徑。當使用 crontab 運行 shell 腳本時,用戶要給出腳本的絕對路徑,設置相應的環境變量。記住,既然是用戶向 cron提交了這些作業,就要向 cron 提供所需的全部環境。不要假定 cron 知道所需要的特殊環境,它其實並不知道。
所以要保證在 shell 腳本中提供所有必要的路徑和環境變量,
除了一些自動設置的全局變量。
如果 cron 不能運行相應的腳本,用戶將會收到一個郵件說明其中的原因。

2.3 創建一個新的 crontab 文件
在向 cron 進程提交一個 crontab 文件之前,首先要做的一件事情就是設置環境變量EDITOR。
cron 進程根據它來確定使用哪個編輯器編輯 crontab 文件。99% 的UNIX和LINUX用戶使用vi,如果你也是這樣,那麼你就編輯 $HOME目錄下的 .profile 文件,在其中加入這樣一行:
EDITOR=vi; export EDITOR
然後保存並退出。
不妨創建一個名爲 <user>cron 的文件,其中<user>是用戶名,如lanseyokeycron。
首先創建一個s hell 文件如 time.sh
echo "Now time is:"
date
然後打開文件 lanseyokeucron 加入如下的內容:
# echo the date to the console every
# 15 minutes between 6am and 6pm on Sunday
0,15,30,45 06-18 * * 0 /lanseyokey/time.sh
保存並退出,確信前面5個域用空格分隔。
在上面的例子中,系統將每隔 15 分鐘輸出一次當前時間。如果系統崩潰或掛起,從最後所顯示的時間就可以一眼看出系統是什麼時間停止工作的。

爲了提交剛剛創建的 crontab 文件,可以把這個新創建的文件作爲 cron 命令的參數:
$ crontab lanseyokeycron
現在該文件已經提交給 cron 進程,它將每隔 15 分鐘運行一次。
同時,新創建文件的一個副本已經被放在 /var/spool/cron 目錄中,文件名就是用戶名(即,lanseyokey)。

---


注意:若是以lanseyokey用戶名登錄則不需使用 -u 選項,否則使用
$ crontab -u lanseyokey -l
可以使用這種方法在 $HOME 目錄中對 crontab 文件做一備份:
$ crontab -l > $HOME/mycron



2.5 編輯 crontab 文件
如果希望添加、***或編輯 crontab 文件中的條目,而 EDITOR環境變量又設置爲 vi,那麼就可以用 vi 來編輯 crontab 文件,相應的命令爲:
$ crontab -e
可以像使用 vi 編輯其他任何文件那樣修改 crontab 文件並退出。如果修改了某些條目或添加了新的條目,那麼在保存該文件時, cron 會對其進行必要的完整性檢查。如果其中的某個域出現了超出允許範圍的值,它會提示你。
在編輯 crontab 文件時,沒準會加入新的條目。例如,加入下面的一條:
# echo greeting to user
0 06-18 * * * /bin/echo "Hello, Welcome to Linux"
保存並退出。最好在 crontab 文件的每一個條目之上加入一條註釋,這樣就可以知道它的功能、運行時間,更爲重要的是,知道這是哪位用戶的作業。
現在讓我們使用前面講過的crontab -l命令列出它的全部信息:



*** crontab 文件,可以用:
$ crontab -r
恢復丟失的 crontab 文件如果不小心誤刪了 crontab 文件,假設你在自己的 $HOME 目錄下還有一個備份,那麼可以將其拷貝到 /var/spool/cron/<username>,其中<username>是用戶名。
如果由於權限問題無法完成拷貝,可以用:
$ crontab <filename>
其中,<filename> 是你在 $HOME 目錄中副本的文件名。

建議在自己的 $HOME 目錄中保存一個該文件的副本,因爲r鍵緊挨在e鍵的右邊,很容易誤刪。
有些系統文檔建議不要直接編輯 crontab 文件,而是編輯該文件的一個副本,然後重新提交新的文件。有些 crontab 的變體有些怪異,所以在使用 crontab 命令時要格外小心。
如果遺漏了任何選項,crontab 可能會打開一個空文件,或者看起來像是個空文件,這時敲delete 鍵退出,不要按<Ctrl-D>,否則將丟失 crontab 文件。



-------

/etc/crontab 和 /var/spool/cron區別

1./var/spool/cron/這個目錄是以賬號來區分每個用戶自己的執行計劃

-rw-------. /var/spool/cron/root

-rw-------. /var/spool/cron/user1

-rw-------. /var/spool/cron/user2

格式:

*/1 * * * *  ls />>/opt/crontab-e 2>&1

2./etc/crontab系統執行計劃,需要在五個*後面加上用戶

格式:

*/1 * * * * root  ls />>/opt/crontab-e 2>&1

3.服務重啓

3.1 /etc/init.d/crond restart

3.2 service crond restart


http://blog.sina.com.cn/s/blog_48ab118d0101hlr2.html

------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章