linux-crontab定时执行任务

  ⏱️最近碰到一个关于crontab的问题。

1. 事因

服务器部署了一个C++查询数据库词库的服务,以及Java发送目标词的服务,Java服务通过soket长连接向C++服务发送目标单词,然后C++服务返回数据库中是否存在的结果。

期间,由于数据库有时增加单词需要重启服务,手写了个定时脚本来重启该C++服务。

某一次为了调试,把改定时脚本关了,通过ps -ef |grep xxx命令查看服务父子进程情况,发现父进程还是每隔十分钟退出,服务会重启,想了许久不知道哪出了问题。

最后询问运维才想起,之前还用了linux自带的crontab设置过每隔十分钟重启服务,没有删除crontab里面的那条设置。

所以我们就来学习一下linux自带的可设置定时指定任务的crontab

2. 初识crontab

cron是一个服务进程,cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

  • crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  • crontab -l //列出某个用户cron服务的详细内容
  • crontab -r //删除某个用户的cron服务
  • crontab -e //编辑某个用户的cron服务

3. 基本用法

基本格式 :

1
*   *   *   *   *   command

​ **分 时 日 月 周 命令 **

第1列表示分钟1~59 每分钟用*或者 */1表示 ;
第2列表示小时1~23(0表示0点) ;
第3列表示日期1~31 ;
第4列表示月份1~12 ;
第5列标识号星期0~6(0表示星期天) ;
第6列要运行的命令 。

crontab的一些使用例子:

*/10 * * * * (cd /opt/resin/bin; ./resin.sh restart)

表示每隔10分重启resin服务;

30 1 * * * (cd /opt/resin/bin; ./resin.sh restart)

表示每天1点30分重启resin服务;

* 23-5/1 * * * (cd /opt/resin/bin; ./resin.sh restart)

表示每天23点到次日5点之间每隔1小时重启resin服务;

作者

wonderomg

发布于

2017-07-25

更新于

2022-01-14

许可协议

评论