php - 在 Apache + PHP + Bash 中让进程 fork 并独立于父进程

标签 php linux bash

我有一个像这样调用 liquidsoap 的 bash 脚本

/bin/sh -c "echo\$\$ >\"${sdir}/pid/${sfile}.pid\"&& exec liquidsoap\"${sdir}/liq/${ sfile}.liq\">/dev/null 2>&1 || rm\"${sdir}/pid/{$sfile}.pid\""&

(为了便于阅读,填充了变量可能看起来像这样)

/bin/sh -c "echo\$\$ >\"/radio/pid/station.pid\"&& exec liquidsoap\"/radio/liq/station.liq\">/dev/null 2>&1 || rm\"/radio/pid/station.pid\""&

在 PHP 中,脚本是用

调用的

return shell_exec("{$this->streamBase}/scripts/{$this->streamName} 启动配置 {$stationConfig}");

我的问题是,我只需要重新启动 Apache,当我这样做时,它也会终止液体肥皂实例。我想让它完全独立于 Apache 运行,这样我就可以重新启动 Apache,它们将继续运行。

我不确定我该如何实现。

编辑: 我试过改变

/bin/sh -c "echo\$\$ >\"${sdir}/pid/${sfile}.pid\"&& exec liquidsoap\"${sdir}/liq/${ sfile}.liq\">/dev/null 2>&1 || rm\"${sdir}/pid/{$sfile}.pid\""&

(/bin/sh -c "echo\$\$ >\"${sdir}/pid/${sfile}.pid\"&& exec liquidsoap\"${sdir}/liq/$ {sfile}.liq\">/dev/null 2>&1 || rm\"${sdir}/pid/{$sfile}.pid\""& ) &

nohup/bin/sh -c "echo\$\$ >\"${sdir}/pid/${sfile}.pid\"&& exec liquidsoap\"${sdir}/liq/${sfile} .liq\">/dev/null 2>&1 || rm\"${sdir}/pid/{$sfile}.pid\""&

如果我重新启动(或停止/启动)Apache,也不会让 liquidsoap 保持运行。当 Apache 停止时,这些进程也会停止。

最佳答案

要向上传播退出代码, parent 和祖 parent 必须存在,如果你杀死祖 parent ,也就是 apache,是的,你杀死了子孙,除非他们离开家庭并成为守护进程。

关于php - 在 Apache + PHP + Bash 中让进程 fork 并独立于父进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671985/

相关文章:

php - Laravel Eloquent 按关系表列排序

php - PHP 是否有一种工具可以减少类和构造函数中参数声明和初始化的重复?

php - 如何从实时服务器上的图像文件夹中获取图像?

php - WP API 返回无效的用户 ID

linux - 如何使用主设备号和次设备号获取设备文件名

string - 如何检查一个单词是否包含字符串 bash 中的所有字母

linux - 在终端中显示大数字

linux - Varnish http 加速器失败

regex - 理解正则表达式

bash - sge 获取脚本中的脚本位置