1

我使用 setsid 命令启动一个进程(一个 websocket 服务器):

setsid python mod_pywebsocket/standalone.py -p 12345

但是我怎么能阻止它呢?我确定它现在正在运行,只是不知道如何获取 pid 并杀死它。

4

1 回答 1

1

你可以试试这个技巧:

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=$(...) ,因为里面的命令在关闭它的输出流之前不会返回,所以这里有一个虚拟的'while read X'循环,它将读取第一行并且不会等到命令关闭标准输出,所以你必须在那个循环中做任何你需要的事情,只有一行输出,所以它只会执行一次。

于 2014-11-30T01:11:16.770 回答