基础指令 crontab定时任务docker使用
  TEZNKK3IfmPf 2023年11月14日 39 0

场景

      Linux平台下国标服务长时间运行会出现服务异常,目前由于现场环境不允许调试,因此最终采用定时重启的方法,规避问题。由于公司环境在docker环境测试,又多了额外的配置步骤

前言

linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。

一crond简介

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

[root@localhost ~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=””HOME=/

# run-parts

51 * * * * root run-parts /etc/cron.hourly

24 7 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

[root@localhost ~]#

前 四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行 命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

二、crond服务

安装crontab:

yum install crontabs

服务操作说明:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

查看crontab服务是否已设置为开机启动,执行命令:

ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

三 docker创建crontab定时任务失败

按照正常情况下,安装完成crontab,配置好任务就可以了。在docker环境下需要做很多额外的配置操作

基础镜像采用的centos7.2,需要安装一下crontab,在dockerfile中加以下语句就可以了:

# crontab jobs

RUN yum -y install crontabs

ADD ./run/nlp-cron /etc/cron.d/nlp-cron

RUN chmod 0644 /etc/cron.d/nlp-cron

RUN crontab /etc/cron.d/nlp-cron

四 现场真实的部署过程

1查看crontab服务状态:

service crond status

其中active running代表其运行

基础指令 crontab定时任务docker使用

 

2 执行文件,生成计划

[root@cvos-app init.d]# crontab

servicerestart.sh

3 文件参数说明

59 

23  *  *  *

/usr/sbin/service  ms  start

第一个59是设置分,

第二个23是设置小时

4计划查看是否成功

[root@cvos-app init.d]# crontab -l

*/5 

*  *  *  *

/usr/sbin/service  ms  start

[root@cvos-app init.d]#

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月22日   60   0   0 容器Docker
  TEZNKK3IfmPf   2023年11月15日   40   0   0 redisDocker
  TEZNKK3IfmPf   2024年04月26日   54   0   0 Docker
  TEZNKK3IfmPf   2023年11月15日   35   0   0 redisDocker
  TEZNKK3IfmPf   2023年11月15日   39   0   0 Docker
  TEZNKK3IfmPf   2024年03月29日   97   0   0 Docker
TEZNKK3IfmPf