我正在创建一个自动脚本,我希望每隔一小时就删除该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
答案 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之前有一个空格,因此第一列为空白)