linux開機啓動任務和定時執行任務 crontab

os主要有單用戶單任務、單用戶多任務、多用戶多任務幾種類型。在多用戶多任務操作系統中,對每個用戶運行環境的設置就十分重要。

一、開機自啓動任務。

我們首先要明確開機自啓動是個什麼概念。開機自啓動的任務主要在兩個時間點發生,一個是用戶沒有登陸之前,系統正在啓動的過程中,另一個是用戶成功登陸之後(即通過登陸界面輸入用戶名密碼登陸之後)。

1、在用戶登陸之前,系統啓動過程中自動啓動任務

基礎知識瞭解:系統啓動過程中,內核被加載後,執行的第一個程序是/sbin/init,init程序會讀取inittab文件的內容,從而確定系統的運行級(0~6)。確定運行級後執行/etc/rc.d/rc.sysinit,對系統進行一些初始化。之後啓動內核模塊。啓動內核模塊之後執行相應的運行級文件rc0.d~rc6.d。然後執行/etc/rc.d/rc.local,最後執行/bin/login進入登陸狀態。

通過上述內容我們可以知道,要想讓任務在系統啓動過程中就啓動有兩張方法:

1)將啓動腳本法能夠在/etc/rc.d/init.d文件中,並建立到rc0.d~rc6.d的鏈接。

init.d中存放的是一些系統啓動時要運行的服務的腳本,但是並不是每個腳本都會被執行,linux系統把init.d中的服務鏈接到運行級rc0.d~rc6.d中,在確定系統的運行機制後執行相應運行級的rc?.d

init.d腳本含有完整的start、stop、reload、status參數。例如啓動一個ssh服務可以再終端中輸入ssh start,終止ssh服務可以在終端中輸入ssh stop。

這種方式是推薦使用的方式。

2)將啓動腳本放在/etc/rc/local中,/etc/rc/local是在其他的初始化腳本執行完後才執行的,用戶可以在此進行個性化操作,設置需要啓動的服務。

2、用戶成功登陸後,自動啓動任務

首先看幾個文件的作用:

1) /etc/profile:此腳本是全局環境的設置,對系統中的每個用戶都有效,每個用戶登陸後都會立即執行/etc/profile腳本。因此,不管哪個用戶登陸後都要執行的任務放在此腳本中。(對於第三方軟件啓動很方便,lizn已經測試可用)

2) ~/.bash_profile:它是用戶家目錄下私有環境的設置,只對某一個特定的用戶有效,即某一個用戶登錄後會執行它自己相應家目錄下的.bash_profile腳本,利用它用戶可以進行個性化設置。

3) /etc/bashrc:對所有用戶都有效,當打開shell時會執行此腳本,他保存的是系統bash shell的信息。

4) ~/.bashrc:對某一個特定的用戶有效,當用戶每打開一個shell時都會執行此腳本。

/etc/profile和~/.bash_profile以及/etc/bashrc和~/.bashrc的區別可以理解爲程序中全局變量和局部變量的區別,道理差不多。

因此,用戶設置自動啓動的任務是可以選擇性的放在以上文件中。

二:定時執行任務

crond是linux用來定期執行程序的命令,他每分鐘都會定期檢查是否有要執行的任務,如果有則執行該任務。crontab是linux下的定時任務觸發器。

與cron相關的幾個文件以及作用如下:

1) /etc/cron.deny:該文件中所列的用戶不允許使用crontab命令

2) /etc/cron.allow:該文件中所列的用戶允許使用crontab命令

3) /var/spool/cron:所有用戶的crontab文件

crontab -e命令用於編輯當前用戶的crontab文件

crontab文件的格式爲:* * * * * ,第一段表示分鐘,第二段表示小時,第三段表示日期,第四段表示月份,第五段表示星期(0表示週日)

例如,每分鐘把系統的時間輸入到testdata文件中,只需在crontab文件中加入*/ * * * * date>>testdata即可。打開testdata文件可以發現,系統在每分鐘都將時間輸出到了testdata文件中。




源地址鏈接:

http://www.cnblogs.com/lili1015/p/4377149.html


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