Linux

start-stop-daemon 保存錯誤的 PID

  • February 29, 2016
$ ps aux | grep svn
root      **4458** ... /usr/bin/svnserve -d -r /var/svn
manuel    4466 ... grep --color=auto svn
$ sudo kill **4458**
$ sudo rm /var/run/svnserve.pid
$ sudo start-stop-daemon --start --make-pidfile --pidfile /var/run/svnserve.pid --exec /usr/bin/svnserve -- -d -r /var/svn
$ cat /var/run/svnserve.pid
**4474**
$ ps aux | grep svn
root     **4477**  ... /usr/bin/svnserve -d -r /var/svn
manuel    4480     ... grep --color=auto svn

為什麼 start-stop-daemon 保存錯誤的 pid?

-d在 svnserve 中使用了該標誌,這意味著 svnserve 分叉,並且子程序將具有與父 svnserve 程序不同的 pid。

start-stop-daemon不知道子程序 pid。

建議:

  • 使用pid-filefrom svnserve 來確定 pid 號(並刪除make-pidfile參數。)
  • 在 svnserve 中禁用分叉,並配置start-stop-daemon為執行此操作(底部有一個範例manpage

可能是因為 svnserve 使其成為自己的 pidfile。

引用自:https://serverfault.com/questions/457748