一、功能概述
在Linux系统中,可以使用命令行工具来检查特定进程是否运行,并返回其PID。通过这种方式,可以在程序中监控指定程序的运行状态,并在程序异常退出时自动重启该程序或系统。
二、执行命令
2.1 shell脚本示例
以下是使用shell脚本查找指定进程PID的代码:
# 查找指定进程的PID
find_name=s_app # s_app是要查找的进程名称
pid_val=`ps -ef | grep $find_name | grep -v grep | awk '{print $2}'`
if [ $pid_val > 0 ]
then
echo "查找的进程存在,对应的PID=${pid_val}"
else
echo "查找的进程不存在"
fi
2.2 C语言示例
以下是使用C语言查找指定进程PID的代码:
在现实生活中的购物过程,购物者需要先到商场,找到指定的产品柜台下,查看产品实体以及标价信息,如果产品合适,就将该产品放到购物车中,到收款处付款结算。电子商务网站通过虚拟网页的形式在计算机上摸拟了整个过程,首先电子商务设计人员将产品信息分类显示在网页上,用户查看网页上的产品信息,当用户看到了中意的产品后,可以将该产品添加到购物车,最后使用网上支付工具进行结算,而货物将由公司通过快递等方式发送给购物者
#include#include #include // 查找指定进程的PID号并返回 int find_pid(const char app_name) { char cmd_buff[100]; int cnt; sprintf(cmd_buff,"ps -ef | grep %s | grep -v grep | awk '{print $2}'",app_name); FILE fp=popen(cmd_buff,"r"); if(fp==NULL) { return -1; } cnt=fread(cmd_buff,1,sizeof(cmd_buff)-1,fp); cmd_buff[cnt]='\0'; pclose(fp); // 判断是否读取到数据 if(cnt==0) { return 0; } return atoi(cmd_buff); }
int main(int argc,char **argv) { int pid; // 填入要查找的应用程序名称 pid=find_pid("s_app"); if(pid==-1) { printf("查找错误,查找程序未能启动.\n"); } else if(pid==0) { printf("查找的进程不存在.\n"); } else { printf("查找的进程PID=%d\n",pid); } return 0; }

三、检测指定程序是否存在并在不存在时重新启动
以下是使用shell脚本实现的检测和重启机制:
# 查找指定进程的PID
find_name=s_app
while :
do
pid_val=ps -ef | grep $find_name | grep -v grep | awk '{print $2}'
if [ ${pid_val} > 0 ]
then
echo "查找的进程存在"
else
echo "查找的进程不存在"重新启动
/mnt/hgfs/linux-share-dir/linux_c/s_app 8080 &
fi
sleep 10
done
为了方便启动该脚本,可以在执行程序中添加以下代码,将启动命令添加到系统启动文件中:
grep -q "/home/wbyq/find_pid.sh &" /home/wbyq/.profile||echo "/home/wbyq/find_pid.sh &" >> /home/wbyq/.profile









