nohup 不挂断运行的命令,当终端或者账户关闭的时候,程序依旧运行。
当前的命令默认会把日志输出到nohup.out文件中
nohup java -jar XXX.jar &
指定输出文件
nohup java -jar XXX.jar >log.out &
查看后台启动命令
jobs
--显示后台运行的程序。每个作业前面都有一个作业的编号。
调回前台控制
fg + 编号
注意:
上面的运行方式会一直向nohup.out文件中追加内容,最终会导致文件会太大程序崩溃。
解决
nohup java -jar xxxx.jar >/dev/null 2>&1&
解释:后台运行 xxx.jar 程序,将标准错误输出合并到标准输出,然后标准输出重定向至 垃圾桶 /dev/null(说白了就是不输出任何信息)
命令详细分析
/dev/null :Linux下有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
1 :表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于”1>/dev/null”
2 :表示stderr标准错误输出 (stdout不包括stderr)
& :表示等同于的意思,2>&1,表示2的输出重定向等同于1
1 > /dev/null 2>&1 语句含义:
1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
最后一个&: 是让该命令在后台执行,就是关闭ssh窗口后,程序还在后台执行不会停掉