2012-07-04 88 views
0

我的系统是Ubuntu的10使用shell变量时,SYS功能

这里是我的代码:

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

PID是process_string的进程ID(只有一个匹配)

但是当我运行这个sh时,我不会杀死这个进程

我该怎么办解决这个问题?

回答

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

您可能需要使用pgrep来获得,而不是PID,或pkillkillall只是按名称杀死直接(注意与上一个,顾名思义它会杀死所有指定程序的实例)。

+0

thx〜它的工作原理是任何sys commond都可以直接在shell脚本中调用吗?以及** **的用法是什么? – sashimi

+0

反引号和'$(...)'在功能上是相同的,'$(...)'形式只是处理引用(很多)更好的东西,并且可以在降价中正确显示。它们被用来捕获输出,例如将其分配给一个变量或直接放在命令行上('kill -9 $(pgrep process_string)')。 – Kevin

+0

我会检查** pkill **和** killall **您稍后提到。感谢您凯文! :) – sashimi