freebsd pid 文件未创建

freebsd pid 文件未创建

/var/run 文件夹中未创建 Pid 文件。

rc.d 脚本:

#!/bin/sh

. /etc/rc.subr

name=phpcgi
rcvar=phpcgi_enable
pidfile=/var/run/${name}.pid
command=/usr/local/bin/php-cgi

load_rc_config $name
run_rc_command "$1"

它工作正常,但问题出在 pid 文件上。当我尝试“service phpcgi stop”时,它找不到它。权限是正确的。我该如何修复它?

答案1

尝试打开跟踪,让脚本告诉你它在每个步骤中做了什么。你会得到很多输出,所以我建议使用会话来捕获它script。将脚本的第一行替换为

#!/bin/sh -x

然后运行:

# script phpcgi-trace
# service phpcgi start
# service phpcgi stop
# ^D

该文件phpcgi-trace将包含脚本尝试执行的所有操作的记录。搜索它以查找有关它为何不删除 pidfile 的线索。

编辑

请注意,pidfile=rc 脚本中的这一行用于说明rc如何检查受控程序的状态或如何停止它。它不是用于说明rc如何编写 pidfile - 这是受控程序的责任。

如果 phpcgi 在启动时没有写入 pidfile,最简单的做法就是省略该pidfile=行,然后rc使用进程名称来检查状态等。

答案2

pidfile参数仅由 rc 脚本用来检查进程是否已在运行。脚本不会为您创建文件。您正在运行的程序必须自行创建该文件。

或者,你可以将此行添加到 RC 脚本和 pid 文件的末尾应该被创建。

echo ${rc_pid} > ${pidfile}

相关内容