$ 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?
答案1
您-d
在 svnserve 中使用了标志,这意味着 svnserve 分叉,并且子进程将具有与父 svnserve 进程不同的 pid。
start-stop-daemon
不知道子进程的 pid。
建议:
- 使用
pid-file
svnserve 来确定 pid 号码(并删除参数make-pidfile
。) - 在 svnserve 中禁用分叉,并配置
start-stop-daemon
为也执行此操作(底部有一个例子manpage
)
答案2
可能是因为 svnserve 生成了它自己的 pidfile。