Linux根据进程名称获取pid的方法 - Go语言中文社区

Linux根据进程名称获取pid的方法


以下通过两种方法来根据进程名称获取pid

 

方法一

最简单的方法是使用 pidof 命令

用法:pidof  process_name

 

示例

官网的详细用法如下:

NAME
       pidof -- find the process ID of a running program.

SYNOPSIS
       pidof [-s] [-c] [-n] [-x] [-m] [-o omitpid[,omitpid..]]  [-o omitpid[,omitpid..]..]  program [program..]

DESCRIPTION
       Pidof finds the process id's (pids) of the named programs. It prints those id's on the standard output. This program is on some systems used in run-level change scripts, especially when
       the system has a System-V like rc structure. In that case these scripts are located in /etc/rc?.d, where ? is the runlevel. If the system has a start-stop-daemon (8) program that should
       be used instead.

OPTIONS
       -s     Single shot - this instructs the program to only return one pid.

       -c     Only  return  process ids that are running with the same root directory.  This option is ignored for non-root users, as they will be unable to check the current root directory of
              processes they do not own.

       -n     Avoid stat(2) system function call on all binaries which are located on network based file systems like NFS.  Instead of using this option the the variable PIDOF_NETFS may be set
              and exported.

       -x     Scripts too - this causes the program to also return process id's of shells running the named scripts.

       -o omitpid
              Tells  pidof  to omit processes with that process id. The special pid %PPID can be used to name the parent process of the pidof program, in other words the calling shell or shell
              script.

       -m     When used with -o, will also omit any processes that have the same argv[0] and argv[1] as any explicitly omitted process ids. This can be used to  avoid  multiple  shell  scripts
              concurrently calling pidof returning each other's pids.

EXIT STATUS
       0      At least one program was found with the requested name.

       1      No program was found with the requested name.

NOTES
       pidof is actually the same program as killall5; the program behaves according to the name under which it is called.

       When pidof is invoked with a full pathname to the program it should find the pid of, it is reasonably safe. Otherwise it is possible that it returns pids of running programs that happen
       to have the same name as the program you're after but are actually other programs. Note that that the executable name of running processes is calculated with  readlink(2),  so  symbolic
       links to executables will also match.

 

方法二

可以使用ps命令

ps -fC process_name

 

过滤出pid

ps -fC process_name | sed '1d' | awk '{print $2}'

 

 

一个简单的脚本测试一下一上两种方法【脚本名称:pid.sh】

#!/bin/bash


if [ $# -ne 1 ]
then
        echo "Usage : sh pid.sh  process_name"
        exit 1
fi

PID=`pidof $1`

if [ -n "$PID" ]
then
        echo "$1 pid is $PID"
else
        echo "$1 process is not running!"
fi


echo "======================================="


PID=`ps -fC $1 | sed '1d' | awk '{print $2}'`

if [ -n "$PID" ]
then
        echo "$1 pid is $PID"
else
        echo "$1 process is not running!"
fi

exit 0

 

sh pid.sh mysqld

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/skh2015java/article/details/103189805
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-02 17:57:51
  • 阅读 ( 1307 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢