公司用的服務器,只能ssh遠程操作,每天都會自動退出賬戶,不知道怎么回事兒,很郁悶。所以每天早起重新登錄后發現進程已經關閉了,因為你運行的任務是和terminal關聯在一起的,terminal關閉后,你運行的任務自然就關閉了。為了避免此事件發生,需要把任務放到后台運行,方法如下:
1.nohup命令
nohup command &
如果使用了nohup命令,在缺省情況下,該作業的所有輸出都被重定向到一個名為nohup.out的文件中,除非另外指定了輸出文件:
nohup command>myout.file 2>&1 &
這樣command的所有輸出就被定向到了myout.file
2.ps命令
ps命令用於查看系統上運行的進程,例如
PID TTY TIME CMD
7016 pts/1 00:00:00 bash
10913 pts/1 00:07:43 python
11006 pts/1 00:00:00 ps
可以知道,我運行的程序PID是10913,默認指令ps是和終端綁定在一起的,也就是說ps是和終端綁定在一起的,也就是說ps 指令只顯示有控制終端的進程,要想顯示沒有控制終端的進程,可以使用以下命令:
$ ps -x
ps的其他參數請自行man,或者查看該篇帖子10個重要的Linux ps命令實戰
如果想實時觀測CPU運行狀態,可以使用$top 指令,具體參考每天一個linux命令(44):top命令
3.kill命令
輸入如下命令即可殺死進程
kill 10913
有時候可能會遇到這樣的情況,某個進程已經掛死或閑置,使用kill命令卻殺不掉。這時候就必須發送信號9,強行關閉此進程。當然這種“野蠻”的方法很可能會導致打開的文件出現錯誤或者數據丟失之類的錯誤。所以不到萬不得已不要使用強制結束的辦法。如果連信號9都不響應,那恐怕就只有重新啟動計算機了。
**
4.補充幾個相關指令:
**
引用自
fg、bg、jobs、&、nohup、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 %jobnumber,這樣進程就被移到后台運行,終端還能繼續接受命令。
概念:當前任務
如果后台的任務號有2個,[1],[2];如果當第一個后台任務順利執行完畢,第二個后台任務還在執行中時,當前任務便會自動變成后台任務號碼“[2]” 的后台任務。所以可以得出一點,即當前任務是會變動的。當用戶輸入“fg”、“bg”和“stop”等命令時,如果不加任何引號,則所變動的均是當前任務
---------------------
作者:木_凌
來源:CSDN
原文:https://blog.csdn.net/u014540717/article/details/53079111
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!