Linux下java nohup 后台运行关闭后进程停止的原因,不挂断后台运行命令

时间:2023-03-08 17:46:40
Linux下java nohup 后台运行关闭后进程停止的原因,不挂断后台运行命令

Linux下java nohup 后台运行关闭后进程停止的原因,不挂断后台运行命令

今天写sh脚本发现一终止命令程序就停止运行了,检查了很久才发现后面少了个&字符导致的!
错误写法:nohup java -jar /home/zdzjar.jar >/home/logs/zdz.out 2>&1
正确写法:nohup java -jar /home/zdzjar.jar >/home/logs/zdz.out 2>&1 &
在后面加上 & 后就会自动退出命令在后台运行了。真是细节决定成败!

-------------------------
nohup 用途:LINUX命令用法,不挂断地运行命令。   

语法:nohup Command [ Arg ... ] [ & ]   

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。   

如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。   

退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

nohup命令及其输出文件   

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。
  
该命令的一般形式为:nohup command &   使用nohup命令提交作业   

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:   
nohup command > myout.file 2>&1 &   
在上面的例子中,输出被重定向到myout.file文件中。  
 
nohup java -jar zdzjar.jar > nohup.out 2>&1 &
//关闭进程
ps -aux | grep java
kill -s 9 xxx
xxx代表上一步查出的进程ID

可以直接用一句话执行
ps aux |grep zdzjar.jar |grep -v grep |awk '{print $2}' |xargs kill -9
或者
ps -ef|grep -v grep|grep zdzjar.jar | grep java |awk '{print "kill -9 "$2}'|sh