/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}