• 当前位置: 首 页 > 教育百科 > 学历/技能 > 正文

    Liunx定时任务服务

    :2024年06月02日
    晓煜大发现

    Linux定时任务服务(如备份数据库、重启服务等)可以通过crontab命令进行设置。crontab配置文件位于/etc目录下,每个用户可以有自己的crontab文件。Shell为crontab命令提供了执行环境,PATH包含系统中可...

    ‖ 系统学习--Liunx定时任务服务

    Liunx定时任务服务

    在我们的日常运维中,我们需要经常备份一些数据。比如隔一断时间备份一下mysql数据库,或者半夜2点重启一下我们的网站nginx服务等等这些需要定时备份或重启的事情。

    但我们不可能半夜起来备份数据或重启服务,这个时候我们就需要自动执行任务

    命令:

    crontab

    -l 列出当前用户有哪些计划任务

    -e 编辑当前用户的计划任务

    -r 删除当前用户的计划任务

    crontab命令源自Unix系统,它是cron table(cron表)的简写。cron是一个自动执行任务的服务,而crontab则是这个服务的配置文件,通过这个文件我们可以设置何时以及如何执行特定的命令或脚本。每个用户都可以有自己的crontab文件,而系统管理员则可以控制这些文件的访问权限。

    我们先来看一下crontab的配置文件语法内容

    crontab配置文件目录在etc目录下有一个叫crontab的配置文件

    cat /etc/crontab

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

    SHELL=/bin/bash

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

    MAILTO=root

    # 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

    一、取值范围

    1、分:0~59

    2、时:0~23

    3、日:1~31

    4、月:1~12

    5、周:0~7,0和7表示是星期到现在为止

    注意日期和星期几不能同时写

    二、四个符号:

    *:表示取值范围的每一个数据

    -:做连续区间表达式的,比如想表达1到7可以写成1-7

    /:表示每多少个。比如想表达每10分钟一次可以写成*/10

    ,:表示多少个取值,比如想在1点,2点,6点执行定时,则可以写成1,2,6

    牛刀小试

    比如我想每分钟往/home/lu/Desktop/test.txt写一句话我们可以这们写

    第一步

    输入crontab -e 编辑当前用户计划任务

    第二步

    写入用户计划

    * * * * * /usr/bin/echo '这是每分钟写入内容' >> /home/Desktop/test.txt

    第三步

    我们查看一下有没有定时任务

    crontab -l

    我们写入定时任务后,会自动记录到一个文件中,文件路径在/var/spool/cron/中

    ls /var/spool/cron/

    这时里面记录了当前用户的所有定时任务。

    我们来练习一下以下题目

    问题1:每月1、10、22 日的4:45 重启network 服务

    * * * * *

    分 时 日 月 周 命令的绝对路径

    从左 向右,依次去写,不要跳级

    45 2 1,10,22 * * /usr/bin/systemctl restart network

    问题2:每周六、周日的下午1:10  重启network 服务

    * * * * *

    分 时 日 月 周 命令的绝对路径

    从左 向右,依次去写,不要跳级

    10 13 * * 6,7 /usr/bin/systemctl restart network

    问题3:每天18:00 至23:00 之间每隔30 分钟重启network 服务

    * * * * *

    分 时 日 月 周 命令的绝对路径

    从左 向右,依次去写,不要跳级

    */30 18-23 * * * /usr/bin/systemctl restart network

    问题4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启

    分 时  日   月  周  命令的绝对路径

    从左 向右,依次去写,不要跳级

    3,15 8-11 */2 * * /usr/sbin/reboot

    问题5 :每天凌晨整点重启nginx服务。

    分 时  日   月  周  命令的绝对路径

    从左 向右,依次去写,不要跳级

    0 0 * * * /usr/bin/systemctl restart nginx

    问题6:每周4的凌晨2点15分执行命令

    分 时  日   月  周  命令的绝对路径

    从左 向右,依次去写,不要跳级

    15 2 * * 4 /usr/sbin/reboot

    问题7:工作日的工作时间内的每小时整点执行脚本。工作日  1-5工时   9-18

    分 时  日   月  周  命令的绝对路径

    从左 向右,依次去写,不要跳级

    0 9-18 * * 1-5 /usr/sbin/reboot

    问题8:每天凌晨2点30,执行ntpdate命令同步ntp.aliyun.com,且不输出任何信息,把命令结果,重定向到黑洞文件

    /dev/null黑洞文件

    备注:定时任务的命令执行,会产生日志

    30   2 *  *  *  /usr/sbin/ntpdate -u ntp.aliyun.com  &> /dev/null

    禁止哪些用户创建定时任务

    /etc/cron.deny 黑名单文件 (将系统中,所有uid大于1000的用户,全部写入黑名单)

    /etc/cron.allow 白名单 ,优先级高于黑名单

    最后,定时任务,crontab会在系统中,生成大量的邮件日志,会占用磁盘,因此我们都会关闭邮件服务即可

    找到文件

    [root@localhost etc]# find / -type f -name 'post*service'

    find: ‘/run/user/1000/gvfs’: Permission denied

    /usr/lib/systemd/system/postfix.service

    查看状态

    systemctl status postfix

    停止服务

    systemctl stop postfix

    禁止开机自启

    systemctl disable postfix

    喜欢就分享点赞一下吧

    原文来源:https://mp.weixin.qq.com/s/-vim9hns81O4FoMnBL2Scw

    [编辑:王振袢 &发表于江苏]
    [我要纠错]

    来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
    声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

    关键词: 系统 学习 --Liunx 定时 任务
    有价值
    0
    无价值
    0
    猜您喜欢
    最热文章

    暂不支持手机端,请登录电脑端访问

    正在加载验证码......

    请先完成验证