公司用的伺服器,只能ssh遠端操作,每天都會自動退出賬戶,不知道怎麼回事兒,很鬱悶。所以每天早起重新登入後發現程序已經關閉了,因為你執行的任務是和terminal關聯在一起的,terminal關閉後,你執行的任務自然就關閉了。為了避免此事件發生,需要把任務放到後台執行,方法如下:
nohup command &
如果使用了nohup命令,在預設情況下,該作業的所有輸出都被重定向到乙個名為nohup.out的檔案中,除非另外指定了輸出檔案:
nohup command>myout.file
2>&1 &
這樣command的所有輸出就被定向到了myout.file
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 -x
ps的其他引數請自行man,或者檢視該篇帖子10個重要的linux ps命令實戰
如果想實時觀測cpu執行狀態,可以使用$top
指令,具體參考每天乙個linux命令(44):top命令
輸入如下命令即可殺死程序
kill
10913
有時候可能會遇到這樣的情況,某個程序已經掛死或閒置,使用kill命令卻殺不掉。這時候就必須傳送訊號9,強行關閉此程序。當然這種「野蠻」的方法很可能會導致開啟的檔案出現錯誤或者資料丟失之類的錯誤。所以不到萬不得已不要使用強制結束的辦法。如果連訊號9都不響應,那恐怕就只有重新啟動計算機了。
** 引用自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」等命令時,如果不加任何引號,則所變動的均是當前任務
Linux 把任務放到後台
fg bg jobs nohup ctrl z命令 一 加在乙個命令的最後,可以把這個命令放到後台執行,如gftp 二 ctrl z 可以將乙個正在前台執行的命令放到後台,並且處於暫停狀態,不可執行 三 jobs 檢視當前有多少在後台執行的命令 jobs l選項可顯示所有任務的pid,jobs的狀態...
把ffmpeg放到後台自動執行
最近乙個專案,需要用ffmpeg把rtsp流轉成ts流。由於rtsp伺服器有可能關閉,需要自動的重啟ffmpeg去連線rtsp伺服器 1 編寫乙個用ffmpeg轉ts流的指令碼rtsp2ts.sh ffmpeg i rtsp vcodec mpeg2video b 2048k acodec lib ...
linux將程式放到後台執行
測試指令碼test.sh i 1while doecho i sleep 1 i done一 當在前台執行某個作業時,終端會被該作業佔據,從而需要再開乙個終端來進行其他的操作,為了避免這種不方便我們可以將作業放到後台執行,主要有兩種方式 1 命令 sh test.sh 該命令將指令碼放到後台執行,但...