【问题标题】:How to run a pkill when invoking a shell to execute a string of commands?如何在调用 shell 执行命令字符串时运行 pkill?
【发布时间】:2014-03-11 15:37:45
【问题描述】:

为了自动执行系统管理任务,我写下了下面这行 shell 代码:

bash -c 'pkill -TERM -f java; true'

问题是 pkill 在 pkill 命令执行后立即杀死 bash,因此后续命令没有机会执行。

除了将它们分成两行之外:

bash -c 'pkill -TERM -f java'
bash -c 'true'

还有其他解决方法吗?

【问题讨论】:

  • 无法重现:sleep 60 & bash -c 'pkill -TERM -f sleep; echo true' 杀死 sleep 但仍将“true”打印到终端。不过,grep 有时使用的技巧可能会有所帮助:bash -c 'pkill -TERM -f \java; true'
  • @chepner 这个问题不能在osx中​​重现,你应该可以在linux中重现。

标签: linux bash shell unix process


【解决方案1】:

如果你想杀死所有java进程,只需删除-f

bash -c 'pkill -TERM java; true'

如果你真的也想杀死像mplayer "jungle_gremlins_of_java.avi"这样的非java进程,典型的“解决方案”是重写命令,使模式与自身不匹配:

bash -c 'pkill -TERM -f "[j]ava"; true'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多