日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux程序已经在后台运行冻结了_如何使程序在Linux后台运行

發布時間:2023/12/9 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux程序已经在后台运行冻结了_如何使程序在Linux后台运行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經常在Linux上面運行程序都有這樣的體驗:

某個程序運行的時候,會產生大量的log(提示)信息,但實際上我們只想讓它跑一下而已,log暫時不需要或者后面才有需要。

同時run多個相同或者不同程序的時候,占了好多的命令行界面,作為一個強迫癥患者,就想要一個清爽的界面!

電腦不小心休眠了或者關機了,又或者wifi斷開了,沒網了,導致運行老久的程序直接中斷了,又得重頭開始!

◆◆◆ ?◆◆

先來解決第一個問題,如何放到后臺

很簡單,就是在所有命令后面都加個空格和“&”符號就可以了:

./test &

這樣一來,test程序就在后臺運行了。但是,這樣處理還不夠,因為這樣做雖然程序是在后臺運行了,但log依然不停的輸出到當前終端。因此,要讓終端徹底的清靜,還應將log重定向到指定的文件:

./test > out.txt 2>&1 &

2>&1是指將標準錯誤重定向到標準輸出,于是標準錯誤和標準輸出都重定向到指定的out.txt文件中,從此終端徹底清靜了。

如果程序已經在運行了,其實也是有辦法加入后臺的,只需使用快捷鍵?ctrl-z就能立馬放到后臺中了,不過這種方法其實是暫停了程序的運行,所以想要讓程序繼續運行還得輸入 “fg” 命令讓程序返回前臺來。

那現在程序在后臺運行了,我們怎么找到它呢?很簡單,有兩種方法:

1.jobs命令

jobs命令可以查看當前有多少在后臺運行。

jobs -l

此命令可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。

2.ps命令

ps -ef | grep test

用grep查詢ps -ef的結果,就可以顯示所有正在運行的任務中含有test關鍵詞的程序具體信息了。

◆◆◆ ?◆◆

nohup命令來避免程序中斷

在命令的末尾加個&符號后,程序可以在后臺運行,但是一旦當前終端關閉(即退出當前帳戶),該程序就會停止運行。那假如說我們想要退出當前終端,但又想讓程序在后臺運行,該如何處理呢?

實際上,這種需求在十分很常見,比如想遠程到服務器編譯軟件或者需要長時間的運行一個程序,但網絡不穩定,一旦掉線就中止了,很浪費時間。

在這種情況下,我們就可以使用nohup命令。nohup就是不掛起的意思( no hang up)。該命令的一般形式為:

nohup ./test &

如果僅僅如此使用nohup命令的話,程序的輸出會默認重定向到一個nohup.out文件下。如果我們想要輸出到指定文件,可另外指定輸出文件:

nohup?./test?>?out.txt?2>&1?&

這樣一來,多管齊下,既使用了nohup命令,也使用了&符號,同時把標準輸出/錯誤重定向到指定文件中。

PS:

還有一種也很常見的避免中斷的方法,就是使用screen命令,它能夠在一個真實終端下運行偽終端,我們可以在這個偽終端里面為所欲為,再也不用擔心網絡中斷會對我們的進程造成影響,也不用給每個命令前都加上“nohup”。

但是screen的缺點是開很多screen進程的時候,會生成多個偽終端,比較占用系統資源,另外批量生成screen的同時并在screen里面運行程序有些困難,不如nohup +?&批量處理的方便。

總結

以上是生活随笔為你收集整理的linux程序已经在后台运行冻结了_如何使程序在Linux后台运行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。