Linux 定时任务

开笔

最近在做数据收集涉及到一些日志文件轮转切割,笔者想用一个定时任务来实现定时轮转。调研后决定使用 Linux 系统的 cron 服务。

Cron 是Uninx系(Linux) 操作系统的后台驻留程序,系统管理员用得相对多一些。Cron 可以被设置为开机启动,在 centos 中默认就是开机启动的服务。

在使用 cron 服务的时候,往往我们都需要 先确认cron服务本身是否开启,处于运行状态,确认当前用户是否有权限正常使用cron,编辑下发cron计划任务,确认我们的计划任务是否如约按照计划执行。本篇笔者就和大家一起看看:

  1. 查看当前系统cron服务状态
  2. 管理 cron 服务
  3. 配置 corn 服务权限
  4. 编辑下发 cron 计划任务
  5. 查看 任务是否按照计划执行

cron服务查看

除了可以用 ps 命令查看 cron 服务进程运行状态,还可以查看正在运行的cron服务调度本身的状态。通过 crontab 命令对cron服务的设置。用:

man crontab

查看一下crontab命令,发现,crontab 有4个可选参数:

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

cron服务管理

如果经过查看,我们发现cron并不是你要的状态,那么就开始管理它吧。作为后台服务,cron有着与我们熟知的服务程序相似地基本管理命令:启动、停止、重启、重新载入配置(需要稍微注意一点,这里是crond 而不是 cron):

  • 启动服务:

    /sbin/service crond star
    
  • 关闭服务

    /sbin/service crond stop
    
  • 重启服务

    /sbin/service crond restart
    
  • 重新载入配置

    在每一次重新修改过cron配置文件,请务必重新载入一下配置:

    /sbin/service crond reload
    

配置 corn 服务权限

在 Linux 操作系统中,对用户使用cron服务的权限控制在 /etc/cron.allow 和 /etc/cron.deny 两个文件中配置实现,但 /etc/cron.allow 文件非必须存在的。

如果 /etc/cron.allow 文件存在,则所有需要运行 crontab 命令的用户必须在这个文件被列举出来;如果 /etc/cron.allow 文件不存在,但
/etc/cron.deny 文件存在,则所有需要运行 crontab 命令的用户必须在这个文件不被列举出来。当这两个文件都不存在的情况下,在一些 Linux 系统(如 Ubuntu、Debian ,但不是所有)允许所有用户运行 crontab 命令。

需要注意的是,系统中,不在 /etc/shadow 文件所列的用户,是没有权限使用 crontab 命令。

编辑cron任务

  1. 语法

    * * * * *  Command_to_execute
    - – – – -
    | | | | |
    | | | | +—– Day of week (0–6) (Sunday=0) or Sun, Mon, Tue,…
    | | | +———- Month (1–12) or Jan, Feb,…
    | | +————-— Day of month (1–31)
    | +——————– Hour (0–23)
    +————————- Minute (0–59)
    
    
  2. 示例

    每天凌晨轮转nginx的access日志

    01 00 * * * /usr/sbin/logrotate /etc/logrotate.d/nginx-access-log.conf
    
    

    系统便会在每天凌晨壹分的时刻执行 /usr/sbin/logrotate /etc/logrotate.d/nginx-access-log.conf 命令,实际就是每天凌晨进行日志轮转

你可能感兴趣的:(Linux 定时任务)