linux 把任務放到后台


公司用的服務器,只能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,默認指令psps是和終端綁定在一起的,也就是說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 
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM