nohup後台執行程式以及輸出重定向

2021-09-24 14:23:20 字數 1665 閱讀 2983

**

第一種:支援後台執行,但是關閉終端的話,程式也會停止

command &
第二種:支援後台執行,關閉終端後,程式也會繼續執行

nohup command &
但是,當我自己使用nohup這個命令時,會報下面這樣的錯。

或者這樣的錯。

nohup: failed to run command /etc/nginx_check.sh': permission denied nohup: failed to run command /etc/nginx_check.sh': permission denied

要解決的話,我們首先先得談一下linux重定向

0、1和2分別表示標準輸入、標準輸出和標準錯誤資訊輸出,可以用來指定需要重定向的標準輸入或輸出。

我們可以直接通過輸出重定向》(或》,表示追加)將某種輸出重定向到其他地方,如裝置,檔案。

值得一提的是,linux下還有乙個特殊的檔案/dev/null,它就像乙個無底洞,所有重定向到它的資訊都會消失得無影無蹤。這一點非常有用,當我們不需要回顯程式的所有資訊時,就可以將輸出重定向到/dev/null

比如說:

ls > ls.log  #標準輸出重定向

ls 2> ls.log #標準錯誤重定向

ls > /dev/null #重定向到null裝置,相當於直接忽略輸出

但是,有時候,我們想把標準輸出以及錯誤輸出一起重定向某個檔案,這是可以通過 2>&1 實現,也可以通過兩個同時重定向到某個檔案。

所以,可以這樣:

ls >ls.log 2>&1 #標準輸出重定向到ls.log,而錯誤又重定向到標準輸出,這兩個位置不可換

ls 2>>ls.log 1>>ls.log

但是python會有乙個緩衝,導致輸出不會及時地存在log檔案裡,我們只需要加乙個引數-u

所以最後,我們可以這樣來執行我們的程式。

nohup python -u hello.py >hello.log 2>&1 &
這樣,我們把所有的輸出都存在了hello.log檔案中。

關閉終端後,再次開啟使用命令jobs已經無法看到後台跑的程式了。此時利用ps(程序檢視命令)。

使用下面的命令來檢視start.py

ps -aux | grep "start.py"
其中,上面的-aux代表三個引數,a表示顯示所有程式,u表示以使用者為主的格式來顯示,x顯示所有程式且不以終端機來區分。grep命令用來查詢,後面它的引數也可以是其他的,比如說python。

執行這條命令後,就能找到我們的nohup程式的程序號。然後使用kill命令結束程式。

kill %1400
其中1400代表具體程序號。

nohup後台執行程式

1 bin bash 2 ulimit s 2621400 3 ulimit c 2048000 4 sleep25 killall 9 ljyx sghall new 6 sleep 27 trap 12 3248 nohup ljyx sghall new ljyx sghall new.log...

nohup後台執行程式

問題描述 開啟終端,使用nohup後台啟動服務之後,只要關掉終端,服務就down了 期望結果 關掉終端後,服務依然後台保持執行 技術分析 unix linux下一般想讓某個程式在後台執行,很多都是使用 在程式結尾來讓程式自動執行 但如果要想在退出終端後,程式依然還在後台執行,則要用nohup與 組合...

後台執行程式 nohup命令

在應用unix linux時,我們一般想讓某個程式在後台執行,於是我們將常會用 在程式結尾來讓程式自動執行。比如我們要執行mysql在後台 usr local mysql bin mysqld safe user mysql 可是有很多程式並不想mysqld一樣,這樣我們就需要nohup命令,怎樣使...