nohup忽略SIGHUP信号

今天遇到一个问题:开启终端启动gunicorn进程后台运行,终端不关闭时,可以导入excel,关闭终端后,不能导入excel。原因是,xlrd模块需要向控制台输出内容,终端关闭后,控制台消失,无法输出内容,会出现异常。

我的使用环境是,在三丰云上搭建的一个web系统,Django框架。
nohup忽略SIGHUP信号
上图是我的服务器配置

下面来说一下我的解决办法,使用nohup忽略SIGHUP信号:
nohup,故名思议就是忽略SIGHUP信号,一般搭配& 一起使用,&表示将此程序提交为后台作业或者说后台进程组。执行下面的命令

nohup gunicorn typeidea.wsgi:application -w 4 -b 0.0.0.0:9999 -t 300 --max-requests=10 &

在终端关闭后,nohup起到类似守护进程的效果,但是跟传统的守护进程还是有区别的

1、nohup创建的进程工作目录是你执行命令时所在的目录
2、0 1 2 标准输入 标准输出 标准错误 指向nohup.out文件
3、nohup创建的进程组中,除首长进程的父进程id变为1之外,其余进程依然保留原来的会话id、进程组id、父进程id,都保持不变