zoukankan      html  css  js  c++  java
  • linux之cron定时任务介绍

    前言

    linux系统有一个专门用来管理定时任务的进程cron,一般是设置成开机自启动的,通过添加任务可以让服务器定时执行某些任务。

    cron介绍

    linux系统有一个专门用来管理定时任务的进程cron,一般是设置成开机自启动的,可以通过以下命令查看

    ps aux | grep cron
    

    cron进程每隔一分钟会去读取/etc/crontab文件,/etc/cron.d/下的所有crontab文件,/var/spool/cron/下的所有的crontab文件;

    • /var/spool/cron/:改目录下存放系统的每个用户需要执行的crontab任务,该文件已用户的名字命令,是用户在提交cron任务后自动创建的,一个用户只有一个crontab文件;

    • /etc/crontab:这是一个crontab文件,里面存放整个系统级别的任务,一般是root用户操作,普通用户不要去修改这个文件;

    • /etc/cron.d/:该文件夹下一般是系统级别的用来管理其他定时任务的crontab文件;

    • /var/log/cron这是cron任务运行的日志文件;

    所以如果是用户自己的任务会出现在/var/spool/cron/目录下;

    # /etc/crontab文件
    
    SHELL=/bin/bash  # 指定运行的shell
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root  # 当/etc/crontab文件中的例行性命令发生错误时,会将错误信息传递给谁,一般改成用户账户,当发生错误时,错误信息发送到/var/spool/mail/下的用户名的文件
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    
    

    扩展

    • 通过ls /etc/ | grep cron命令查看会出现如下几个文件或文件夹:
    anacrontab  # 这是系统级别的用来管理异步定时任务的文件
    cron.d  # 系统级别定时任务文件
    cron.daily  # 每天需要执行的cron任务目录
    cron.deny   # 定义不允许使用crontab命令的用户文件
    cron.hourly # 每小时需要执行的cron任务目录
    cron.monthly # 每个月需要执行的cron任务目录
    crontab   # 这是系统级别的用来管理定时任务的文件
    cron.weekly # 每周需要执行的cron任务目录
    # 另外还有cron.allow文件,定义允许使用crontab命令的用户,系统默认没有
    

    cron任务的操作

    cron工具有一套自己的操作命令可以对用户的cron任务进行自动化的管理。

    cron服务的管理

    service crond start    //启动cron进程
    service crond stop     //关闭cron进程
    service crond restart  //重启cron进程
    service crond reload   //重新载入配置+
    service crond status   //查看服务状态
    
    • 如果系统不识别service命令就使用/usr/sbin/crond start格式的命令;

    crontab任务命令

    crontab [-u username] [-l|-e|-r]
    选项与参数:
    -u  :root权限才能进行这个任务,缺省时默认为当前的用户
    -e  :编辑用户的crontab文件,保存好后会自动提交
    -l  :查阅当前用户的crontab的工作内容
    -r  :移除当前用户所有的 crontab 的工作内容,若仅要移除一项,请去修改crontab文件
    

    我们可以使用crontab -e直接编辑我们的定时任务,也可以先编辑一个自定义的creontab文件然后提交;

    编辑自己的cron任务

    • 第一步:选一个文件夹,比如就在自己想要执行定时任务的应用如redis的安装文件,创建一个脚本文件:
    touch test
    # 授予该文件可执行权限
    chmod +x test
    # 编辑文件
    vi test
    
    • cron任务的语法;
    # 格式
    minute hour day-of-month month-of-year day-of-week commands
    minute:分钟,范围0--59;
    hour:小时,范围0--23;
    day-of-month:天,范围01-31;
    month-of-year:月份,01-12;
    day-of-week:周,范围0-6,(0表示Sunday);
    
    example:
    
    # 每隔五分钟
    */5 * * * * echo "aaaa"
    # 每天18点
    0 18 * * * echo "aaa"
    # 执行目录下的文件
    0 18 * * * root run-parts /etc/cron.d/ # 执行目录下的所有文件
    
    • 第二步:提交任务
    crontab 文件名
    
    • 第三步:查看任务是否成功提交
    crontab -l
    

    注意:每次提交任务是覆盖原来的crontab的文件,所以需要添加更多的cron任务时,修改/var/spool/cron/下的文件。

  • 相关阅读:
    SourceTree Win10 安装过程及配置
    Laravel 5.5 官方推荐 Nginx 配置学习
    Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求
    Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition by
    Laravel Scheduling Package
    Homestead 中使用 laravel-mix 问题汇总
    iBrand 教程:Git 软件安装过程截图
    使用 Satis 搭建私有的 Composer 包仓库
    Windows + Homestead 5 搭建 Laravel 开发环境
    Homestead 安装 phpMyAdmin 作为数据库管理客户端 — Laravel 实战 iBrand API 教程
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/8311466.html
Copyright © 2011-2022 走看看