多个同名进程linux获取对应pid,Linux根据进程名称获取pid的方法-Go语言中文社区...

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

方法一

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

用法:pidof  process_name

示例

bbd731d7cd6878b6a0c56a4ece7c6c91.png

官网的详细用法如下:

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

641b7b307f575d07130a36476c7547ab.png

过滤出pid

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

84429a0a0babfbbe089bbc243a48a39c.png

一个简单的脚本测试一下一上两种方法【脚本名称: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

de98e1fc6edc7bb42a3e668f5b87163a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值