【发布时间】:2012-03-19 12:40:28
【问题描述】:
我正在将收割线放入 rake 任务中,以杀死一些额外生成的 ruby 任务,因为它们有时会以某种方式爬行。
system "ps aux | grep 'namespace:taskname' | grep ruby | grep -v grep | awk '{print $2}' | xargs kill -9; echo 'Reaped old namespace:taskname processes.'"
我想在其中添加grep -v $PID_OF_CURRENT_TASK,以确保我不会终止当前正在运行的任务。
我如何获得该 PID?
【问题讨论】:
-
您可以用精心起草的
pkill或killall调用替换整个管道,或者至少用pgrep替换此管道的第一部分。这些命令更安全,读者也更容易理解。