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判断进程存在内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ubuntu中root和普通用户切换方法(推荐)

    ubuntu中root和普通用户切换方法(推荐)

    下面小编就为大家带来一篇ubuntu中root和普通用户切换方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 远程SSH连接服务与基本排错经验总结

    远程SSH连接服务与基本排错经验总结

    下面小编就为大家带来一篇远程SSH连接服务与基本排错经验总结。小编觉得听不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Linux nano命令使用示例

    Linux nano命令使用示例

    nano是一个小型、免费、友好的编辑器,旨在取代非免费Pine包中的默认编辑器Pico,nano是一个字符终端的文本编辑器,有点像DOS下的editor程序,这篇文章主要介绍了Linux nano命令使用示例,需要的朋友可以参考下
    2023-03-03
  • Shell中sed编辑器的具体使用

    Shell中sed编辑器的具体使用

    sed是一种流编辑器,sed编辑器可以根据命令来处理数据流中的数据,本文就来介绍一下Shell中sed编辑器的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Shell脚本判断IP地址是否合法的方法

    Shell脚本判断IP地址是否合法的方法

    这篇文章主要介绍了Shell脚本判断IP地址是否合法的方法,需要的朋友可以参考下
    2014-03-03
  • Shell获取文件的文件名和扩展名的例子

    Shell获取文件的文件名和扩展名的例子

    这篇文章主要介绍了Shell获取文件的文件名和扩展名的例子,简明版的代码实例,看了就懂,需要的朋友可以参考下
    2014-06-06
  • Linux 命令每天必学(34)之du命令

    Linux 命令每天必学(34)之du命令

    Linux du命令是查看使用空间的,本文给大家介绍linux du命令的参数,格式,功能等相关资料,对linux du命令感兴趣的朋友一起学习吧
    2015-11-11
  • 执行shell 脚本将日志全部输出到文件的多种方法

    执行shell 脚本将日志全部输出到文件的多种方法

    执行Shell脚本时,可将所有输出(stdout+stderr)重定向到日志文件,方法包括直接重定向(> 2>&1)、追加模式(>>)、tee命令(屏幕+文件)、脚本内重定向(exec)及logger系统日志,推荐方法1或2,结合logrotate管理日志大小
    2025-07-07
  • linux定时器crontab的使用教程

    linux定时器crontab的使用教程

    这篇文章主要介绍了linux定时器crontab的使用教程,需要的朋友可以参考下
    2018-08-08
  • shell结合expect写的批量scp脚本工具

    shell结合expect写的批量scp脚本工具

    expect用于自动化地执行linux环境下的命令行交互任务,例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具,定义在scp过程中可能遇到的情况,然后编写相应的处理语句,就可以自动地完成scp操作了
    2013-02-02

最新评论