linux后台执行(nohup)之大坑

问题场景

通过xshell远程登录服务器,然后启动几个后台服务,验证后服务功能都正常,ok!
然后过了一段时间发现服务器有问题,排查之后发现,有一个服务莫名的挂了,通过日志定位到接收到SIGHUP信号,然后挂了!WTF???

问题分析

确认后台运行命令:

nohup ./myserver > myout.log 2>&1 &   

没有问题。
nohup启动服务后,关闭终端,重新登录

netstat -ntlp

服务没了。。。。

解决方案

  1. 临时解决方案:
    nohup执行命令后

    exit

    安全退出。OK,没问题了。

  2. 根本解决方案:在程序中捕捉SIGHUP信号

总结

此坑虽小,可不要贪杯啊!分分钟造成生产事故,顶不住!

参考链接:
https://blog.csdn.net/z_ryan/article/details/80952498

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nohup是一个Linux命令,用于在后台运行命令,即使用户退出或终端关闭,该命令也会继续运行。nohup命令通常与&符号一起使用,以便将命令放入后台运行。nohup命令的语法如下: nohup command [arg...] [> output.file] [&] 其中,command是要运行的命令,arg是命令的参数,output.file是输出文件的名称,&符号表示将命令放入后台运行。nohup命令通常用于长时间运行的命令,例如备份、编译、下载等。 ### 回答2: nohup是一种在Linux后台运行命令的方式,通常用于在关闭终端时仍然能够保持程序运行。在Linux中,所有的命令运行时都会使用终端窗口,如果关闭窗口或者退出终端,那么命令也会随之退出。但是,通过使用nohup命令,可以将一个命令或脚本的输出重定向到指定的文件,因此不会因为关闭终端而终止运行。 使用nohup命令非常简单,只需要在命令或脚本前加上nohup,并在后面指定输出文件即可: nohup command > output.txt & 其中,command是要执行的命令或脚本,output.txt是要输出的文件,&符号表示使命令在后台运行。此时,关闭终端也不会终止命令的运行。 另外,如果想要杀死一个后台运行的进程,可以使用kill命令。可以通过ps命令查找进程的PID号,然后使用kill命令停止进程。例如: ps -ef | grep "command" 该命令将显示所有包含"command"关键字的进程。找到要停止的进程的PID号,然后使用kill命令停止进程: kill PID 此外,nohup命令还可以将进程的stdout/stderr输出到/dev/null(空设备节点),这样将不会生成任何输出文件。 nohup command > /dev/null 2>&1 & 以上命令将标准输出和错误输出重定向到空设备节点,不会产生输出文件,同时保持命令在后台运行。 ### 回答3: nohupLinux中的一个命令,它用于在后台运行进程时,保证该进程不受终端断开的影响,从而使进程一直运行下去。其全称为“No Hang-Up”,意思是“不挂断”,通常用在需要长时间运行的命令上,比如用来进行数据分析、数据处理、文件备份等任务。nohup命令的格式为: nohup command [arg] & 其中,command表示要执行的命令,[arg]表示命令的参数,&表示将该命令放入后台执行nohup命令的使用方法如下: (1)使用nohup命令后,命令的输出会被重定向到一个文件nohup.out中,因此可以不必担心在退出终端后进程被关闭,还可以通过查看nohup.out文件来了解进程的运行状态。 (2)nohup命令可以与&符号结合使用,以使进程在后台运行。在使用nohup命令时,可以将待运行的命令括在一对引号之间,例如: nohup 'command arg1 arg2' & (3)如果要结束一个在后台运行的nohup进程,可以使用kill命令,例如: kill -9 进程号 其中,进程号可以通过ps命令来查找。 需要注意的是,nohup命令并不能保证命令一定执行成功,它只是确保在命令执行过程中我们不必担心因为关闭终端而导致命令被中断。因此,在使用nohup命令时,需要对命令的执行结果进行监测,并在必要时采取相应措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值