学习一个指令,最好从官方文档看:
nohup 不挂断的运行
runs the given command with hangup signals ignored, so that the command can continue running in the background after you log out. Synopsis:
官方是这么介绍的:在忽略挂起信号的情况下运行给定的命令,以便在注销后命令可以在后台继续运行。
可以这么理解:不挂断的运行,注意并没有后台运行的功能,就是指,用nohup 运行命令可以是命令永远运行下去。
& 指后台运行
example
nohup java -jar demo.jar
ssh连接中,运行这条指令,你会发现进程中有了demo.jar 这条进程,但它并不在后台运行
这时你无法在当前ssh连接中进行其他命令,因为它不是后台运行,你ctrl+c,这条进程会消失。
所以nohup 并不支持后台运行,它是忽略内部的挂断信号,不挂断运行
那么
nohup COMMAND &
把 nohup与& 结合在一起,这样就可以不挂断的永久在后台执行
example 2
nohup java -jar demo.jar 2>&1 &
以上命令:
不挂断的后台启动 demo.jar,
"2>&1" 表示 错误和输出都传到nohup.out文件中,默认状态只把输出输出到nohup.out文件中
nohup 命令默认输出到nohup.out文件中
nohup java -jar demo.jar >./log.txt 2>&1 &
默认输出文件修改为当前目录下 log.txt文件
脚本记录
start.sh
#!bin/bash
# 最简洁的启动
resource_name=xxxx.jar
nohup java -jar ./target/$resource_name >/dev/null 2>&1 &
echo $!>process.pid
echo start success!
stop.sh
#!/bin/bash
kill -9 `cat process.pid`
echo stop success!