場景:程序在后台運行,即關閉終端之后仍然運行
注意,后台執行的程序一定是不結束的程序,如無限循環;
基礎命令
& 符號:后台執行程序,需放在命令后面
> 符號:輸出重定向到指定文件
方法1
python test111.py &
這樣雖然可以實現后台運行,但是在關閉終端時必須用 exit 退出,如果直接關閉窗口,則后台不運行;
這樣寫會輸出到終端,所以需要重定向輸出 python test111.py > log.log &
方法2
利用 shell 腳本:創建文件 xx.sh
#!/usr/bin/bash cd /home/xxxxx/pythoncode python -u test111.py
第一行表示此腳本的執行方式;第二行進入待執行的程序目錄;第三行執行程序;
運行命令 cmd.sh & 【注意,這種方式運行會和第一種方法一樣,輸出到終端】
也需要重定向輸出
運行時報錯 /bin/bash^M: bad interpreter,參考下面鏈接
方法3--推薦
在命令行執行 nohup command &,command 即我們需要執行的命令,如 python test.py,;不加 & 也可執行,但不是后台執行
ps -e 查看后台運行程序,就能看到是否運行成功
程序文件中本來輸出到終端的內容會默認輸出到 nohup.out 文件中,【經測試 print 無法輸出,raise 可輸出】
如果想輸出到指定文件,重定向
nohup python test111.py > log.log &
命令提示 是 重定向 stderr 到 stdout,可見只有 raise 可輸出
方法4
nuhup xxx.sh >log.log &
更多內容參考:
https://www.cnblogs.com/qlshine/p/5926743.html
https://www.cnblogs.com/master-pokemon/p/5790783.html
https://cloud.tencent.com/developer/article/1398550
https://www.jianshu.com/p/4041c4e6e1b0
https://blog.csdn.net/batuwuhanpei/article/details/51504722
https://blog.csdn.net/asty9000/article/details/86506662 linux /bin/bash^M: bad interpreter的解決辦法