當在終端工作時血筑,可能一個持續(xù)運行的作業(yè)占住屏幕輸出逸雹,或終端退出時導致命令結束。為了避免這些問題云挟,可以將這些進程放到后臺運行,且不受終端關閉的影響转质,可使用下面的方法:
nohup command > myout.file 2>&1 &
1 后臺執(zhí)行命令
1.1 命令&
在命令后面加上&
實現(xiàn)后臺運行(控制臺關掉(退出帳戶時)园欣,作業(yè)就會停止運行)
command &
例:python run.py &
1.2 命令nohup
nohup
命令可以在你退出帳戶之后繼續(xù)運行相應的進程。nohup就是不掛起的意思( no hang up)
nohup command &
例:nohup run.py &
2 kill進程
執(zhí)行后臺任務命令后休蟹,會返回一個進程號沸枯,可通過這個進程號kill掉進程。
kill -9 進程號
3 輸出重定向
由于使用前面的命令將任務放到后臺運行赂弓,因此任務的輸出也不打印到屏幕上了绑榴,所以需要將輸出重定向到文件中,以方便查看輸出內容盈魁。
- 將輸出重定向到 file(覆蓋)
command1 > file1
- 將輸出重定向到 file(追加)
command1 >> file1
- 將 stdout 和 stderr 合并后重定向到 file
- 2>1代表什么翔怎,2與>結合代表錯誤重定向,而1則代表錯誤重定向到一個文件1杨耙,而不代表標準輸出赤套;換成2>&1,&與1結合就代表標準輸出了珊膜,就變成錯誤重定向到標準輸出.
command1 > file1 2>&1
完整寫法:
nohup command >out.file 2>&1 &
4 其他
- nohup執(zhí)行python程序時容握,print無法輸出
- 這是因為python的輸出有緩沖,導致nohup.out并不能夠馬上看到輸出
- python 有個-u參數(shù)车柠,使得python不啟用緩沖
nohup python -u test.py > nohup.out 2>&1 &