美文网首页
防止 python deamon 进程被干掉

防止 python deamon 进程被干掉

作者: aaaron7 | 来源:发表于2018-05-20 15:05 被阅读135次

障碍

最近需要在一台 remote 的 gpu 机器上跑 training 的脚本,terminal 不可能一直开着,所以肯定都是要以 daemon 方式来跑。

众所周知,最简单的 daemon 运行的方式就是在命令后加 &,再配合将输出重定向到一个 log 文件,这样就可以实现即以 daemon 跑,也能随时查看 output 和error 相关的信息。比如

./run.sh > output.log &

不过最近几天,我发现每次到公司查看昨晚上的任务情况,都发现进程在我下班后不久就被干掉,output.log 中也没有任何的错误信息。实在是相当诡异。

求索

google 了一番,没什么有建设性的意见,一开始以为是不是 & 方式的 daemon 天生有缺陷,还研究半天怎么用 python fork 出 daemon process。但越试越感觉,可能这个不是主要原因,在玩了几次 python-daemon 之后,还是决定回到源头尝试解决。

其中有一个回答提到了可能因为脚本占用内存过大导致被系统 kill 掉(OOM),这个时候脚本本身是不会输出错误的。于是就去 /var/log/system.log 里边儿翻 OOM,结果 OOM 没翻到到翻到了一个 "Received SIGRTMIN+24 from PID 27041 (kill)." , 继续 google 了一下发现。这是系统进程 systemd 发出的信号,(systemd 可以理解为调度 daemon process 的进程)。

为什么 systemd 没事儿会来干我的脚本呢? 因为 systemd 默认会在一个 user detach 的时候,干掉这个 user 启动的所有 process,不管你是不是 daemon。所以当我的本地电脑休眠超过一定时间时,远程的机器自动 logout user, 然后触发 systemd 干掉了我的脚本,即便我的脚本有 & 加持。

解题

知道问题的原因那就简单了,简单 google 一下就能知道, 我们只需要修改 /etc/systemd/logind.conf 中,将 KillUserProcesses=no 反 comment 即可。代表让 systemd 不要干掉 user process。

相关文章

  • 防止 python deamon 进程被干掉

    障碍 最近需要在一台 remote 的 gpu 机器上跑 training 的脚本,terminal 不可能一直开...

  • linux开发之deamon的写法

    什么是deamon,deamon既一个运行中后台的服务进程,不需要用户输入也不控制输出,固定的或者周期性的提供一些...

  • app启动

    启动方式 ColdStart -- 冷启动此种方式最为耗时 一般是因为进程被干掉 系统需要重新fork进程进行一系...

  • Android Foreground Service

    为了防止后台服务被系统干掉,我们需要将服务提升为前台服务。 示例代码: 需要在AndroidManifest 添加...

  • 线上问题深度追查:信号处理函数中的死锁

    一、背景 svc是deamon-tools工具集中用户守护进程的服务,头条目前在线上使用它来保证服务的存活(目前正...

  • 老大被干掉以后,老二怎么办?

    一、 这两年老大被干掉的不少。去年,王石被干掉了;最近不久,贾跃亭被干掉了。 老大被干掉之后,最危险的人是老二。这...

  • Laravel --实战篇 UUID(唯一识别码)

    一、ramsey/uuid的实现方式 机器hash(防止多台机器之间ID冲突)进程ID(防止多进程冲突)时间戳(秒...

  • linux vim常用操作

    进程 查看python进程 ps -ef | grep python 查看进程详细信息 先执行cd /proc/{...

  • Python多进程

    Python多进程 Python中进程创建方式有两种: fork:使用Python提供的os模块。 Python在...

  • mac上查看端口进程和杀死进程

    查看端口命令 我们会看到端口7001对应的进程pid(process id),想要干掉这个进程那么就使用kill ...

网友评论

      本文标题:防止 python deamon 进程被干掉

      本文链接:https://www.haomeiwen.com/subject/yoazdftx.html