为什么进程被nohup杀死

Mouseferi

我想在后台运行一个进程而不在shell出口处杀死它,根据Nohup的概念,以下命令应该起作用,直到我手动杀死它:

nohup uwsgi --http :8008  --module crawled_data_center.wsgi > /dev/null &

我以root用户身份登录到Shell,但是退出Shell后,该过程终止了。似乎很奇怪,因为我已经nohup在多个项目中使用了几次并且可以正常工作,但是在这种情况下,我很烂,这是什么问题,如何在后台运行它而又不会在shell出口处将其杀死?

更新:

我用以下方法处理:

$ nohup uwsgi --http :8008  --module crawled_data_center.wsgi > /dev/null &
$ disown -l
$ disown -h JOBID

但是我的问题是,有什么可能SIGHUP会导致死亡nohup&

这是内容/etc/systemd/logind.conf

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
Controllers=blkio cpu cpuacct cpuset devices freezer hugetlb memory perf_event net_cls net_prio
ResetControllers=
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#IdleAction=ignore
#IdleActionSec=30min
狐狸

据我所知,有两种情况可能导致进程在受到的保护后被终止nohup,并且每种情况都有不同的解决方法。

一种可能性(在这里似乎并非如此)是系统使用systemd,其中logind.conf配置了KillUserProcesses=yes在这种情况下,关闭终端不会造成问题,但是注销系统会造成问题。在这种情况下,解决方法是使用

$ systemd-run --scope --user [command]

这基本上只是告诉systemd它不应终止该进程。

另一种可能性是,产生的进程实现了自己的处理程序,SIGHUP处理程序将覆盖对的保护nohup在这种情况下,即使您保持登录状态,关闭外壳程序也会立即出现问题。您可以使用以下方法进行检查:

$ nohup [command] &
$ grep Sig /proc/$!/status

你应该看到一条线

SigIgn: 0000000000000001

(或其他十六进制数字字符串)。SIGHUP是信号编号1,因此,如果此大端十六进制数字设置了它的第一个(最低有效)位(即,最后一位是1、3、5、7、9,B,D或F中的一个),然后SIGHUP被忽略。否则,程序将安装自己的处理程序,以覆盖对的保护nohup

在这种情况下,解决方案是使用disown

nohup [command] & disown

这会将进程从Shell的作业列表中删除,从而避免SIGHUP了首先发送该进程

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么nohup后台进程被杀死?

来自分类Dev

为什么docker exec会在退出时杀死nohup进程?

来自分类Dev

为什么我无法取消NOHUP进程?

来自分类Linux

为什么kill -2无法杀死进程?

来自分类Dev

为什么Linux会杀死我的进程?

来自分类Dev

为什么我杀死openarena进程失败?

来自分类Dev

什么是<defunct>进程,为什么它不被杀死?

来自分类Dev

当在OS X上杀死Python进程时,为什么不杀死子进程呢?

来自分类Dev

为什么nohup无法使ssh-agent进程退出会话?

来自分类Dev

为什么Nohup无法在特定进程上工作

来自分类Dev

nohup 进程的进程 ID 不断更新 - 无法杀死进程

来自分类Dev

为什么杀死该子进程会引发ProcessLookupError?

来自分类Dev

“ kill <PID>”不是真正的杀死进程,为什么?

来自分类Dev

为什么bash在杀死进程后显示“已终止”?

来自分类Dev

为什么杀死进程在控制台中打印

来自分类Dev

为什么这些守护进程线程不会被杀死?

来自分类Dev

为什么我会“进程被杀死”?

来自分类Linux

为什么父进程在Linux中被杀死后,子进程仍然存在?

来自分类Dev

如果exec.Start()创建的进程的父进程被SIGINT杀死,为什么会退出呢?

来自分类Dev

为什么子进程无法成功杀死旧的正在运行的进程?

来自分类Dev

为什么对于要杀死的进程,我经常收到“无此进程”的信息?

来自分类Dev

手动杀死进程后,为什么在使用“ jobs”命令时显示进程?

来自分类Dev

在给定时间后杀死nohup进程

来自分类Dev

为什么当终端被杀死时我执行的进程会死亡

来自分类Dev

当几乎不使用交换时,为什么OOM杀手会杀死进程?

来自分类Dev

为什么我不能总是用 Ctrl-C 杀死 docker 进程?

来自分类Dev

为什么我不能用此C代码杀死进程组?

来自分类Dev

为什么我没有权利从Windows的命令提示符处杀死进程?

来自分类Linux

如果使用了waitFor,为什么杀死JVM还会终止其子进程?

Related 相关文章

  1. 1

    为什么nohup后台进程被杀死?

  2. 2

    为什么docker exec会在退出时杀死nohup进程?

  3. 3

    为什么我无法取消NOHUP进程?

  4. 4

    为什么kill -2无法杀死进程?

  5. 5

    为什么Linux会杀死我的进程?

  6. 6

    为什么我杀死openarena进程失败?

  7. 7

    什么是<defunct>进程,为什么它不被杀死?

  8. 8

    当在OS X上杀死Python进程时,为什么不杀死子进程呢?

  9. 9

    为什么nohup无法使ssh-agent进程退出会话?

  10. 10

    为什么Nohup无法在特定进程上工作

  11. 11

    nohup 进程的进程 ID 不断更新 - 无法杀死进程

  12. 12

    为什么杀死该子进程会引发ProcessLookupError?

  13. 13

    “ kill <PID>”不是真正的杀死进程,为什么?

  14. 14

    为什么bash在杀死进程后显示“已终止”?

  15. 15

    为什么杀死进程在控制台中打印

  16. 16

    为什么这些守护进程线程不会被杀死?

  17. 17

    为什么我会“进程被杀死”?

  18. 18

    为什么父进程在Linux中被杀死后,子进程仍然存在?

  19. 19

    如果exec.Start()创建的进程的父进程被SIGINT杀死,为什么会退出呢?

  20. 20

    为什么子进程无法成功杀死旧的正在运行的进程?

  21. 21

    为什么对于要杀死的进程,我经常收到“无此进程”的信息?

  22. 22

    手动杀死进程后,为什么在使用“ jobs”命令时显示进程?

  23. 23

    在给定时间后杀死nohup进程

  24. 24

    为什么当终端被杀死时我执行的进程会死亡

  25. 25

    当几乎不使用交换时,为什么OOM杀手会杀死进程?

  26. 26

    为什么我不能总是用 Ctrl-C 杀死 docker 进程?

  27. 27

    为什么我不能用此C代码杀死进程组?

  28. 28

    为什么我没有权利从Windows的命令提示符处杀死进程?

  29. 29

    如果使用了waitFor,为什么杀死JVM还会终止其子进程?

热门标签

归档