我使用 setsid 命令启动一个进程(websocket 服务器):
setsid python mod_pywebsocket/standalone.py -p 12345
但是我该如何阻止它呢?我敢肯定它现在正在运行,只是不知道如何获取 pid 并杀死它。
你可以试试这个技巧:
setsid sh -c 'python mod_pywebsocket/standalone.py -p 12345 > /dev/null & echo $!' |
while read PID ; do
echo $PID
your stuff here
done
这将启动另一个 shell,它将在后台启动您的进程,并使用 $! 运算符打印其作业 ID。
你不能在这里写PID=$(...),因为里面的命令在关闭它的输出流之前不会返回,所以这里有一个虚拟的"同时读取X"循环,它将读取第一行,不会等到命令关闭stdout,所以你必须在该循环内做任何你需要的事情,只有一行输出,所以它只会执行一次。