Linux下強制中斷一個程序的執(zhí)行,利用按鍵,而不是kill命令。
公司主營業(yè)務:網(wǎng)站制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出懷來免費做網(wǎng)站回饋大家。
可嘗試以下方法:
1.CTRL + c??中斷。
2.CTRL + z??暫停放到后臺。
3.CTRL + d??保存退出。
如上述方法不能解決問題可嘗試:
進入相關網(wǎng)站詢問客服人員。
尋找線下維修人員,進行詢問。
尋找專業(yè)人員,尋求幫助。
尋找相關書籍,進行知識解答。
1、信號:傳遞給 Liunx 的事件發(fā)生通知機制。
2、kill -l:顯示所有信號。一共有62個信號(沒有32、33)。
3、常用的信號有:
kill -2 PID —— 正常中斷進程(Ctrl + C 一樣)。程序在結束之前,能夠保存相關數(shù)據(jù),然后再退出。
kill -9 PID —— 強制殺死一個進程。
kill -15 PID —— 正常方式終止一個程序。中斷進程時應首先用 -15,以便于其能夠預先清理臨時文件和釋放資源。-9?作為最后手段,應對那些失控的進程。
--------------------------------------------------------------------------------
1)、kill -2 中斷后臺運行的進程。
紅色下劃線:sleep 10000 —— 后臺運行延時 10000 秒的命令,進程 ID 為1516。
ps -j —— 以作業(yè)格式列出進程信息,可以看到 1516 sleep 命令的進程。
(PID:進程 ID、PGID:線程組 ID、SID:會話 ID、TTY:進程運行的終端,標識那個終端控制。(pts遠程終端、tty系統(tǒng)終端)、TIME:進程運行的時間 和 CMD:命令的名稱和參數(shù))。
jobs -l —— 列出后臺運行的命令,可以看到 1516 sleep 命令正在后臺運行。
黃色下劃線:kill -2 1516 —— 中斷1516 進程。執(zhí)行成功后,按 Enter 回車系統(tǒng)會給出提示Interrupt 提示(中斷進程)。
藍色方框:ps -j 已查詢不到?1516 sleep 的進程。jobs -l 也沒有后臺運行的命令。
2)、kill -2 配合 fg 查看中斷掛起的進程。
紅色下劃線:前臺執(zhí)行 sleep 10000 (延時10000秒)后 ctrl + z 掛起。
黃色下劃線:ps -j 查看進程,可以看到 1344 sleep 進程。jobs -l 查看后臺進程 1344 的狀態(tài)是stopped 暫停狀態(tài)。
藍色下劃線:kill -2 1344 中斷 1344 進程。
綠色下劃線:ps -j 查看進程,仍有 1344 sleep 進程。jobs -l 查看后臺進程 1344 的狀態(tài)是stopped 暫停狀態(tài)。
暫時這樣看,好像 kill -2 并沒有起到中斷進程的作用。
然而,用 fg 把后臺的命令調至前臺運行時可以發(fā)現(xiàn) 1344 sleep 已經(jīng)被中斷。
紅色下劃線:fg 把已經(jīng)執(zhí)行了 kill -2, 狀態(tài)為 stopped 的1344 sleep命令調至前臺執(zhí)行。系統(tǒng)也反饋已經(jīng)調至前臺執(zhí)行。(此時,實際上已經(jīng)執(zhí)行了 kill -2 中斷了進程)
黃色方框:ps -j 已經(jīng)沒有了 1344 sleep 的進程。
藍色方框:jobs -l 后臺也沒有指令。
3)、kill -2 配合 bg 查看中斷掛起的進程。
通過上面的思路,kill -2 配合 bg 實驗看看效果。同樣的首先掛起一個命令,狀態(tài)為 stopped 暫停。然后用 bg 命令恢復執(zhí)行。
前面的步驟都是一樣,掛起一個命令。通過 ps 和 jobs 查看進程和后臺確認有 1379 的進程,狀態(tài)為 stopped 暫停。然后執(zhí)行 kill-2 中斷進程,再次通過ps 和 jobs 查看進程和后臺命令。確認狀態(tài)為 stopped? 1379 的進程仍然存在。
此時,用 bg 恢復運行掛起的命令,系統(tǒng)提示 sleep 命令已恢復在后臺運行。然而通過 ps -j 查看進程會發(fā)現(xiàn) sleep 已經(jīng)被中斷。jobs -l 查看后臺也沒有了運行的 sleep 命令了。
從實驗上看:
1、后臺命令運行時(Running),執(zhí)行 kill -2 可以中斷進程。
2、掛起命令,處于暫停狀態(tài)時(Stopped),執(zhí)行 kill -2 后通過 ps 還可以查詢到進程, jobs還可以查詢到后臺命令,狀態(tài)仍然是 Stopped 暫停狀態(tài)。實際上,用 fg 把暫停的后臺進程調至前臺運行時,系統(tǒng)反饋 sleep 命令調至前臺運行。而再用 ps 查詢不到進程,已經(jīng)中斷了進程。用 jobs 已經(jīng)查詢不到后臺命令。
3、掛起命令,處于暫停狀態(tài)時(Stopped),執(zhí)行 kill -2 后通過 ps 還可以查詢到進程, jobs還可以查詢到后臺命令,狀態(tài)仍然是?Stopped 暫停狀態(tài)。用 bg 把暫停的后臺命令恢復運行時,系統(tǒng)反饋 sleep 命令在后臺運行。再用 ps 查詢進程已經(jīng)中斷,用 jobs 已經(jīng)查詢不到后臺命令。
在命令后面加上可實現(xiàn)后臺運行。使用示例:
但僅使用命令,當關閉控制臺終端時,任務同樣會被終止。
nohup(no hang up)命令,即忽略SIGHUP信號。nohup能保證關閉控制臺終端時,任務不被終止:
關閉控制臺終端后,通過ps查看,easeapi.sh 的父進程由終端進程變成了init進程,即使關閉終端,任務依然能保持運行。nohup命令默認會在當前目錄創(chuàng)建nohup.out文件存儲輸出信息。如果要輸出到指定文件則:
nohup命令雖然簡單,但在一些情況下可能并不好用。比如,想使用scp命令從需要驗證的服務端下載文件時,直接使用nohup命令并不會出現(xiàn)驗證交互。這種情況下,推薦使用bg/fg命令。
Ctrl + C 和 Ctrl + Z是linux中兩種中斷命令,但作用有不同。Ctrl + C是強制中斷進程,而Ctrl + Z則是暫停任務執(zhí)行。在終端中正常執(zhí)行scp命令,輸入賬戶密碼后,使用Ctrl + Z暫停任務。
jobs命令顯示當前任務狀態(tài)。
可以看到任務已經(jīng)暫停,任務編號為1。
bg/fg將可將任務在前后臺切換?,F(xiàn)在將任務切換到后臺:
在通過jobs查看,任務狀態(tài)已變成了running:
當關閉終端后,任務可能會被終止??墒褂胐isown命令忽略SIGHUP信號。
什么是中斷
Linux 內核需要對連接到計算機上的所有硬件設備進行管理,毫無疑問這是它的份內事。如果要管理這些設備,首先得和它們互相通信才行,一般有兩種方案可實現(xiàn)這種功能:
輪詢(polling) 讓內核定期對設備的狀態(tài)進行查詢,然后做出相應的處理;中斷(interrupt) 讓硬件在需要的時候向內核發(fā)出信號(變內核主動為硬件主動)。
第一種方案會讓內核做不少的無用功,因為輪詢總會周期性的重復執(zhí)行,大量地耗用 CPU 時間,因此效率及其低下,所以一般都是采用第二種方案 。
對于中斷的理解我們先看一個生活中常見的例子:QQ。第一種情況:你正在工作,然后你的好友突然給你發(fā)送了一個窗口抖動,打斷你正在進行的工作。第
二種情況:當然你有時候也會每隔 5 分鐘就去檢查一下 QQ
看有沒有好友找你,雖然這很浪費你的時間。在這里,一次窗口抖動就可以被相當于硬件的中斷,而你就相當于 CPU,你的工作就是 CPU
這在執(zhí)行的進程。而定時查詢就被相當于 CPU 的輪詢。在這里可以看到:同樣作為 CPU 和硬件溝通的方式,中斷是硬件主動的方式,較輪詢(CPU
主動)更有效些,因為我們都不可能一直無聊到每隔幾分鐘就去查一遍好友列表。
CPU
有大量的工作需要處理,更不會做這些大量無用功。當然這只是一般情況下。好了,這里又有了一個問題,每個硬件設備都中斷,那么如何區(qū)分不同硬件呢?不同設
備同時中斷如何知道哪個中斷是來自硬盤、哪個來自網(wǎng)卡呢?這個很容易,不是每個 QQ 號碼都不相同嗎?同樣的,系統(tǒng)上的每個硬件設備都會被分配一個
IRQ 號,通過這個唯一的 IRQ 號就能區(qū)別張三和李四了。
從物理學的角度看,中斷是一種電信號,由硬件設備產(chǎn)生,并直接送入中斷控制器(如
8259A)的輸入引腳上,然后再由中斷控制器向處理器發(fā)送相應的信號。處理器一經(jīng)檢測到該信號,便中斷自己當前正在處理的工作,轉而去處理中斷。此后,
處理器會通知 OS 已經(jīng)產(chǎn)生中斷。這樣,OS
就可以對這個中斷進行適當?shù)奶幚?。不同的設備對應的中斷不同,而每個中斷都通過一個唯一的數(shù)字標識,這些值通常被稱為中斷請求線。
網(wǎng)頁標題:linux的中斷命令,linux怎么中斷命令
分享地址:http://jinyejixie.com/article44/dssedee.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、小程序開發(fā)、服務器托管、品牌網(wǎng)站設計、動態(tài)網(wǎng)站、建站公司
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)