前言


第一步:grep -v grep

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

  • ps -ef|grep java就是通过管道的方式,将ps命令查询出来的进程信息内容筛选出与jar进程相关的数据

  • 但是使用grep命令过滤时会查询出grep自己的进程信息,示例如下:

    [root@localdomain1 ~]# ps -ef|grep xh-1.0-SNAPSHOT.jar
    root 3256 1 0 Aug11 ? 00:17:19 java -jar xh-1.0-SNAPSHOT.jar --spring.config.location=application.yml
    root 6435 6395 0 08:38 pts/1 00:00:00 grep --color=auto xh-1.0-SNAPSHOT.jar
  • 可以看到在查询到的进程信息中,除了我们需要的xh-1.0-SNAPSHOT.jar进程,还包括了grep --color=auto进程信息

  • 大多数情况下,在编写脚本时,往往需要精确获取到单一进程的信息,此时就需要通过 -v 参数排除掉grep进程的信息数据

  • -v 参数,作用是反转查找,即过滤出除了参数后面的其他数据,示例如下

    [root@localdomain1 ~]# ps -ef|grep xh-1.0-SNAPSHOT.jar |grep -v grep
    root 3256 1 0 Aug11 ? 00:17:19 java -jar xh-1.0-SNAPSHOT.jar --spring.config.location=application.yml
  • 可以发现,当我们在后面添加了|grep -v grep后,查询出来的结果就只剩下我们需要的xh-1.0-SNAPSHOT.jar进程信息了,说明grep进程已经被排除在外了

第二步:awk '{print $2}'

awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息

awk处理过程: 依次对每一行进行处理,然后输出

print & $0 是awk打印指定内容的主要命令

  • 在第一步中,我们查询出来了jar进程的信息,此时需要获取到这条进程信息的PID

  • 我们就可以使用awk命令将自己需要的某一列数据单独提取出来,示例如下

    [root@localdomain1 ~]# ps -ef|grep xh-1.0-SNAPSHOT.jar|grep -v grep|awk '{print $2}'
    3256
  • 其中,$2代表提取进程信息中第二列的值,而我们使用ps命令查询出的进程信息中的第二列对应的正好就是进程的PID(注意:$0表示获取整个当前行)

  • 可以看到,通过awk '{print $2}'命令,我们成功拿到了xh-1.0-SNAPSHOT.jar进程的PID

类似脚本示例(脚本来源

#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
 

【Linux】ps -ef|grep -v grep|awk '{print $2}' 命令详解的更多相关文章

  1. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  2. Linux/CentOS 服务安装/卸载,开机启动chkconfig命令详解|如何让MySQL、Apache开机启动?

    chkconfig chkconfig在命令行操作时会经常用到.它可以方便地设置和查询不同运行级上的系统服务.这个可要好好掌握,用熟练之后,就可以轻轻松松的管理好你的启动服务了. 注:谨记chkcon ...

  3. linux shell 脚本攻略学习11--mkdir和touch命令详解

    一.创建目录(mkdir命令详解) amosli@amosli-pc:~/learn$ mkdir dir amosli@amosli-pc:~/learn/dir$ mkdir folder amo ...

  4. ifconfig|grep eth0|awk '{print $5}' 命令详解

    因需要将linx下获取某个网中的MAC地址,可以使用如下命令获取: ifconfig|grep eth0|awk '{print $5}' ifconfig: 输出linux下所有网口的信息(包括IP ...

  5. Linux下的awk文本分析命令详解

    一.简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/ ...

  6. linux的mount(挂载)NFS 共享,命令详解

    Linux下挂载(mount)光盘镜像文件.移动硬盘.U盘.Windows和NFS网络共享 linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随着 linux系统 ...

  7. linux bash Shell脚本经典 Fork炸弹演示及命令详解

    Jaromil 在 2002 年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在 shell 中运行后几秒后系统就会宕机: :(){:|:&};: 这样看起来不是很好理 ...

  8. 【Linux】【Services】【KVM】virsh命令详解

    1. virsh的常用命令 help:获取帮助 virsh help KEYWORD list:列出域 dumpxml:导出指定域的xml格式的配置文件: create:创建并启动域: define: ...

  9. Liunx 日志检索 grep -v -a awk

    grep -5 'parttern' inputfile.log //打印匹配行的前后5行   grep -C 5 'parttern' inputfile.log //打印匹配行的前后5行   gr ...

  10. 什么是grep -v grep??

    1.grep 是查找含有指定文本行的意思,比如grep test 就是查找含有test的文本的行 2.grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的 ...

随机推荐

  1. .NET周刊【10月第1期 2024-10-06】

    国内文章 基于DPAPI+RDP技术实现本地打开远程程序,并映射到本地机器桌面上 https://www.cnblogs.com/weskynet/p/18445584 该教程讲述如何使用Remote ...

  2. 忽略某个已经托管给git的文件,防止二次提交

    # 执行命令将文件加入不提交队列 git update-index --assume-unchanged 你的文件路径 # 执行命令将文件取消加入不提交队列 git update-index --no ...

  3. 0503-autograd实战之线性回归

    0503-autograd实战之线性回归 目录 一.用 variable 实现线性回归(autograd 实战) 二.第五章总结 pytorch完整教程目录:https://www.cnblogs.c ...

  4. kotlin类与对象——>对象表达式与对象声明、内联类

    1.对象表达式与对象声明 有时候,我们需要创建一个对某个类做了轻微改动的类的对象,而不用为之显式声明新的子类.Kotlin 用对象表达式和对象声明处理这种情况 2.对象表达式 要创建一个继承自某个(或 ...

  5. KubeSphere 社区双周报|2024.02.01-02.29

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  6. 云原生爱好者周刊:KubeSphere 3.3.0 Alpha 版发布

    开源项目推荐 Collection of Linux eBPF slides/documents 这个项目收集了各种与 eBPF 相关的资料,非常全面. magic-trace magic-trace ...

  7. Visual Studio NUGET 清理方法

    NUGET全局包存储位置配置 NuGet缓存实在是太大了,把我唯一的120G固态硬盘(系统盘)基本占用完了--只能是清理一下了,同时修改缓存路径到其他盘以便一劳永逸. 1. 在C:\Program F ...

  8. SpringBoot开启Gzip接口报文压缩

    背景 当我们一个接口响应报文比较大的时候,超过几兆甚至几十兆的情况下,减少响应体的报文大小是能有效减少响应时间的. spring boot 配置 server: compression: ## 开启服 ...

  9. Go语言基础06 _function

    Go语言基础06 _function 函数在Go语言中是一等公民 与其他主要编程语言的差别 可以有多个返回值 所有参数都是值传递:slice,map,channel 会有传引用的 错觉 函数可以作为变 ...

  10. 3.7 Linux切换目录(cd命令)

    cd 命令,是 Change Directory 的缩写,用来切换工作目录. Linux 命令按照来源方式,可分为两种,分别是 Shell 内置命令和外部命令.所谓 Shell 内置命令,就是 She ...