改变已经运行过程的信号configuration(SIGHUP)

假设我在后台启动了Linux进程。 这不是一个守护进程,只是一个实用程序。 如果得到SIGHUP,就会被杀死。

我没有采取“nohup”的预防措施。 它比我想象的要耗费更多的时间。
运行4小时后,ssh会话可能会断开连接。 但我不想失去这个过程。
我想阻止它被SIGHUP杀死。

是否有可能做相当于

signal(SIGHUP, SIG_IGN); 

到这个过程没有重新启动它?

谢谢

使用disown(1)

disown:disown [-h] [-ar] [jobspec …]从当前shell中删除作业。

 Removes each JOBSPEC argument from the table of active jobs. Without any JOBSPECs, the shell uses its notion of the current job. Options: -a remove all jobs if JOBSPEC is not supplied -h mark each JOBSPEC so that SIGHUP is not sent to the job if the shell receives a SIGHUP -r remove only running jobs 

完全从终端上分离出一个进程

“disown”是一个bash内建的,从shell的工作列表中删除一个shell作业。 这基本上意味着你不能再使用“fg”,“bg”,但更重要的是,当你关闭你的shell时,它不会挂起或者发送一个SIGHUP给那个孩子了。 与“nohup”不同,“disown”在启动和后台处理后使用。

Diswon是这次的好解决方案。 对于将来,一个很好的解决方法是使用“屏幕”工具:如果您的SSH会话断开连接,您可以重新连接并重新获取您仍在运行的屏幕。

但是,我不知道如何将当前进程拖到屏幕会话中,所以它不会解决您当前的情况。