Shell脚本判断进程是否存在的实现示例

 更新时间:2023年06月20日 10:05:51   作者:独步秋风  
本文主要介绍了Shell脚本判断进程是否存在的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景

需要一个shell 脚本检测一下进程是否存在,如果存在则直接kill 掉

问题处理

查看进程id

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

如果应用进程是存在的且只有一个进程,在脚本中打印会发现有三个进程id,其中有两个进程是用不到的,且多出来的两个进程id和当前脚本子进程相关,为什么会有两个无关的进程id呢?理论上来讲主机上只有这一个关键词的进程,排查发现是因为定义的脚本名称包含了node_exporter所导致。

知识点补充

shell脚本在执行时,会启动子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。

在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。

除了$$, bash shell还会导出其他的只读变量。比如,PPID存储子shell父进程的ID(也就是主shell)。UID存储了执行这个脚本的当前用户ID

echo $PPID
echo UID

解决方法

优化获取进程id方式

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

这样获得的进程就会过滤掉当前脚本的进程,问题处理

脚本伪代码供参考

# 检查 node_exporter 进程是否存在,存在则直接kill 掉
check_node_exporter_status(){
echo "check node exporter status start "
node_exporer_proc=`ps -ef|grep node_exporter|grep -v grep|grep -v $$|awk '{print $2}'`
if [[ $node_exporer_proc != "" ]]; then
echo "node_exporter process id is $node_exporer_proc"
sudo kill $node_exporer_proc
fi
echo "check node exporter status end "
}

到此这篇关于Shell脚本判断进程是否存在的实现示例的文章就介绍到这了,更多相关Shell判断进程存在内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Shell编程之特殊变量的笔记小结

    Shell编程之特殊变量的笔记小结

    这篇文章主要介绍了Shell编程之特殊变量的笔记小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 学习shell脚本之前的基础知识[图文]

    学习shell脚本之前的基础知识[图文]

    在学习shell脚本之前,需要你了解很多关于shell的知识,这些知识是编写shell脚本的基础,所以希望你能够熟练的掌握
    2013-03-03
  • shell编程中for循环语句的实现过程及案例

    shell编程中for循环语句的实现过程及案例

    Bash Shell中主要提供了三种循环方式:for、while和until,下面这篇文章主要给大家介绍了关于shell编程中for循环语句的实现过程及案例,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • 根据公司需求写的一个linux 巡检小脚本

    根据公司需求写的一个linux 巡检小脚本

    这篇文章主要介绍了根据公司需求写的一个linux 巡检小脚本,可以用来检查服务器的一些运行状况,需要的朋友可以参考下
    2017-04-04
  • shell脚本实现本地文件与服务器文件同步

    shell脚本实现本地文件与服务器文件同步

    这篇文章主要介绍了本地文件与服务器文件同步shell脚本的方法,然后在文章给大家补充介绍了shell脚本备份本地服务器的文件到远程服务器的实例代码,需要的朋友可以参考下
    2017-11-11
  • shell进阶awk命令编排字段使用详解

    shell进阶awk命令编排字段使用详解

    这篇文章主要为大家介绍了shell进阶awk命令编排字段使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • rsync结合find技巧分享

    rsync结合find技巧分享

    这条指会找到/home 及其子目录下,所有的*.sh文件,并将备分到/backupdir这个目录
    2013-01-01
  • 智能监测自动重启Apache服务器的Shell脚本

    智能监测自动重启Apache服务器的Shell脚本

    这篇文章主要介绍了智能监测自动重启Apache服务器的Shell脚本,实现监控Apache不可用时,第一次强制重启,第二次邮件通知管理员,需要的朋友可以参考下
    2014-07-07
  • Vim 编辑器操作汇总

    Vim 编辑器操作汇总

    本文是小编给大家收藏整理的关于vim编辑器操作方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • Shell脚本实现启动PHP内置FastCGI Server

    Shell脚本实现启动PHP内置FastCGI Server

    这篇文章主要介绍了Shell脚本实现启动PHP内置FastCGI Server,本文讲解了一些需求过程,并给出了实现需求的shell脚本,需要的朋友可以参考下
    2015-04-04

最新评论