Linux下通过grep查找指定的进程是否存在

举报
DS小龙哥 发表于 2021/12/09 22:55:32 2021/12/09
【摘要】 一、功能介绍 Linux通过命令查找指定的进程是否存在,并返回该进程的PID号。 在程序中可以使用该方法监控指定的程序是否在运行,如果异常退出,可以重新启动指定程序或者系统。 二、执行的命令 2.1 shell脚本代码 #查找指定进程的PIDfind_name=s_app #s_app就是要查找的进程名称pid_val=`ps...

一、功能介绍

Linux通过命令查找指定的进程是否存在,并返回该进程的PID号。

在程序中可以使用该方法监控指定的程序是否在运行,如果异常退出,可以重新启动指定程序或者系统。

二、执行的命令

2.1 shell脚本代码


  
  1. #查找指定进程的PID
  2. find_name=s_app #s_app就是要查找的进程名称
  3. pid_val=`ps -ef | grep $find_name | grep -v grep | awk '{print $2}'`
  4. if [ $pid_val > 0 ]
  5. then
  6. echo "查找的进程存在,对应的PID=${pid_val}"
  7. else
  8. echo "查找的进程不存在"
  9. fi

2.2 C语言代码


  
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. //查找指定的进程的PID号并返回
  5. int find_pid(const char *app_name)
  6. {
  7. char cmd_buff[100];
  8. int cnt;
  9. sprintf(cmd_buff,"ps -ef | grep %s | grep -v grep | awk '{print $2}'",app_name);
  10. FILE *fp=popen(cmd_buff,"r");
  11. if(fp==NULL)
  12. {
  13. return -1;
  14. }
  15. cnt=fread(cmd_buff,1,sizeof(cmd_buff)-1,fp);
  16. cmd_buff[cnt]='\0';
  17. pclose(fp);
  18. //判断是否读取到数据
  19. if(cnt==0)
  20. {
  21. return 0;
  22. }
  23. return atoi(cmd_buff);
  24. }
  25. int main(int argc,char **argv)
  26. {
  27. int pid;
  28. //填入要查找的应用程序名称
  29. pid=find_pid("s_app");
  30. if(pid==-1)
  31. {
  32. printf("查找错误,查找程序未能启动.\n");
  33. }
  34. else if(pid==0)
  35. {
  36. printf("查找的进程不存在.\n");
  37. }
  38. else
  39. {
  40. printf("查找的进程PID=%d\n",pid);
  41. }
  42. return 0;
  43. }

三、检测指定程序是否存在,不存在就重新启动


  
  1. #查找指定进程的PID
  2. find_name=s_app
  3. while :
  4. do
  5. pid_val=`ps -ef | grep $find_name | grep -v grep | awk '{print $2}'`
  6. if [ ${pid_val} > 0 ]
  7. then
  8. echo "查找的进程存在"
  9. else
  10. echo "查找的进程不存在"
  11. #重新启动
  12. /mnt/hgfs/linux-share-dir/linux_c/s_app 8080 &
  13. fi
  14. sleep 10
  15. done

为了方便启动该脚本,可以在执行程序里增加一行代码,将启动代码追加到系统启动文件里去:

grep -q "/home/wbyq/find_pid.sh &" /home/wbyq/.profile||echo "/home/wbyq/find_pid.sh &" >> /home/wbyq/.profile
 

 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/108320441

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。