shell - 捕获子进程ID并将其保存到文件中以杀死它
问题描述
我正在创建一个自动脚本,我想每隔一小时杀死这个 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
解决方案
我认为您正在寻找以下内容:
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 之前有一个空格,所以第一列是空白的)
推荐阅读
- ruby-on-rails - 哈希的最后一个元素
- mysql - Rails 为 mysql 查询动态添加条件
- asp.net-mvc - OWIN OAuth 中的 Application_PostAuthenticateRequest 等效项
- python - 在单次操作中加载数据和平均值
- android - 从 Android 应用程序中,是否可以查询当前用户对该应用程序的评分?
- sql - SQL Server - 匹配属性查询
- java - 如何在另一个 RestControler 中使用 RestControler 函数
- mdriven - 用于继承的 MDriven Framework 自定义 OR 映射
- java - Java selenium webdriver按钮无法点击按钮
- string - 遍历字符串