使用nohup後臺執行處理遇到的問題
情景如下:
當我使用nohup後臺執行一個python檔案,並將日誌儲存到指定目錄。在我的Python檔案中,其中呼叫系統命令os.system(‘sh xxxx.sh’)來執行一個指令碼檔案。(sh xxxx.sh最好為絕對路徑)
在這裡遇到了一個問題!!!!!當我的xxxx.sh檔案執行失敗時,其中的輸出是不會列印到日誌中的,又因為我在這裡吃掉了異常,所以會繼續往下執行,但是日誌不會出現任何錯誤。當我嘗試將 sh xxxx.sh複製到命令列視窗下執行,反而出現了shell指令碼中的錯誤。一開始我認為是os.system('sh xxxx.sh')沒有執行,所以沒有關注這個錯誤的原因,反而是產生的錯誤迷惑了我,讓我以為這個shell指令碼失敗也一定會產生輸出,所以就一直糾結於os.system('sh xxxx.sh')為什麼會不執行的原因上。所以浪費了很多時間去查詢一個不存在的錯誤。
錯誤原因:nohup啟動Python檔案的情況,不會輸出Python檔案中呼叫的shell(或者其他檔案)中的輸出。(這裡還有個問題就是,pycharm會輸出shell中的輸出,所以這更加加深了我對於os.system('sh xxxx.sh'沒有執行的誤解。。。)
xxxx.sh 詳細程式碼如下:
#!/bin/bash filepath="/home/xxxx/clock.py" # py檔案位置 start(){ nohup python3 $filepath >/home/wangfang/clock.log 2>&1 & if [ $? -eq 0 ]; then echo 'clock.py service start OK' else echo "clock.py service start failed" fi } stop(){ serverpid=`ps -aux|grep "$filepath"|grep -v grep|awk '{print $2}'` kill -9 $serverpid if [ $? -eq 0 ]; then echo 'clock.py service stop OK' else echo "clock.py service stop failed" fi } restart(){ stop start } status(){ if [ -e $filepath ];then echo "$0 service start" else echo "$0 service stop" fi } case $1 in start) start ;; stop) stop ;; restart) restart ;; *) start esac exit 0
相關推薦
使用nohup後臺執行處理遇到的問題
情景如下: 當我使用nohup後臺執行一個python檔案,並將日誌儲存到指定目錄。在我的Python檔案中,其中呼叫系統命令os.system(‘sh xxxx.sh’)來執行一個指令碼檔案。(sh xxxx.sh最好為絕對路徑) 在這裡遇到了一個問題!!
利用nohup後臺執行jar檔案包程式
Linux 執行jar包命令如下: 方式一: java -jar XXX.jar特點:當前ssh視窗被鎖定,可按CTRL + C打斷程式執行,或直接關閉視窗,程式退出 那如何讓視窗不鎖定? 方式二 java -jar XXX.jar &&代表在後臺執行。 特定:當前ssh視窗不被鎖
linux 開啟程序,nohup後臺執行指令碼等
1.在伺服器未配置php環境變數的情況下,linux要開啟web目錄下的server.php程序 例如: cd /home/wwwroot/LNMP02/domain/duoduo1.shupai.xyz/web /usr/local/php-7.0/bin/php
Nohup後臺執行程式
場景:我現在需要跑指令碼批量處理一些資料,但是我又不想盯著控制檯看這個指令碼的輸出結果,想把這些輸出結果記錄到一個日誌檔案裡面 方案:可以使用 Linux 的 nohup 命令,把程序掛起,後臺執行 用法: $ nohup XXXXXX.sh >> /runtime/deletedat
使用nohup後臺執行並獲取pid
啟動 nohup command > command.log 2>&1& echo $! > command.pid 注意: nohup執行後需要按回車鍵,不然強行ctrl+C會退出。 停止 kill `cat command.pi
linux下利用nohup後臺執行jar檔案包程式
Linux 執行jar包命令如下: 方式一: java -jar XXX.jar 特點:當前ssh視窗被鎖定,可按CTRL + C打斷程式執行,或直接關閉視窗,程式退出 那如何讓視窗不鎖定? 方式二 java -jar XXX.jar & &代表在後臺執行。 特定:當前ssh視
ssh 連上主機,並用nohup後臺執行指令碼
以下本指令碼實現了:先從本地複製指令碼到遠端主機,再用ssh連上遠端主機,執行之前複製的指令碼(由於指令碼需要執行很長時間,故放到後臺執行),此指令碼僅用於備忘,如有不足敬請指點! #!/bin/bash cd /tmp i=1 #ip.txt儲存主機列表,第三列為IP
nohup 後臺執行,以及重定向標準輸出和標準錯誤 &/dev/null 檔案
具體的命令我就不介紹了, 一般都是在linux下 nohup command_line 或者 nohup command_line & 這之間的差別是帶&的命令列,即使terminal關閉,或者電腦宕機程式依然執行(前提是你把程式遞交到伺服器上); 它把標準輸出(STDOUT)和標準錯誤(S
12-後臺執行 - nohup ./sh &
spa back color out ack round fff 執行 .sh $ nohup ./gsj.sh & 或者$ nohup ./gsj.sh & > name.out12-後臺執行 - nohup ./sh &
python nohup linux 後臺執行輸出
遇到問題 nohup python flush.py & 這樣執行,生成了nohup.out檔案,但是內容始終是空的,試了半天也不行。浪費了不少時間。原因 python的輸出又緩衝,導致out.log並不能夠馬上看到輸出。 &nb
linux後臺執行python程式 nohup
nohup python -u test.py > out.log 2>&1 &nohup sh **.sh > /dev/null 2>&1 & 如上所示:nohup 和 & 組合了後臺執行程式。 可以輸出到 o
nohup 命令:後臺執行命令、指令碼
轉載出處:AllenW nohup 命令 用途:不掛斷地執行命令。 語法:nohup Command [ Arg … ] [ & ] 描述:nohup 命令執行由 Command 引數和任何相關的 Arg 引數指定的命令,忽略所有結束通話(SIGHUP)訊號。在登出後使用 n
nohup和&後臺執行,程序檢視及終止 詳解
nohup 和重定向 功能一樣,可用於定時啟動 1.nohup 用途:不掛斷地執行命令。 語法:nohup Command [ Arg … ] [ & ] 無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 n
linux後臺執行命令:&和nohup詳解
& 當在前臺執行某個作業時,終端被該作業佔據;可以在命令後面加上& 實現後臺執行。例如:sh test.sh & 適合在後臺執行的命令有f i n d、費時的排序及一些s h e l l指令碼。在後臺執行作業時要當心:需要使用者
Linux的後臺執行:&和nohup
我們在使用Linux伺服器的時候,一般是使用終端利用SSH協議登入的。當你需要同時進行一些作業,但又不想開啟多個終端的話就需要用到後臺執行。 & sh test.sh & 一些費時的作業可以這樣放在後臺執行,但需要注意的是後臺執行的作業如果有輸出,一樣會輸出
伺服器部署之nohup與程式的後臺執行
# 1.後臺啟動程式 nohup Command [ Arg … ] [ & ] # nohup命令 引數可選但不是必須的,又需要看文件既可 # 舉例 # 在後臺執行 main.py的python指令碼 nohup python main.py
批處理檔案後臺執行
.bat批處理檔案在後臺執行,需要在程式碼頭部加一段程式碼。 @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)
linux後臺執行命令:&和nohup
當我們在終端或控制檯工作時,可能不希望由於執行一個作業而佔住了螢幕,因為可能還有更重要的事情要做,比如閱讀電子郵件。對於密集訪問磁碟的程序,我們更希望它能夠在每天的非負荷高峰時間段執行(例如凌晨)。為了使這些程序能夠在後臺執行,也就是說不在終端螢幕上執行,有幾種
linux 後臺執行命令:&和nohup
1.& 當在前臺執行某個作業時,終端被該作業佔據;可以在命令後面加上& 實現後臺執行。例如:sh test.sh & 適合在後臺執行的命令有f i n d、費時的排序及一些s h e l l指令碼。在後臺執行作業時要當心:需要使用者互動的命令不要放在後臺執
讓python在伺服器後臺執行(nohup)
網上有很多nohup的例子,SSH連線伺服器後,使用nohup python xxxxx.py &就可以有效實現。但是使用後發現並不管用,研究了很多天不知道如何解決。後來偶然發現使用完nohup後,千萬不能直接關閉SSH,要使用exit退出shell。再用外網訪問一下