广告
返回顶部
首页 > 资讯 > 操作系统 >linux中怎么使用shell根据进程名获取pid
  • 857
分享到

linux中怎么使用shell根据进程名获取pid

2023-06-09 12:06:45 857人浏览 安东尼
摘要

这篇文章主要介绍linux中怎么使用shell根据进程名获取pid,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!导读Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运

这篇文章主要介绍linux中怎么使用shell根据进程名获取pid,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

导读

Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程,因此在获取进程 pid 上二者也有所区别。

交互式 Bash Shell 获取进程 pid

在已知进程名(name)的前提下,交互式 Shell 获取进程 pid 有很多种方法,典型的通过 grep 获取 pid 的方法为(这里添加 -v grep是为了避免匹配到 grep 进程):

ps -ef | grep "name" | grep -v grep | awk '{print $2}'

或者不使用 grep(这里名称首字母加[]的目的是为了避免匹配到 awk 自身的进程):

ps -ef | awk '/[n]ame/{print $2}'

如果只使用 x 参数的话则 pid 应该位于第一位:

ps x | awk '/[n]ame/{print $1}'

最简单的方法是使用 pgrep:

pgrep -f name

如果需要查找到 pid 之后 kill 掉该进程,还可以使用 pkill:

pkill -f name

如果是可执行程序的话,可以直接使用 pidof

pidof name

Bash Shell 脚本获取进程 pid

根据进程名获取进程 pid

在使用 Shell 脚本获取进程 pid 时,如果直接使用上述命令,会出现多个 pid 结果,例如

#! /bin/bash# process-monitor.shprocess=$1pid=$(ps x | grep $process | grep -v grep | awk '{print $1}')echo $pid

执行 process-monitor.sh 会出现多个结果:

$> sh process-monitor.sh3036 3098 3099

进一步排查可以发现,多出来的几个进程实际上是子 Shell 的(临时)进程:

root   3036 2905 0 09:03 pts/1  00:00:45 /usr/java/jdk1.7.0_71/bin/java ...nameroot   4522 2905 0 16:12 pts/1  00:00:00 sh process-monitor.sh nameroot   4523 4522 0 16:12 pts/1  00:00:00 sh process-monitor.sh name

其中 3036 是需要查找的进程pid,而 4522、4523 就是子 Shell 的 pid。 为了避免这种情况,需要进一步明确查找条件,考虑到所要查找的是 Java 程序,就可以通过 Java 的关键字进行匹配:

#! /bin/bash# process-monitor.shprocess=$1pid=$(ps -ef | grep $process | grep '/bin/java' | grep -v grep | awk '{print $2}')echo $pid

获取 Shell 脚本自身进程 pid

这里涉及两个指令:

$$ :当前 Shell 进程的 pid
2. 2. $! :上一个后台进程的 pid 可以使用这两个指令来获取相应的进程 pid。例如,如果需要获取某个正在执行的进程的 pid(并写入指定的文件):

myCommand && pid=$!myCommand & echo $! >/path/to/pid.file

注意,在脚本中执行 $! 只会显示子 Shell 的后台进程 pid,如果子 Shell 先前没有启动后台进程,则没有输出。

查看指定进程是否存在

在获取到 pid 之后,还可以根据 pid 查看对应的进程是否存在(运行),这个方法也可以用于 kill 指定的进程。

if ps -p $PID > /dev/nullthen  echo "$PID is running"  # Do something knowing the pid exists, i.e. the process with $PID is runningfi

以上是“linux中怎么使用shell根据进程名获取pid”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux中怎么使用shell根据进程名获取pid

本文链接: https://www.lsjlt.com/news/255939.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux中怎么使用shell根据进程名获取pid
    这篇文章主要介绍linux中怎么使用shell根据进程名获取pid,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!导读Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运...
    99+
    2023-06-09
  • linux shell 根据进程名获取pid的实现方法
    导读 linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程,因此在获取进程 pid 上二者也有所区别。 交互式 Bash Shell 获取进程 pid 在已知进程...
    99+
    2022-06-04
    shell 进程名获取pid shell 进程名 pid
  • linux怎么根据进程id获取进程名
    在Linux系统中,可以使用以下命令根据进程ID获取进程名:```shellps -p -o comm=```其中,``是要查询的...
    99+
    2023-09-28
    linux
  • python使用标准库根据进程名如何获取进程的pid详解
    前言 标准库是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。特别是有时候需要获取进程的pid,但又无法使用第三方库的时候。下面话不多说了,来一起看看详细的介绍吧。...
    99+
    2022-06-04
    进程 详解 标准
  • 怎么使用shell获取进程名的内存及CPU利用率
    这篇文章主要介绍“怎么使用shell获取进程名的内存及CPU利用率”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用shell获取进程名的内存及CPU利用率”文章能帮助大家解决问题。原理:1)使...
    99+
    2023-06-30
  • 怎么在Linux中使用shell 提取文件名
    怎么在Linux中使用shell 提取文件名?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个...
    99+
    2023-06-09
  • 怎么在Linux中利用Shell获取文件夹下的文件名
    怎么在Linux中利用Shell获取文件夹下的文件名?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Shell脚本如下:#!/bin/bash# get ...
    99+
    2023-06-09
  • 怎么在Linux中使用Shell脚本获取终端宽度
    这篇文章给大家介绍怎么在Linux中使用Shell脚本获取终端宽度,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。获取终端大小时候的学习在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 发现for循环会导致执行...
    99+
    2023-06-09
  • Linux中怎么获取某个进程的系统调用
    这期内容当中小编将会给大家带来有关Linux中怎么获取某个进程的系统调用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当一个程序发生故障时,有时候想通过了解该进程正在执行的系统调用来排查问题。通常可以用 ...
    99+
    2023-06-09
  • 使用python怎么根据excel中的颜色进行读取
    使用python怎么根据excel中的颜色进行读取?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发...
    99+
    2023-06-07
  • 怎么使用C++和Direct3D获取屏幕截图并根据传入分辨率进行缩放图片大小
    这篇文章主要介绍“怎么使用C++和Direct3D获取屏幕截图并根据传入分辨率进行缩放图片大小”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用C++和Direct3D获取屏幕截图并根据传入分辨...
    99+
    2023-07-05
  • Linux中显示内存和CPU使用率最高的进程是怎么样的及SHELL脚本怎么编写
    本篇文章为大家展示了Linux中显示内存和CPU使用率最高的进程是怎么样的及SHELL脚本怎么编写,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。显示CPU占用率最高的十个进程信息#  ps...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作