在服务器上,为了退出终端,程序依然能够运行,需要设置程序在后台运行。
有一种常用的方式:nohup
nohup命令模板
nohup ./xxx.sh > xxx.log 1>&2 &
后台不挂起执行xxx.sh。标准输出、错误输出,输出到xxx.log文件
此种情况,程序会再后台执行,退出用户或关闭客户终端,不影响程序运行。如想关闭程序,可通过kill命令关闭。
nohup ./xxx.sh > /dev/null 1>&2 &
后台不挂起执行xxx.sh。标准输出、错误输出,均不输出
如果是python程序则可以这么写:
nohup python -u test.py > test.log 2>&1 &
含义解释
nohup 不挂起的意思
python test.py python运行test.py文件 (注意:如果是python3环境则写python3)
-u 代表程序不启用缓存,也就是把输出直接放到log中,没这个参数的话,log文件的生成会有延迟
test.log 将输出日志保存到这个log中
2>1 2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
2>&1 换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
& 最后一个& ,代表该命令在后台执行
可以通过jobs命令查看nohub命令下运行的所有后台进程
也可以通过ps命令查看
比如查看后台python进程:
ps -aux | grep python3
Kill命令
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明:
-l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
-s <信息名称或编号> 指定要送出的信息。
[程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。
例如:
kill -9 test.sh
强制关闭test.sh这个进程
参考文章
https://blog.csdn.net/xiongzaiabc/article/details/86637773
https://www.jianshu.com/p/cb25cca2f8da