美文网首页
Linux提取匹配指定字符串的进程号

Linux提取匹配指定字符串的进程号

作者: SunnyQjm | 来源:发表于2018-11-14 09:54 被阅读0次

原文地址: Linux提取匹配指定字符串的进程号

定个小目标

现在提出我们的需求:通常在运维过程中,会有一些进程是在后台运行的,这个时候我们如果 筛选出指定的进程,并kill掉 就是接下来要讨论的问题了。

尝试用 grep 和 awk 实现

现在有一个进程是通过 nohup java -jar ./CCNController-1.0.jar /router/pku/n1 & 命令启动并实现在后台运行的,我们接下来的目标就是要过滤出这个进程的进程号

  • 过滤出该进程

    ps -aux | grep CCNController
    

    得到如下结果(其中第一行是grep命令进程,第二行是目标进程)

    mingj     7078  0.0  0.0  14664  1084 pts/0    S+   09:32   0:00 grep CCNController
    mingj    14425  0.0  0.3 4767808 25940 ?       Sl   11月13   0:26 java -jar ./CCNController-1.0.jar /router/pku/n1
    
  • 用awk命令选出第二列的进程号

    ps -aux | grep CCNController | awk '{print $2}'
    

    得到如下结果

    8946
    14425
    
  • 接下来就是kill掉过滤出的进程

    kill $(ps -aux | grep CCNController | awk '{print $2}')
    

    得到如下结果

    bash: kill: (9171) - 没有那个进程
    

    实际上,我们要kill掉的目标进程已经成功被杀掉了,报这一行错误是因为我们用上面的命令筛选出的进程号有两个,一个是目标进程号,一个是筛选命令中包含的grep命令的执行进程的,实际上grep命令在筛选命令执行结束的时候就已经退出了。我们再去kill一个已经退出的进程号,当然会报错。

    如果我们只是想要在终端kill某个进程,这样做就ok了,但是我们如果用在一些脚本编程当中(比如用ssh远程执行命令的脚本),会导致脚本中断执行,接下来我们的任务是 将筛选结果中grep命令的进程去除掉 => 喜大普奔,grep命令中有一个 -v 参数可以排除包含指定字符串的行

最终实现

  • 查询

    ps -aux | grep CCNController | grep -v grep | awk '{print $2}'
    
  • 查询并删除

    kill$(ps -aux | grep CCNController | grep -v grep | awk '{print $2}')
    

相关文章

  • Linux提取匹配指定字符串的进程号

    原文地址: Linux提取匹配指定字符串的进程号 定个小目标 现在提出我们的需求:通常在运维过程中,会有一些进程是...

  • 2019-12-26

    提取指定字符串的指定格式内容 let phoneStr = "创建时间 1894512345678" ...

  • R学习笔记(7):使用stringr处理字符串(2)

    目标:结合正则表达式,实现 确定与某种模式匹配的字符串找出匹配位置提取匹配内容替换匹配内容基于匹配拆分字符串 1....

  • kill

    Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管...

  • 字符串常用方法

    slice(): 返回字符串中提取的子字符串。 substring(): 提取字符串中介于两个指定下标之间的字符。...

  • Linux 常用查找文件的命令find、grep

    Linux查找文件内容的常用命令方法。 从文件内容查找匹配指定字符串的行: 在当前目录里第一级文件夹中寻找包含指定...

  • 提取匹配内容

    正则表达式匹配字符串并提取正则匹配的内容 this.([a-zA-z]+) = 1 代表第一个括号内匹配的字符串

  • kill与信号量

    kill 命令 用于终止指定的进程(terminate a process),是 Unix/Linux 下进程管理...

  • 正则?:匹配但是并不捕获

    下面是测试结果: "?=a" 匹配任何其后紧接指定字符串 n 的字符串而(?:a) 则是匹配 'a' 但是并不捕获a

  • 1127 chapter 10 stringr 下篇

    工具 确定与某种模式相匹配的字符串; 找出匹配的位置; 提取出匹配的内容; 使用新值替换匹配内容; 基于匹配拆分字...

网友评论

      本文标题:Linux提取匹配指定字符串的进程号

      本文链接:https://www.haomeiwen.com/subject/hejdfqtx.html