Linux-nohup和&在启动服务时的作用

当我们通过java -jar命令启动一个jar包时,最简单的就是用java -jar xxx.jar命令,但这个命令,当我们 Ctrl+C 时(这个操作会向系统发送SIGINT命令,SIGINT是signal:interrupt的意思,表示终止信号),或者断开SSH连接时(这个操作会向系统发送SIGHUP信号,SIGHUP是 signal:hang up的意思,表示挂起信号),服务进程将会退出。所以一般启动一个jar包会用nohup java -jar xxx.jar &的方式,当然这个命令还可以加上其他一些参数,nohup和&在这里主要是什么作用呢?

&

&的作用是使程序在后台运行,结果会输出到终端。

  • 使用 Ctrl+C 发送SIGINT信号,程序免疫
  • 关闭session发送SIGHUP信号,程序关闭

nohup

nohup的作用是不挂断运行命令,结果默认会输出到当前jar包目录下的nohup.out文件。

  • 使用 Ctrl+C 发送SIGINT信号,程序关闭
  • 关闭session发送SIGHUP信号,程序免疫

结论

同时使用nohup和&配合来启动程序,可以免疫SIGINT信号和SIGHUP信号。

------ 本文完 ------