捕获子进程ID并将其保存到文件中以将其杀死

时间:2019-04-14 08:55:41

标签: shell scripting

我正在创建一个自动脚本,我希望每隔一小时就删除该jar文件的进程。

我想捕获此过程,并将使用文件中的kill -9过程。 我几乎做到了,但意识到16457和9845(每次字符不得相同,有时5个字符 进程ID和有时可能有所不同。 ) 因此我使用的sed命令无法正常工作。

如果请查看并建议我如何捕获此进程ID(不考虑字符)。

[tresouser@localhost ~]$ ps -ef|grep treso.jar
tresouser    16457      1  0 13:40 ?        00:00:00 /u02/jarloc/treso/treso.jar 
tresouser    88861  88807  0 13:41 pts/2    00:00:00 grep treso.jar
[tresouser@localhost ~]$ ps -ef|grep treso.jar
tresouser     9845      1  0 12:40 ?        00:00:00 /u02/jarloc/treso/treso.jar 
tresouser    88861  88807  0 12:45 pts/2    00:00:00 grep treso.jar

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找以下内容:

ps -C -o pid,comm |grep treso.jar |awk -F '[[:space:]]+' '{print $2}'

我们先解释一下...

ps -C -o pid,comm

这将列出所有进程和关联的命令(如果要基于命令和参数进行过滤,可以将comm换成command

|grep treso.jar

这将过滤掉不包含treso.jar的所有命令

|awk -F '[[:space:]]+' '{print $2}'

这将基于空格分割各列,然后获取第二列并打印(PID之前有一个空格,因此第一列为空白)