• Linux_计划任务


    【Centos7.4】

    !!!测试环境我们首关闭防火墙和selinux;免得后面的测试会出现问题

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# systemctl disable firewalld
    [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    [root@localhost ~]# setenforce 0
    

    一、什么是crond

    1️⃣、crond是linux的一个守护进程,当安装完成操作系统后,系统默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务Linux下的任务调度分为两类,系统任务调度和用户任务调度【系统任务调度是指系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等等。在/etc/crontab这个文件里边,这个就是系统任务调度的配置文件,其实就是告诉用户如何配置】(我安装的Centos7.4默认已经安装crond服务)

    2️⃣、如过没有crond服务可以使用yum 安装改服务(有的话就忽略)

    [root@localhost ~]# yum install crontabs
    [root@localhost ~]# systemctl start crond
    [root@localhost ~]# systemctl enable crond
    

    3️⃣、查看crond服务是否开启

    [root@localhost ~]# systemctl status crond
    ● crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since 六 2020-07-25 10:21:56 CST; 46min ago
     Main PID: 23538 (crond)
       CGroup: /system.slice/crond.service
               └─23538 /usr/sbin/crond -n
    
    7月 25 10:21:56 localhost.localdomain systemd[1]: Started Command Scheduler.
    7月 25 10:21:56 localhost.localdomain systemd[1]: Starting Command Scheduler...
    7月 25 10:21:56 localhost.localdomain crond[23538]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 43% if used.)
    7月 25 10:21:57 localhost.localdomain crond[23538]: (CRON) INFO (running with inotify support)
    7月 25 10:21:57 localhost.localdomain crond[23538]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
    7月 25 10:27:01 localhost.localdomain crond[23538]: (zhangsan) RELOAD (/var/spool/cron/zhangsan)
    7月 25 10:31:01 localhost.localdomain crond[23538]: (zhangsan) RELOAD (/var/spool/cron/zhangsan)

    二、/etc/crontab文件含义

    1、查看文件内容

    [root@localhost ~]# vim /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
    

    2、各部分解释

    用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

    minute   hour   day   month   week   command(在文件里面的模板上虽然有user-name,但是在实际大多数不会去设置用户,只需要前五段和第六段command)

    3、特殊字符

    在以上各个字段中,还可以使用以下特殊字符

    星号(*):代表所有可能的值,例如day字段如果是星号,则表示在满足其它字段的制约条件后每天都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“*/2”可以表示每两分钟时执行一次,在小时字段则表示每两小时执行一次,以此类推。
    

    4、使用者权限文件

    [root@localhost ~]# ls /etc/cron
    cron.d/       cron.daily/   cron.deny     cron.hourly/  cron.monthly/ crontab       cron.weekly/

    1️⃣:cron.deny——该文件中所列用户不允许使用crontab命令

    2️⃣:cron.allow——该文件中所列用户允许使用crontab命令(在我所列的文件里面没有这个文件,是正常的(有的可能都没有),一般只写拒绝的用户;如过两个都存在,允许优先)

    [root@localhost ~]# ll /var/spool/cron/
    总用量 0
    -rw-------. 1 root root 0 7月  25 09:55 root
    

    3️⃣:/var/spool/cron/——所有用户crontab文件存放的目录,以用户名命名

    三、crontab命令

    1、命令格式

    crontab -e      //默认是给root用户设置计划任务,如果是普通用户下就是普通用户自己给自己设置计划任务    
    crontab -e -u 'username'    //这是以root用户身份给其他普通用户设置定时任务
    

    2、参数

    -u username:用来设定某个用户的crontab服务
    -e:编辑某个用户的crontab文件内容。如果不指定用户,则默认编辑当前用户的crontab文件
    -l:显示某个用户的crontab文件内容,如果不指定用户,则默认显示当前用户的crontab文件内容;如过当前是root用户,要查看普通用户的crontab文件则输入 :crontab -l -u username
    -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件;如过当前是root用户,要删除普通用户的crontab文件则输入 :crontab -r -u username
    -i:在删除用户的crontab文件时给确认提示

    四、crontab举例

    1、默认以root用户创建crontab文件;目的:每隔1分钟向/root/data文件发送一次当前时间,然后可以使用tail -f 文件名监控该文件最新的变化

    [root@localhost ~]# crontab -e
    [root@localhost ~]# crontab -l
    */1 * * * * /usr/bin/echo `date` > /root/date
    [root@localhost ~]# tail -f date 
    2020年 07月 25日 星期六 16:18:01 CST
    tail: date:文件已截断
    2020年 07月 25日 星期六 16:19:01 CST
    

    2、给普通用户zhangsan创建crontab文件;目的:每隔1分钟向/home/zhangsan/date文件发送一次当前时间

    [root@localhost ~]# useradd zhangsan
    [root@localhost ~]# echo '123456' | passwd --stdin zhangsan
    更改用户 zhangsan 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    [root@localhost ~]# crontab -e -u zhangsan
    [root@localhost ~]# crontab -l -u zhangsan
    */1 * * * * /usr/bin/echo `date` > /home/zhangsan/date
    [root@localhost ~]# su zhangsan
    [zhangsan@localhost root]$ cd
    [zhangsan@localhost ~]$ ls
    date
    [zhangsan@localhost ~]$ tail -f date 
    2020年 07月 25日 星期六 16:28:02 CST
    tail: date:文件已截断
    2020年 07月 25日 星期六 16:29:01 CST
    

    3、其他类型的举例

    1️⃣:在规定的时间去做什么事;例如:默认root用户,每天早上8:30重启httpd服务

    [root@localhost ~]# crontab -e
    [root@localhost ~]# crontab -l
    30 8 * * * /etc/init.d/httpd restart

    2️⃣:在某时间段去做什么事;例如:默认root以后,在早上8点到20点重启httpd服务

    [root@localhost ~]# crontab -e
    [root@localhost ~]# crontab -l
    * 8-20 * * * /etc/init.d/httpd restart

    3️⃣:在某时间段内没个多长时间去做某事;

    • 例如:默认root用户,在早上9点到17点,每隔30分钟重启一次nginx服务
    [root@localhost ~]# crontab -e
    [root@localhost ~]# crontab -l
    */30 9-17 * * * /etc/init.d/nginx restart
    • 例如:默认root用户,在19点到6点,每隔3小时重启一次nginx服务
    [root@localhost ~]# crontab -e
    [root@localhost ~]# crontab -l
    * 9-17/3 * * * /etc/init.d/nginx restart

    五、总结

    crond服务时提供系统定时任务的守护进程,可以方便的给用户设置一些定时有任务,解决一些繁琐的操作;同样有好有坏,如果服务器被陌生人入侵,植入不知名的木马,很大程度上有可能写入了定时任务,就算删除木马进程,但是由于有计划任务,很可能再次陷入困境;crontab这个是帮助用户设置一些crontab文件,这些文件被存放在/var/spool/cron/目录下,并且以用户名命名;还有一般会将以root用户的些的文件返回结果,发送到/var/spool/mail/下以用户名命名的邮件中,不过系统会有提示!,总之,我们应该好好利用计划任务去处理一些繁琐事,方便自己!

  • 相关阅读:
    matlab2016b和c# .net4.0混合编程
    有限元入门
    math.net 拟合
    excel 错误提示以及其他基础知识
    excel的小bug
    Servlet体系及方法
    Servlet学习笔记
    HTTP协议
    Tomcat
    反射
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13376121.html
Copyright © 2020-2023  润新知