【问题标题】:ubuntu shell scriptingubuntu shell 脚本
【发布时间】:2010-12-31 15:33:28
【问题描述】:

我是 shell 脚本的新手。我需要编写一个脚本来执行此命令以获取任务的进程 ID...

ps aux | grep java | grep dbConvert2 | awk '{print $2}'

然后做一些其他的事情,然后杀死我之前抓取的进程 ID...

我知道我可以杀死 -9,我只是不知道如何动态获取所有 PID 并将它们存储为变量

【问题讨论】:

  • 你真的应该接受更多问题的答案。 27% 可能会吓跑人们。
  • 一般来说,不要将 kill -9 用于您总是运行的第一个命令。只需使用 kill 并让程序自行清理。如果 kill 不起作用,则退回到 kill -9。就像你去商店退货一样,你不会立即开始对店员大喊大叫;你先试着表现得很好,然后在他们无视你之后才开始尖叫和挥动你的手臂。 :)

标签: process ubuntu-10.04 shell


【解决方案1】:

| xargs kill -9 附加到您当前的命令

[编辑] 如果你想对每个 id 做一些操作,你可以使用 for 循环,比如:

for my_pid in `YOUR_CMD`; do
    <some stuff with $my_pid>
    kill -9 $my_pid
done

【讨论】:

    【解决方案2】:
    pkill -9 'java.*dbConvert2'
    

    您之前可能想使用pgrep 'pattern' 尝试不同的模式。

    编辑:如果您的进程不匹配,您可能需要使用-f(适用于 pgrep 和 pkill,但在 -9 之后使用 )搜索包括参数在内的整个命令。
    示例:pkill -9 -f 'java.*dbConvert2'

    【讨论】:

    • 我不确定,但“pgrep”是否可用于基本安装?
    • 是的,它在procps 中,这是必需的。 (/bin/kill 在 same 包中)