前言

在日常使用linux时我们总会遇到这样的问题,需要使程序在后台保持开机自动运行。例如常见的服务ssh,cron等。我之前使用过centOs,对于这个系统非常简单,只要把可执行文件放到特定目录即可保证开机运行,但是就我所知,在比较新的debian和ubuntu下都无效,需要使用systemctl来操作,比较麻烦。所以,今天我要介绍的是如何使用cron实现这一目的。

方法

shell脚本

在此,我们创建一个脚本名为task.sh,内容如下:

#!/bin/bash
#ps -ef |grep zookeeper 这个就是看zookeeper的启动情况
#grep -v "grep" 是为了去掉查询 grep的那一条
#wc -l 是计数的

COUNT=$(ps -ef |grep zookeeper |grep -v "grep" |wc -l)
echo $COUNT
if [ $COUNT -eq 0 ]; then
        ./zookeeper
else
        echo is RUN
fi

创建cron任务

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
在命令行输入以下命令打开cron任务列表文件:

crontab -e

如果是第一次打开,会出现如下提示:

不同的系统可能会有不同的选项,选择自己会的即可。
打开以后就界面如下所示:

可以看到,里面啥都没有。但是不同的系统可能不一样,有的会有一些注释告诉你怎么用并给几个示例。下面我们学习一下如何使用crontab。crontab的格式如下:

#分 时 日 月 星期 要运行的命令
* * * * * 想执行的命令

在这里,我们使这个脚本每一分钟执行一次:

1 * * * * bash 路径/task.sh

保存并退出,cron便会自动加载任务并执行。

crontab实例

实例1:每1分钟执行一次myCommand

* * * * * myCommand

实例2:每小时的第3和第15分钟执行

3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2  *  * myCommand

实例7:每月1、10、22日的4 : 45重启smb

45 4 1,10,22 * * /etc/init.d/smb restart
Last modified: January 6, 2020

Author

Comments

Write a Reply or Comment

Your email address will not be published.