1. nohup指令基本概念:
nohup: 不掛斷的運行,並沒有后台運行功能,用nohup運行命令可以使命令永久執行下去,和用戶終端沒有關系,斷開SSH不影響運行,&是后台運行.
- nohup 命令運行由 Command參數和任何相關的 Arg參數指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運行后台中的程序。
- nohup 是 no hang up 的縮寫,就是不掛斷的意思。
- nohup命令:正在運的進程,在退出帳戶時該進程也不會結束,可以使用nohup命令。該命令可以在退出帳戶/關閉終端后繼續運行進程。
- 在缺省情況下該作業的所有輸出都被重定向到一個名為nohup.out的文件中。
2. nohup指令基本使用格式:
nohup command > myout.file 2>&1 &
如上所示,在終端上運行上面形式的命令即可在關閉終端后繼續運行后台指令command,myout.file功能主要用來保存command命令出現的error,出現錯誤或異常就會將相關信息保存在myout.file中。
相關的數字及符號的意義代表如下所示:
- 0 – stdin (standard input)
- 1 – stdout (standard output)
- 2 – stderr (standard error)
- & – bgrun (run in back ground)
上述指令重定向的意義在於,將stderr > stdout > myout.file.
3. 實測結果:
nohup python2 Sys_Status_MysqlSave.py > Mysql_out.log 2>&1 &
接下來我們需要使用jobs指令(或者:ps -aux | grep python)來查看后台運行的程序:
jobs
注:只有在當前命令行中使用 nohup和& 時,jobs命令才能將它顯示出來。如果將他們寫到 .sh 腳本中,然后執行腳本,是顯示不出來的。
ps -aux | grep python
Reference:
nohup指令:https://www.cnblogs.com/jinxiao-pu/p/9131057.html
ps以及jobs區別:https://blog.csdn.net/maihilton/article/details/82781897