linux守护进程实例代码分析

86次阅读
没有评论

共计 1745 个字符,预计需要花费 5 分钟才能阅读完成。

今天丸趣 TV 小编给大家分享一下 linux 守护进程实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

linux 下的常驻进程的作用不可忽略,但这里面的问题也不能忽略,怎么启动进程,怎么结束进程,怎么在进程挂掉之后重启进程都要设计的合理。下面看一个 shell 控制的 php 常驻进程的例子。

复制代码   代码如下:

#!/bin/sh
#filename test.sh
# 绝对定位该文件的位置,不随执行目录而变化
cd $(cd $(dirname $0) pwd)
readonly path=$(pwd)/
file=$1;
runfile= ${path}data/${file}.run
diefile= ${path}data/${file}.die
readonly file= ${path}${file}.php
if [! -f $file]; then
  echo please select a exists file
elif [! -f $runfile]; then
# 这里进行判断如果 runfile 文件不存在,则表示该进程不存在,下面启动进程
  echo $$ ${runfile}
  while true
  do
  if [! -f $diefile]; then
  #这里如果 diefile 文件不存在,则表示程序继续执行,否则进入 else,执行退出操作
  /usr/bin/php -f ${file}
  touch $runfile
  sleep 1
  else
  #如果 diefile 文件存在清除 runfile 和 diefile 退出
  if rm -rf $runfile rm -rf $diefile ; then
  exit
  fi
  fi
  done
else
# 这里是在存在 runfile 的情况下试图启动该进程
  oldpid=`cat $runfile`
  newpid=`ps aux | grep process.sh $1 | grep -v grep | grep $oldpid | awk {print $2} `
  if [[$oldpid -eq $newpid]]; then
  #如果 runfile 中的进程号和正在运行的目标进程号一致,表明一切安好 ^_^
  echo the process is runing now
  exit
  else
  #如果用 runfile 中的进程号匹配不到正在运行的目标进程,则表示进程有问题,直接删除 runfile 并结束运行的进程
  echo error situation,kill the run process and delete the run file
  ps aux | grep process.sh $1 | grep -v grep | awk {print $2} | grep -v $$ | xargs –no-run-if-empty kill
  if [$? -eq 0]; then
  rm -f $runfile
  else
  echo $? ${path}/data/error
  fi
  fi
fi

只里面有几个要强调的地方:

我用这个 shell 去调用 php 程序,这个没有局限性,这里要说明的是这种运行常驻进程的方法
在 runfile 存在,但进程号对不上杀进程时(也就是红色额 else 所执行的地方),一定要 `grep -v $$`,作用是过滤掉当前运行的进程,要不然都被杀掉了,将后面的就不执行了
还有一个要注意的地方就是关于自动重启了
自动重启可以放在 crontab 中,每隔一段时间执行一次,具体情况具体对待。

复制代码   代码如下:

crontab -e
# 打开当前用户日程表,添加模式
# 日程表中有 5 个星号,f1,f2,f3,f4,f5,
# 其中 f1 表示分,f2 表示时,f3 表示日,f4 表示月,f5 表示一个星期第几天  
#* 表示每分 / 时 / 日 / 月 / 周天,*/ n 表示每 n 分 / 时 /…… 执行一次
*/2 * * * * /root/test.sh
# 没 2 分钟执行一次

这样一个完整的常驻进程功能就完成了,想要终止进程是只需要在对应的目录下进行 touch ${diefile}即可。

以上就是“linux 守护进程实例代码分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,丸趣 TV 小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计1745字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)