分叉时从 rc.local 自动运行不起作用 (&)

Posted

技术标签:

【中文标题】分叉时从 rc.local 自动运行不起作用 (&)【英文标题】:Auto run from rc.local not working when forked (&) 【发布时间】:2019-11-13 20:55:45 【问题描述】:

我在尝试让我的 python 脚本在启动时运行时遇到了很多问题。我基本上已将其范围缩小到分叉问题。

我在 RPi3 上运行。

如果我有,在 rc.local 中:

python /home/pi/script.py

它似乎运行了,但是只要我添加了

python /home/pi/script.py &

我得到零结果。 如果我在启动后手动运行 rc.local,则 fork 似乎可以按预期工作。 我还尝试将 rc.local 指向 /home/pi 中的 .sh 文件,结果完全相同。这甚至发生在基本的 echo 命令中:

echo "Hello world" > /tmp/log.txt

echo "Hello world" > /tmp/log/txt &

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我猜这与 rc.local 脚本的所有子进程在到达脚本末尾时立即被终止这一事实有关,如果文件正在作为后台进程运行 python 脚本。

叉子会在它做任何有用的事情之前被杀死。

如果您希望进程在 rc.local 结束后继续运行,则应将该进程作为守护进程运行。

关于如何做到这一点的一些例子可以在这个问题中找到:Run bash script as daemon

【讨论】:

以上是关于分叉时从 rc.local 自动运行不起作用 (&)的主要内容,如果未能解决你的问题,请参考以下文章

Centos7系统rc.local不起作用问题

给Debian9 没有rc.local的添加开机自动启动

Linux系统中设置开机自动执行的命令

Linux实现开机自动运行普通用户脚本

多次分叉后写入管道不起作用

关于开机自启动文件rc.local的使用与取消