linux利用shell脚本与crontab自动检测进程并定时重启

首先是关于shell 三种引号说明:

1. 单引号(' ')

  强引用任何字符都会原样输出其中的变量与转义符(可以成对拼接)也是无效的;

2. 双引号(" ")

  弱引用里面可以有变量与转义字符;

3. 反引号(` `)

  命令替换;在执行一条命令时,会先将其中的 ``,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行;

$():里面放的是命令,用来进行命令替换的;

${}:里面放的是变量,用来引用变量的;


自己建立一个shell脚本名字位置自己选

vim  /home/ssr-R.sh

#!/bin/sh

# 获取进程号: grep -v 'grep' 是去除grep行段 ,awk '{print $2}' 是获取第二列字符就是进程

sn1=`ps -fe |grep '进程service1' | grep -v 'grep' | awk '{print $2}'`

sn2=`ps -fe |grep '进程service2' | grep -v 'grep' | awk '{print $2}'`

if [ "${sn1}" = "" ]; then

  #下面是需要重启的服务1

  bash XXXXXX.sh

  echo service is start ok !

else

  echo service is running !

fi

if [ "${sn2}" = "" ]; then

  #下面是需要重启的服务 2

  bash XXXXXX.sh

  echo service2 is start ok !

else

  echo service2 is running

fi


最后将脚本添加crontab定时任务 前面5个数分别对应时间

下面是每隔多少分钟,每隔多少小时,每天/每周/每月/每年的crontab的归纳总结

每五分钟执行     */5    *       *      *       *

每五小时执行     0      */5     *      *      *

每天执行           0       0       *      *      *

每周执行           0       0       *      *      0

每月执行           0       0      1      *      *

每年执行           0       0      1      1      *


/etc/crontab 是系统总文件 crontab -e 是用户文件,有root权限一般用系统文件统一管理

vim  /etc/crontab

# 每分钟执行一次检测脚本并写入日志  ,尽量使用绝对路径避免错误* * * * *

*/1 * * * *  root /home/ssr-R.sh  >> /home/ssr-R.log

#或者可以加上 >/dev/null 2>&1 只写入错误日志

*/1 * * * *  root /home/ssr-R.sh  >> /home/ssr-R.log   >/dev/null 2>&1

当手动执行脚本OK,但是crontab死活不执行时,请确定脚本环境变量是否引入


请注意!!! crontab定时任务默认是不执行GUI程序的(浏览器,播放器)

假如要执行桌面模式的GUI程序

先在桌面模式内打开一个终端

确定当前桌面显示编号

输入 echo $DISPLAY

比如我这里显示终端是1 ,那么前往crontab 在脚本前面加上终端编号的环境变量 export DISPLAY=:1 如下示例

* * * * * export DISPLAY=:1  ;  {脚本命令.sh}   



参考链接

https://www.xiaoblogs.cn/?p=495

https://www.cnblogs.com/xssxss/archive/2012/12/04/2801050.html

https://www.runoob.com/linux/linux-comm-crontab.html

https://blog.csdn.net/bubbleyang/article/details/106529434

https://www.cnblogs.com/lemon-le/p/6127133.html

你可能感兴趣的:(linux利用shell脚本与crontab自动检测进程并定时重启)