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腳本。因此,不管哪個用戶登陸后都要執行的任務放在此腳本中。
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文件中。
注意:在多用戶環境下,每個用戶都有自己的crontab文件。