
Shell中,执行一个持续进行的指令,会"霸屏",即你想再执行其他指令,要么重开个shell终端,要么退出这个执行。
nohub,即 no hang up(不挂起),用于在系统后台不挂断地运行命令,Ctrl + C退出终端后命令依旧执行。
nohup Command [ Arg … ] [ & ]
参数释义:
Command:你需要要执行和挂起的命令
Arg:一些参数,用来指定输出文件的位置
&:让命令在后台执行,终端退出后命令仍旧执行,末尾加一下就行
关于Arg参数:
当前目录下$HOME/nohup.out 目录下> server.log写个测试的小脚本test1.sh:
# !/bin/bash
while true
do
echo "testing..."
sleep 2s
done
# chmod +x xx.sh加下执行权限
以下即输出到当前目录下的nohup.out,返回appending output to nohup.out即执行成功。

查看nohup.out,确实是每隔两秒输出一句testing…

此时,想中止执行,可杀掉对应的进程。ps -ef返回的第二列即PID。
ps -ef |grep -i key
kill -9 PID
ps -ef看到有两个test1.sh相关的进程,杀完第一个后,杀第二个,杀半天也不行,诡异的是它的PID一直在变,然后。。恍然大悟,这TM是gerp的进程,因为我过滤关键字带了test1.sh才显示。。。。。

nohup java -jar springboot-xxx.jar > server.log 2>&1 &
2>&1即将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。