首先是关于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