• ps ef | grep 查看进程是否存在 命令详解


    格式: ps -ef | grep 查找信息

    ps: 将某个进程显示出来

    grep:(Global Regular Expression Print)查找的意思,使用的权限是所有的用户,它是一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来

    |:管道命名,指的是 ps 命令和 grep 命令同时执行(可以把它看做是一个连接的作用)

    -e:显示所有进程

    -f:全格式

    比如:

    //以下这条命令是检查 java 进程是否存在:ps -ef |grep java
    [root@localhost ~]# ps -ef|grep java
    UID     PID  PPID  C  STIME  TTY    TIME     CMD
    root      3121  2902  0   12:13   pts/5   00:00:00  grep --color=auto java
    root      3206     1  0   Apr07   ?       00:05:46  /home/java/jdk1.8.0_221/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-8.5.45-jenkins/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/apache-tomcat-8.5.45-jenkins/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.45-jenkins/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/apache-tomcat-8.5.45-jenkins -Dcatalina.home=/usr/local/tomcat/apache-tomcat-8.5.45-jenkins -Djava.io.tmpdir=/usr/local/tomcat/apache-tomcat-8.5.45-jenkins/temp org.apache.catalina.startup.Bootstrap start
    //以下这条命令是检查 redis 进程是否存在:ps -ef |grep redis
    [root@localhost ~]# ps -ef | grep redis
    root      6282  2761  0 20:15 pts/0    00:00:13 redis-server *:6379
    root      9519  9142  0 20:48 pts/3    00:00:00 grep --color=auto redis

    1. 具体的字段含义如下:

    UID:用户ID,指的是程序被该UID所拥有,但输出的是用户名,比如上述输出的是root 用户

    PID:进程的ID,该程序的ID

    PPID:父进程ID,上级父程序的ID

    C:该进程占用CPU的百分比  

    STIME:进程启动到现在的时间

    TTY:登入者的终端机位置,该进程在哪个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。

    TIME:使用掉的CPU时间

    CMD:启动进程的命令和参数

    2. grep进程本身

    通常在使用 ps命令后 用管道连接 查询特定进程会显示 grep进程本身。比如以下截图中的第三行,后缀一般是:grep --color=auto XXX

    有时候查询结果其实 都是没有对应这个进程。但是会显示了 grep进程的本身,有的人会认为这就是自己想要的 进程,结果用 kill -9 PID 时提示进程号不存在.......

    如何判断该进程是否是 grep进程本身? 看下方指令,你就会明白了。

    进程号一直的变的那个进程是 grep进程本身(橙色标注)5344 -->5384 --> 5422

    正常进程号,比如redis的PID不会变。(绿色标注)9717 -->9717 -->9717

    [root@localhost app]# ps -ef | grep redis
    root      5344  9142  0 12:45 pts/3    00:00:00 grep --color=auto redis
    root      9717     1  0 Apr07 ?        00:00:57 /usr/local/redis/redis-4.0.6/bin/redis-server 10.10.1.132:6379
    [root@localhost app]# ps -ef | grep redis
    root      5384  9142  0 12:45 pts/3    00:00:00 grep --color=auto redis
    root      9717     1  0 Apr07 ?        00:00:57 /usr/local/redis/redis-4.0.6/bin/redis-server 10.10.1.132:6379
    [root@localhost app]# ps -ef | grep redis
    root      5422  9142  0 12:45 pts/3    00:00:00 grep --color=auto redis
    root      9717     1  0 Apr07 ?        00:00:57 /usr/local/redis/redis-4.0.6/bin/redis-server 10.10.1.132:6379

    3. 如何过滤掉grep进程本身的输出:

    方法 一:在进程名 任何一个字母上添加 [ ]

    [root@localhost app]# ps -ef | grep redis
    root      6079  9142  0 12:55 pts/3    00:00:00 grep --color=auto redis
    root      9717     1  0 Apr07 ?        00:00:57 /usr/local/redis/redis-4.0.6/bin/redis-server 10.10.1.132:6379
    [root@localhost app]# ps -ef | grep [r]edis root 9717 1 0 Apr07 ? 00:00:57 /usr/local/redis/redis-4.0.6/bin/redis-server 10.10.1.132:6379

    因为字母加上 [ ] 后,

    此时 grep进程的参数是 grep --color=auto [r]edis(注意看和上方代码框中深蓝标记的区别!!!)

    而 grep [r]edis 正则表达式 匹配的是 'redis' 这个字符串,

    因此这个 grep [r]edis 正则表达式 并不能匹配到 ' [r]edis' 这个字符串。(也就是grep的进程)

    所以自然不会出现grep进程本身。

    方法二: 在进程 后面 加  | grep -v grep 

        -v 参数含义为:不包括

    [root@localhost app]# ps -ef | grep redis
    root      6676  9142  0 13:02 pts/3    00:00:00 grep --color=auto redis
    root      9717     1  0 Apr07 ?        00:00:58 /usr/local/redis/redis-4.0.6/bin/redis-server 10.10.1.132:6379
    [root@localhost app]# ps -ef | grep redis | grep -v grep
    root      9717     1  0 Apr07 ?        00:00:58 /usr/local/redis/redis-4.0.6/bin/redis-server 10.10.1.132:6379
  • 相关阅读:
    算法提高 道路和航路
    奇偶剪枝
    二分求值
    并查集--路径压缩
    Oracle数据库导入导出DMP文件
    Spring IoC的实现与思考(一)
    sql基础拾遗
    jquery事件函数的使用之focus
    Java动态代理之cglib
    Java se之动态代理
  • 原文地址:https://www.cnblogs.com/mecell224/p/16116395.html
Copyright © 2020-2023  润新知