freebsd的pid文件没有创build

未在/ var / run文件夹中创build的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文件。 当我尝试“服务phpcgi停止”它找不到它。 权限是正确的。 我如何解决它?

尝试打开跟踪,使脚本告诉你在每一步中它正在做什么。 你会得到很多的输出,所以我build议使用script会话捕获它。 用脚本replace脚本的第一行

 #!/bin/sh -x 

然后运行:

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

phpcgi-trace文件将包含脚本尝试执行的所有操作的logging。 通过searchfind为什么它不丢弃pidfile的线索。

编辑

请注意,rc脚本中的pidfile=行会告诉rc如何检查受控程序的状态,或者如何停止它。 这不是要告诉rc编写一个pid文件 – 这是受控程序的责任。

如果phpcgi在启动时没有写入pid文件,最简单的办法就是省略pidfile=行,让rc使用进程名来检查状态等。

pidfile参数只被rc脚本用来检查进程是否已经在运行。 该脚本不会为您创build文件。 您正在运行的程序必须创build文件本身。

或者,您可以将此行添加到RC脚本的末尾,并创buildpid文件。

 echo ${rc_pid} > ${pidfile}