jobs命令能夠查看shell處理的當前做業。
jobs命令的參數:算法
以上解析:shell
腳本使用$$變量顯示Linux系統分配給腳本的PID,而後進入循環,每次迭代間隔5秒。經過命令行節目啓動第一個腳本,而後使用Ctrl+Z組合鍵中止它。
使用&符號之後臺進程方式啓動另外一個做業,並將該腳本的輸出重定向到一個文件,以便不會在監視器上顯示。
做業啓動以後,使用jobs命令查看分配給shell的做業。jobs命令便可以顯示中止的做業也能夠顯示做業狀態,還包括做業編號以及做業中使用的命令。
jobs輸出中輸出中的加號和減號。緩存
在bash做業控制下,可以之後臺進程或前臺進程的形式從新啓動任何中止的做業。前臺進程將控制正在處理的終端,所以謹慎使用特性。
要之後臺模式從新啓動做業,可使用帶有做業編號的bg命令。
bg命令格式:bg 做業編號bash
之後臺模式從新啓動做業,出現命令行界面提示符,可以繼續處理其餘命令。
要之前臺模式從新啓動,可使用帶有做業編號的fg命令:fg 做業編號。服務器
在多任務操做系統中,內核負責爲系統中運行的每一個進程分配CPU時間。實際上,CPU中一次只能運行一個進程,所以內核輪流向每一個進程分配CPU時間。網絡
默認狀況下,從shell啓動的全部進程在Linux系統上的調度優先級都相同。調度優先級是內核相對其餘進程分配個某一個進程的CPU時間量。ide
調度優先級是一個整數值,從-20(最高優先級)到+20(最低優先級)。默認狀況下,bash shell啓動全部優先級爲0的進程。這代表只須要一點處理時間的簡單腳本與須要運行幾個小時的複雜數學算法獲得的CPU時間段相同。工具
有時須要更改特定命令的優先級,可能要下降優先級以減小它佔用的CPU資源,還可能要提升優先級,以得到更多的處理時間。url
nice命令可在啓動命令時設置它的調度優先級。
renice命令能夠更改已經在系統中運行的命令優先級。它可以指定運行進程的PID以更改優先級
renice命令自動更新運行程序的調度優先級。renice命令有以下幾個限制:
在處理腳本時,總會遇到須要在給定時間運行腳本。Linux系統提供3中方式在預約時間運行腳本:at命令、batch命令、cron表格。每種方法使用不一樣的技術調度運行腳本的時間和頻率。
at命令容許指定Linux系統運行腳本的時間。at命令將做業提交到一個隊列,並指示shell在什麼時候運行該做業。另外一個命令atd之後臺模式運行,並檢查做業隊列以運行做業。大部分Linux發行版均可以在啓動時自動啓動該特性。
atd命令檢查系統上的特殊目錄,以便運行使用at命令提交的做業。默認狀況下,atd命令每隔60秒檢查一次該目錄。若是存在做業,atd命令檢查運行做業的時間。若是時間與當前時間匹配,則atd命令將運行該做業。
3.1.1 at命令格式 at [-f filename] time
默認狀況下,at命令將STDIN的輸入提交到隊列。可使用-f參數指定用於讀取命令的的文件名(腳本參數)。
time參數指定Linux系統運行做業的時間。at命令能夠識別各類時間格式:
除了指定運行做業的時間以外,還能夠包括具體的日期,可使用各類格式的日期:
使用at命令時,做業將提交到做業隊列中。
做業隊列保存at命令提交的做業以便處理。有26種不一樣的做業對壘可用於不一樣的優先級水平。使用小寫字母a到z引用做業隊列。
默認狀況下,全部的at做業都提交到做業隊列a,即優先級最高的隊列。若是但願以較低的優先級運行做業,則可使用-q參數指定字母。
參數:
3.1.2 獲取做業輸出
做業在Linux系統運行時,沒有與該做業關聯的監視器。Linux使用提交做業的用戶的電子郵箱地址做爲STDOUT和STDERR。任何以STDOUT和STDERR爲目的的輸出都將經過郵件系統發送給用戶。
若是系統沒有安裝at、mail命令使用命令:sudoapt-get install at、sudo apt-get install mail。進行安裝。
3.1.3 列出等待的做業 (atq 後者at -l)
參看系統哪些做業在等待。 顯示做業號、系統運行該做業的日期和時間以及所在的做業隊列。
3.1.4 刪除做業(atrm 後者at -d)
Linux系統使用cron程序調度需按期運行的job。corn程序在後臺運行,它從特殊表格(corn表格)中查找須要調度運行的做業。
3.2.1 cron表格
cron表格使用特殊格式指定做業運行時間。cron表格的格式以下:
min hour dayofmonth month dayofweek command
cron表格能夠將條目指定爲具體的值、必定範圍的值(如 1-5)或通配符(*)。例如,若是但願天天10:15運行命令,可使用如下corn表格項:15 10 * * * command。
dayofweek項能夠是3字符的文本值(mon、tue、wed、thu、fri、sat、sun),也能夠是數字:0標識星期天,6表示星期六。
dayofmonth項指定每月的日期值(1-31)。
PS:
由於每月份不一樣,因此如何設置一個命令在每月的最後一天執行呢?
一種經常使用的方法是添加:if-then語句,該語句使用date命令檢查明天是不是1號:
00 12 * * * if [ `date +%d -d tomorrow` =01 ] ; then ; command
經過if判斷明天是否爲01,若是是則執行命令。這將在天天的12點查看本日是不是該月的最後一天,若是是,它將運行命令。
命令列表必須制定要運行的命令或shell腳本的完整路徑名。能夠根據須要添加任何命令行參數或者重定向符號。
cron程序使用提交做業的用戶帳戶運行腳本。所以必須擁有相應的權限才能訪問命令行列表中的指定的命令和輸出文件。
3.2.2 構建cron時間表
每一個系統用戶均可以擁有本身的cron表格以及運行安排好的做業。Linux提供crontab命令處理cron表格。
Linux下的任務調度分爲兩類:系統任務調度和用戶任務調度。
系統任務調度:系統週期性所要執行的工做,好比寫緩存數據到硬盤、日誌清理等。在/etc
目錄下有一個crontab文件,這個就是系統任務調度的配置文件。
前四行是用來配置crond任務運行的環境變量
用戶任務調度:用戶按期要執行的工做,好比用戶數據備份、定時郵件提醒等。用戶可使用 crontab 工具來定製本身的計劃任務。全部用戶定義的crontab文件都被保存在/var/spool/cron
目錄中。其文件名與用戶名一致,使用者權限文件以下:
1 /etc/cron.deny 該文件中所列用戶不容許使用crontab命令 2 /etc/cron.allow 該文件中所列用戶容許使用crontab命令 3 /var/spool/cron/ 全部用戶crontab文件存放的目錄,以用戶名命名
crontab文件的含義:用戶所創建的crontab文件中,也就是cron表格。(從新介紹一下)
每一行都表明一項任務,每行的每一個字段表明一項設置,它的格式共分爲六個字段,前五段是時間設定段,第六段是要執行的命令段,格式以下:
1 minute hour day month week command 順序:分 時 日 月 周
其中:
在以上各個字段中,還可使用如下特殊字符:
每1分鐘執行一次command
1 * * * * * command
每小時的第3和第15分鐘執行
1 3,15 * * * * command
在上午8點到11點的第3和第15分鐘執行
1 3,15 8-11 * * * command
每隔兩天的上午8點到11點的第3和第15分鐘執行
1 3,15 8-11 */2 * * command
每一個星期一的上午8點到11點的第3和第15分鐘執行
1 3,15 8-11 * * 1 command
每晚的21:30重啓smb
1 30 21 * * * /etc/init.d/smb restart
每個月一、十、22日的4 : 45重啓smb
1 45 4 1,10,22 * * /etc/init.d/smb restart
每週6、週日的1:10重啓smb
1 10 1 * * 6,0 /etc/init.d/smb restart
天天18 : 00至23 : 00之間每隔30分鐘重啓smb
1 0,30 18-23 * * * /etc/init.d/smb restart
每星期六的晚上11:00 pm重啓smb
1 0 23 * * 6 /etc/init.d/smb restart
每一小時重啓smb
1 * */1 * * * /etc/init.d/smb restart
晚上11點到早上7點之間,每隔一小時重啓smb
1 * 23-7/1 * * * /etc/init.d/smb restart
每個月的4號與每週一到週三的11點重啓smb
1 0 11 4 * mon-wed /etc/init.d/smb restart
一月一號的4點重啓smb
1 0 4 1 jan * /etc/init.d/smb restart
3.2.3 瀏覽cron目錄
有4個基本目錄 hourly、daily、monthly、weekly
若是須要腳本天天運行1次,只要將腳本複製到daily目錄,cron就會天天執行一次。
3.2.4 anacron程序
使用cron程序存在的惟一一個問題是,它假定Linux系統天天運行24小時,每週運行7天。只有在服務器環境中運行Linux時才能發生這種狀況。
若是在使用cron程序調度做業時Linux系統處於關閉狀態,則做業將沒法運行。cron程序沒法再系統打開後從新運行錯過的做業。
anacron程序使用時間戳肯定調度的做業是否在正確的時間間隔運行。若是它肯定某個做業錯過了調度的運行時間,它將自動儘快的運行該做業。
該特性對於執行日誌維護的腳本很是有用。若是系統在應該運行腳本時老是關機,則日誌文件將得不到清理,文件大小可能會不斷增大。使用anacron能夠保證日誌文件至少在每次系統啓動的時清理一次。
anacron程序使用本身的表格(一般位於/etc/anacrontab)指定做業。在大部分Linux發行版本,該表格僅供根用戶使用。
anacron表格的格式:period delay identifiercommand