Centos7之如何设置定时任务

2023-12-01 0 870
目录
  • Centos7设置定时任务
  • CentOS7设置定时任务 每隔30分钟执行一次命令
    • 安装 crontabs服务并设置开机自启
    • 设置用户自定义定时任务
    • 保存生效
  • 总结

    Centos7设置定时任务

    最近出了一件大事,用ShowDoc的Docker方式部署在服务器上,白天有工人换机箱,把电断了,导致ShowDoc数据丢了。。备份数据刻不容缓。

    1、安装 crontabs服务并设置开机自启:

    $ yum install crontabs
    $ systemctl enable crond
    $ systemctl start crond

    2、配置定时规则

    $ vim /etc/crontab //或者 crontab -e 立即生效

    在配置文件中配置你的定时执行规则

    59 23 * * * root /home/backup/showdoc/backup.sh

    backup.sh是你将要定时执行的脚本文件,如图所示:

    Centos7之如何设置定时任务

    规则很简单,看注释就能看懂了,从左到右分别是 分钟(0~59)、小时(0~23)、天(1~31)、月(1~12)、星期(0~6)、用户名、要执行的命令或者脚本。

    脚本内容如下:

    #! /bin/bash
    t=$(date +%Y%m%d%H%M%S)
    cd /home/backup/showdoc/mount/
    tar -zcvf ../data/data_$t.tar ./showdoc_data
    find /home/backup/showdoc/data -mtime 7 -type f|xargs rm -f

    t是当前日期,格式是年月日时分秒;tar -zcvf是将要备份的文件打成压缩包,后缀会带上日期;find … -mtime 7 …|xargs rm -f是只保留近七日的备份文件,之前的都会删掉。

    3、保存生效

    $ crontab /etc/crontab

    4、查看任务

    $ crontab -l

    任务列表,如图所示:

    Centos7之如何设置定时任务

    到此定时任务配置完成。

    CentOS7设置定时任务 每隔30分钟执行一次命令

    安装 crontabs服务并设置开机自启

    yum install crontabs
    systemctl enable crond
    systemctl start crond

    设置用户自定义定时任务

    vi /etc/crontab

    可以看到:

    # 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

    即:

    分钟(0-59) 小时(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用户名 要执行的命令

    每隔30分钟root执行一次updatedb命令:

    */30 * * * * root updatedb

    每天早上5点定时重启系统:

    0 5 * * * root reboot

    每隔三秒执行一次/home/somedir目录下的scripts.sh脚本:

    ## For excuting scripts.sh every 3 seconds##on 2014-10-15
    */1 * * * *  /home/somedir/scripts.sh
    */1 * * * * sleep 3 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 6 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 9 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 12 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 15 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 18 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 21 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 24 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 27 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 30 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 33 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 36 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 39 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 42 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 45 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 48 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 51 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 54 &&  /home/somedir/scripts.sh
    */1 * * * * sleep 57 &&  /home/somedir/scripts.sh

    保存生效

    #加载任务,使之生效
    crontab /etc/crontab
    #查看任务
    crontab -l

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

    下面是补充

    安装 crontabs服务并设置开机自启

    yum install crontabs
    systemctl enable crond (设为开机启动)
    systemctl start crond(启动crond服务)
    systemctl status crond (查看状态)

    设置用户自定义定时任务

    vi /etc/crontab

    可以看到: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

    即:分钟(0-59) 小时(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用户名 要执行的命令

    */30 * * * root /usr/local/mycommand.sh(每天,每30分钟执行一次 mycommand命令)

    * 3 * * * root /usr/local/mycommand.sh(每天凌晨三点,执行命令脚本,PS:这里由于第一个的分钟没有设置,那么就会每天凌晨3点的每分钟都执行一次命令)

    0 3 * * * root /usr/local/mycommand.sh(这样就是每天凌晨三点整执行一次命令脚本)

    */10 11-13 * * * root /usr/local/mycommand.sh(每天11点到13点之间,每10分钟执行一次命令脚本,这一种用法也很常用)

    10-30 * * * * root /usr/local/mycommand.sh(每小时的10-30分钟,每分钟执行一次命令脚本,共执行20次)

    10,30 * * * * * root /usr/local/mycommand.sh(每小时的10,30分钟,分别执行一次命令脚本,共执行2次)

    保存生效

    加载任务,使之生效:crontab /etc/crontab

    查看任务:crontab -l

    $crontab-u 用户名 -l (列出用户的定时任务列表)

    PS:特别注意,crond的任务计划, 有并不会调用用户设置的环境变量,它有自己的环境变量,当你用到一些命令时,比如mysqldump等需要环境变量的命令,手工执行脚本时是正常的,但用crond执行的时候就会不行,这时你要么写完整的绝对路径,要么将环境变量添加到 /etc/crontab 中。

    好了,计划任务就是这么简单了,但是计划任务,执行的语句如果是多条,则需要用药shell脚本,自己先写一个shell脚本,然后在计划任务中,执行这个脚本即可。至于shell脚本的写法, 这里不赘述。

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Linux服务器 Centos7之如何设置定时任务 https://www.u-9.cn/server/linux/368.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务