0

我的系统是 Ubuntu 10

这是我的代码:

#!/bin/bash
pid = `ps -ef | grep process_string | /usr/bin/awk '{print $2}'`
`kill -9 $pid`

pid是process_string的进程id(只有一个匹配)

但是当我运行这个 sh 时,我不会终止进程

我该如何解决?

4

1 回答 1

1
  1. 您不能在作业的任何一侧都有空间。在这种情况下,它尝试pid使用 的参数=和 的标准输出来执行ps -ef ...
  2. 第二行将尝试执行 的输出kill -9 $pid,您不希望这样。
  3. $(...)比反引号更好用。
 #!/bin/bash
 pid=$(ps -ef | grep process_string | /usr/bin/awk '{print $2}')
 kill -9 $pid

您可能希望使用pgrep来获取 pid,或者pkill直接killall按名称杀死(小心最后一个,因为名称暗示它将杀死命名程序的所有实例)。

于 2012-07-04T14:37:49.000 回答