Linux循序漸進(14):程式排程(轉)
Linux循序漸進(14):程式排程(轉)[@more@] 第十三課 程式排程 kill命令 當需要中斷一個前臺程式的時候,通常是使用組合鍵;但是對於一個後臺程式恐怕就不是一個組合鍵所能解決的了,這時就必須求助於kill命令。該命令可以終止後臺程式。至於終止後臺程式的原因很多,或許是該程式佔用的CPU時間過多;或許是該程式已經掛死。總之這種情況是經常發生的。 kill命令是透過向程式傳送指定的訊號來結束程式的。如果沒有指定傳送訊號,那麼預設值為TERM訊號。TERM訊號將終止所有不能捕獲該訊號的程式。至於那些可以捕獲該訊號的程式可能就需要使用kill(9)訊號了,該訊號是不能被捕捉的。 kill命令的語法格式很簡單,大致有以下兩種方式: kill [-s 訊號 | -p ] [ -a ] 程式號 ... kill -l [訊號] -s 指定需要送出的訊號。既可以是訊號名也可以對應數字。 -p 指定kill命令只是顯示程式的pid,並不真正送出結束訊號。 -l 顯示訊號名稱列表,這也可以在/usr/include/linux/signal.h檔案中找到。 kill命令的使用 下面看看該命令的使用。 [例24] 在執行一條find指令時由於時間過長,決定終止該程式。 首先應該使用ps命令來檢視該程式對應的PID,鍵入ps,顯示如下: PID TTY TIME COMMAND 285 1 00:00:00 -bash 287 3 00:00:00 -bash 289 5 00:00:00 /sbin/mingetty tty5 290 6 00:00:00 /sbin/mingetty tty6 312 3 00:00:00 telnet bbs3 341 4 00:00:00 /sbin/mingetty tty4 345 1 00:00:00 find / -name foxy.jpg 348 1 00:00:00 ps 可以看到該程式對應的PID是345,現在使用kill命令來終止該程式。鍵入: # kill 345 再用ps命令檢視,就可以看到,find程式已經被殺掉了。 [例25] 殺掉程式11721 # ps PID TTY TIME COMMAND 11668 p1 00:00:00 -tcsh 11721 p1 00:00:00 cat 11737 p1 00:00:00 ps # kill 11721 [1] Terminated cat # 有時候可能會遇到這樣的情況,某個程式已經掛死或閒置,使用kill命令卻殺不掉。這時候就必須傳送訊號9,強行關閉此程式。當然這種“野蠻”的方法很可能會導致開啟的檔案出現錯誤或者資料丟失之類的錯誤。所以不到萬不得已不要使用強制結束的辦法。如果連訊號9都不響應,那恐怕就只有重新啟動計算機了。 控制多個程式命令 Linux可使使用者同時執行多個程式,還允許使用者或系統管理員能控制正在執行的程式。 nohup命令 理論上,我們一般退出Linux系統時,會把所有的程式全部結束掉,包括那些後臺程式。但有時候,例如您正在編輯一個很長的程式,但是您下班或是有事需要先退出系統,這時您又不希望系統把您編輯那麼久的程式結束掉,希望退出系統時,程式還能繼續執行。這時,我們就可以使用nohup命令使程式在使用者退出後仍繼續執行。 一般這些程式我們都是讓它在後臺執行,結果則會寫到使用者自己的目錄下的nohup.out這個檔案裡(也可以使用輸出重定向,讓它輸出到一個特定的檔案)。[例26] $ nohup sort sales.dat & 這條命令告訴sort命令忽略使用者已退出系統,它應該一直執行,直到程式完成。利用這種方法,可以啟動一個要執行幾天甚至幾周的程式,而且在它執行時,使用者不需要去登入。 nohup命令把一條命令的所有輸出和錯誤資訊送到nohup.out檔案中。若將輸出重定向,則只有錯誤資訊放在nohup.out檔案中。 renice命令 renice命令允許使用者修改一個正在執行程式的優先權。 利用renice命令可以在命令執行時調整其優先權。其格式如下: $ renice -number PID 其中,引數number與nice命令的number意義相同。 注: (1) 使用者只能對自己所有的程式使用renice命令。 (2) root使用者可以在任何程式上使用renice命令。 (3) 只有root使用者才能提高程式的優先權。 思 考 題 1. 什麼是程式?程式與作業有何區別? 2. 程式啟動的方式有哪幾種? 3. at命令與batch命令有何本質區別? 4. cron命令在何時執行?如何改變其執行狀態? 5. 何謂前臺作業、後臺作業?如何掛起當前的前臺作業?如果要恢復其執行又如何做? 6. 程式的檢視命令有哪些?各有什麼不同? 7. 如何中斷一個後臺程式? 8. 如何在使用者退出Linux系統時,使一個程式仍然能繼續執行? 9. 如何修改一個作業的優先權? 10. 編寫和檢驗完成下列各項功能的命令管道行: (1)顯示當前系統中的登入名的數目。 (2)顯示當前系統中有多少個程式。 11. 說明下列管道行分別完成什麼功能: (1)df -a | wc -l (2)who | wc -
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-938937/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 循序漸進linux(二)Linux
- 循序漸進學加密加密
- 務實發展,循序漸進
- 循序漸進DIY一個react(二)React
- 循序漸進DIY一個react(四)React
- 循序漸進DIY一個react(三)React
- 循序漸進理解TypeScript型別模式TypeScript型別模式
- 循序漸進DIY一個react(一)React
- 循序漸進學.Net Core Web Api開發系列【14】:異常處理WebAPI
- linux程式排程Linux
- Matplotlib學習筆記2 - 循序漸進筆記
- 【Python語法】循序漸進理解閉包Python
- 循序漸進掌握遞迴正規表示式遞迴
- 循序漸進的用js實現一個bind()JS
- 《程式設計的原則》重新發明車輪感悟之循序漸進程式設計
- 使用C#的後端Web API:循序漸進教程後端WebAPI
- 循序漸進 Redis 分散式鎖(以及何時不用它)Redis分散式
- Go語言排程器之排程main goroutine(14)GoAI
- LInux實驗 : 程式排程模擬Linux
- 自動化響應要循序漸進 不能一蹴而就
- Linux程式排程邏輯與原始碼分析Linux原始碼
- 排程器簡介,以及Linux的排程策略Linux
- Linux IO排程方法Linux
- 循序漸進學.Net Core Web Api開發系列【4】:前端訪問WebApiWebAPI前端
- Linux核心學習筆記(5)– 程式排程概述Linux筆記
- [翻譯]測試人員成為業務分析師的循序漸進指南
- 循序漸進!開展零信任建設時應做好的16項準備
- linux搶佔式排程Linux
- Linux I/O排程器Linux
- 循序漸進學.Net Core Web Api開發系列【9】:常用的資料庫操作WebAPI資料庫
- Linux 定時任務排程Linux
- linux中設定程式排程的優先順序別Linux
- Linux中什麼情況下會發生程式排程?Linux
- Flink排程之排程器、排程策略、排程模式模式
- 2.2.5排程演算法:時間片輪轉、優先順序排程、多級反饋排程演算法
- 循序漸進nginx(二):反向代理、負載均衡、快取服務、靜態資源訪問Nginx負載快取
- 循序漸進VUE+Element 前端應用開發(18)--- 功能點管理及許可權控制Vue前端
- 解密prompt系列34. RLHF之訓練另闢蹊徑:循序漸進 & 青出於藍解密
- 循序漸進體驗玩法和故事,從《八方旅人》談遊戲關卡設計遊戲