『壹』 請問linux進程符合三狀態模型么running、sleeping和stopped可以理解為三狀態模型中運行、阻塞和就緒么
運行:running,正在佔用cpu資源。
阻塞:sleeping,由於某些原因不得不等待cpu,所以只好sleeping
就緒也是:running,處在linux的就緒隊列中
stoped是進程已經停止了,執行完了退出了,不會被調度了。
你不要這么理解了,總之你先看一下linux的進程管理吧網上一搜一堆啊。
http://mcuos.com/viewthread.php?tid=8605&highlight=%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86
『貳』 linux環境下 腳本前台執行沒有問題,後台執行 就會stopped。
後台進程如果需要輸入東西的話,就會進入stopped狀態。nohup是忽略所有的掛斷信號,保證後台進程不間斷的執行。
『叄』 Linux中怎麼終止正在運行的後台程序
xkill應用程序可以幫助你快速殺死你的桌面上的任何圖形窗口。
1、通過按下Ctrl + Alt + Esc鍵可激活此快捷方式。您的游標會變成一個X.點擊窗口與xkill功能來確定哪些進程與該窗口關聯,然後立即殺掉該進程。該窗口將瞬間關閉。
『肆』 linux下如何暫停一個進程
kill
-STOP
1234
將該進程暫停。
如果要讓它恢復到後台,用kill
-CONT
1234
(很多在前台運行的程序這樣是不行的)
如果要恢復到前台,請在當時運行該進程的那個終端用
jobs命令查詢暫停的進程。
然後用
fg
〔job號〕把進程恢復到前台。
如果jobs只查詢到一個進程,只用
fg
即可。
例:
root@dWorks:~#
bc
-q
[1]+
Stopped
bc
-q
root@dWorks:~#
bc
-q
[2]+
Stopped
bc
-q
root@dWorks:~#
jobs
[1]-
Stopped
bc
-q
[2]+
Stopped
bc
-q
root@dWorks:~#
fg
2
bc
-q
1+1
2
『伍』 UTermux linux經常stopped
解決方案:
第一步:在程序中去除讀終端的相關代碼;《》
第二步:使用重定向,./AP_Connect < /dev/null &;
第三步:使用nohup,nohup ./AP_Connect & , nohup將忽略該程序的輸入,並將輸出追加到nohup.out。
『陸』 如何在 Linux 系統中結束結束進程或是中止程序
任務管理-後台運行與終止
fg、bg、jobs、&、ctrl + z命令
一、 &
加在一個命令的最後,可以把這個命令放到後台執行 ,如gftp &,
二、ctrl + z
可以將一個正在前台執行的命令放到後台,並且處於暫停狀態,不可執行
三、jobs
查看當前有多少在後台運行的命令
jobs
-l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped,
Terminated,但是如果任務被終止了(kill),shell
從當前的shell環境已知的列表中刪除任務的進程標識;也就是說,jobs命令顯示的是當前shell環境中所起的後台正在運行或者被掛起的任務信息;
四、fg
將後台中的命令調至前台繼續運行
如果後台中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
五、bg
將一個在後台暫停的命令,變成繼續執行 (在後台執行)
如果後台中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
將任務轉移到後台運行:
先ctrl + z;再bg,這樣進程就被移到後台運行,終端還能繼續接受命令。
概念:當前任務
如
果後台的任務號有2個,[1],[2];如果當第一個後台任務順利執行完畢,第二個後台任務還在執行中時,當前任務便會自動變成後台任務號碼「[2]」
的後台任務。所以可以得出一點,即當前任務是會變動的。當用戶輸入「fg」、「bg」和「stop」等命令時,如果不加任何引號,則所變動的均是當前任務
進程的終止
後台進程的終止:
方法一:
通過jobs命令查看job號(假設為num),然後執行kill %num
方法二:
通過ps命令查看job的進程號(PID,假設為pid),然後執行kill pid
前台進程的終止:
ctrl+c
kill的其他作用
kill除了可以終止進程,還能給進程發送其它信號,使用kill -l 可以察看kill支持的信號。
SIGTERM是不帶參數時kill發送的信號,意思是要進程終止運行,但執行與否還得看進程是否支持。如果進程還沒有終止,可以使用kill -SIGKILL pid,這是由內核來終止進程,進程不能監聽這個信號。
進程的掛起
後台進程的掛起:
在solaris中通過stop命令執行,通過jobs命令查看job號(假設為num),然後執行stop %num;
在redhat中,不存在stop命令,可通過執行命令kill -stop PID,將進程掛起;
當要重新執行當前被掛起的任務時,通過bg %num 即可將掛起的job的狀態由stopped改為running,仍在後台執行;當需要改為在前台執行時,執行命令fg %num即可;
前台進程的掛起:
ctrl+Z;
『柒』 Linux環境下如何終止後台進程
一、 &
加在一個命令的最後,可以把這個命令放到後台執行 ,如gftp &,
二、ctrl + z
可以將一個正在前台執行的命令放到後台,並且處於暫停狀態,不可執行
三、jobs
查看當前有多少在後台運行的命令
jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated,但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識;也就是說,jobs命令顯示的是當前shell環境中所起的後台正在運行或者被掛起的任務信息;
四、fg
將後台中的命令調至前台繼續運行
如果後台中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
五、bg
將一個在後台暫停的命令,變成繼續執行 (在後台執行)
如果後台中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
將任務轉移到後台運行:
先ctrl + z;再bg,這樣進程就被移到後台運行,終端還能繼續接受命令。
概念:當前任務
如果後台的任務號有2個,[1],[2];如果當第一個後台任務順利執行完畢,第二個後台任務還在執行中時,當前任務便會自動變成後台任務號碼「[2]」 的後台任務。所以可以得出一點,即當前任務是會變動的。當用戶輸入「fg」、「bg」和「stop」等命令時,如果不加任何引號,則所變動的均是當前任務
進程的終止
後台進程的終止:
方法一:
通過jobs命令查看job號(假設為num),然後執行kill %num
方法二:
通過ps命令查看job的進程號(PID,假設為pid),然後執行kill pid
前台進程的終止:
ctrl+c
kill的其他作用
kill除了可以終止進程,還能給進程發送其它信號,使用kill -l 可以察看kill支持的信號。
SIGTERM是不帶參數時kill發送的信號,意思是要進程終止運行,但執行與否還得看進程是否支持。如果進程還沒有終止,可以使用kill -SIGKILL pid,這是由內核來終止進程,進程不能監聽這個信號。
進程的掛起
1)、後台進程的掛起:
在solaris中通過stop命令執行,通過jobs命令查看job號(假設為num),然後執行stop %num;
在redhat中,不存在stop命令,可通過執行命令kill -stop PID,將進程掛起;
當要重新執行當前被掛起的任務時,通過bg %num 即可將掛起的job的狀態由stopped改為running,仍在後台執行;當需要改為在前台執行時,執行命令fg %num即可;
2)、前台進程的掛起:
ctrl+Z;
『捌』 linux 後台運行程序被stopped
先調用jobs,查看所有任務。
然後調用bg 編號,就可以把掛起的繼續後台運行。
例如bg或者bg 1。
另外,有些後台掛起的任務,是因為需要人工干預,比如輸入內容,就會stopped,你可以用
fg 指令,切換對應的任務到前台,處理完畢後按ctrl + z,然後運行bg來繼續後台運行。
『玖』 如何讓stopped的狀態的命令在linux後台執行
drush get-image-regenerate < /dev/null > /dev/null 2> /dev/null &
這樣修改之後就能運行了,
然後想退出terminate或LOGOUT時, 該條命令還會執行,
我就執行了一下disown
disown -h %1
現在即使我退出用戶, 這條命令始終在後台執行了。