zoukankan      html  css  js  c++  java
  • linux例行性任务(定时作业)

    linux定时作业(例行性任务)

    linux有两种定时作业方式:

      • at : 这个工作仅执行一次就从 Linux 系统中的排程中取消;
      • cron : 这个工作将持续例行性的作下去!

    at仅执行一次

      要使用at进行任务在未来某一时刻仅仅执行一次,必须先开启服务atd,一般为了安全系统默认atd服务未开启,使用命令/etc/init.d/atd restart 开启这个服务。

    我们可以利用 /etc/at.allow 与 /etc/at.deny 这两个档案来进行 at 的使用限制呢! 加上这两个档案后, at 的工作情况其实是这样的:
      1. 先找寻 /etc/at.allow 这个档案,写在这个档案中的使用者才能使用 at ,没有在这个档案中的使用者则不能使用 at ( 即使没有    写在 at.deny 当中 );
      2. 如果没有 /etc/at.allow 就寻找 /etc/at.deny 这个档案,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 档案中的使用者,就可以使用 at 咯;
      3. 如果两个档案都不存在,那么只有 root 可以使用 at 这个指令。

       

    开启服务后就可以用命令at 来进行工作的排程了,这些一次性的命令任务会被写入文件夹/var/spool/at 下,然后工作就会进入排程状态等待执行,等任务执行完成后就会从该文件下将任务移除。利用命令at将任务写入文件夹/var/spool/at下,at 的具体用法:

    好了,让我们来谈一谈 at 这个玩意儿的语法吧!
    [root@linux ~]# at [-m] TIME
    参数:
    -m :当 at 的工作完成后,以 email 的方式通知使用者该工作已完成。
    TIME:时间格式,这里可以定义出『什么时候要进行 at 这项工作』的时间,格式有:
    HH:MM ex> 04:00

    HH:MM YYYY-MM-DD ex> 04:00 2005-12-03
    强制规定在某年某月的某一天的特殊时刻进行该工作!
    HH:MM[am|pm] [Month] [Date] ex> 04pm December 3
    也是一样,强制在某年某月某日的某时刻进行!
    HH:MM[am|pm] + number [minutes|hours|days|weeks]
    ex> now + 5 minutes ex> 04pm + 3 days
    就是说,在某个时间点『再加几个时间后』才进行。
    范例:
    范例一:再过五分钟后,将 /root/.bashrc 寄给 dmtsai 这个使用者
    [root@linux ~]# at now + 5 minutes
    at> /bin/mail dmtsai -s "testing at job" < /root/.bashrc
    at> <EOT> <==这里输入 [ctrl] + d 就会出现 <EOF> 的字样!代表结束!
    job 8 at 2005-09-07 10:47
    # 上面这行信息在说明,第 8 个 at 工作将在 2005/09/07 的 10:47 进行!
    范例二:由于机房预计于 2005/09/16 停电,我想要在 2005/09/15 23:00 关机?
    [root@linux ~]# at 23:00 2005-09-15
    at> /bin/sync
    at> /bin/sync
    at> /sbin/shutdown -h now
    at> <EOT>
    job 10 at 2005-09-15 23:00

    这是我执行的一个at命令在5min后执行,可以看出/var/spool/at文件夹下文件的变化

    查看at的定时作业并取消已存在的定时作业

    atq显示所有已设置的定时任务,atrm  num 删除某个序号的定时作业

    crontab循环执行定时作业

    使用指令crontab命令添加循环执行的定时作业,和at类似使用这个服务首先需要权限允许,

    • /etc/cron.allow: 将可以使用 crontab 的账号写入其中,若不在这个档案内的使用者则不可使用 crontab;
    •/etc/cron.deny: 将不可以使用 crontab 的账号写入其中,若未记录到这个档案当中的使用者,就可以使用 crontab 。

    首先会检查用户是否存在/etc/cron.allow中,存在则允许,如果在/etc/cron.allow里没有发现用户,则会查找文件/etc/cron.deny如果没有存在用户则用户可以添加定时作业。添加定时作业后会写入文件/var/spool/cron/中。

     crontab用法

    [root@linux ~]# crontab [-u username] [-l|-e|-r]
    参数:
    -u :只有 root 才能进行这个任务,亦即帮其它使用者建立/移除 crontab;
    -e :编辑 crontab 的工作内容
    -l :查阅 crontab 的工作内容
    -r :移除 crontab 的工作内容
    范例:
    范例一:用 dmtsai 在每天的 12:00 发信给自己
    [dmtsai@linux ~]$ crontab -e
    # 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。
    0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
    #分 时 日 月 周 |<==============指令串========================>|

    使用crontab -e添加定时作业,crontab -l显示定时作业。

    五个*号代表含义从左至右,当周为 0 或 7 时,都代表『星期天』的意思!

  • 相关阅读:
    2017-2018-1 20155329 《信息安全系统设计基础》第7周学习总结
    课上内容回忆
    2017-2018-1 20155329《信息安全技术》实验二——Windows口令破解
    Week6课下作业
    缓冲区溢出漏洞实验
    2017-2018-1 20155329 《信息安全系统设计基础》第6周学习总结
    20155328 《Java程序设计》实验一(Java开发环境的熟悉) 实验报告
    20155328 2016-2017-2 《Java程序设计》第六周 学习总结
    20155328 2016-2017-2 《Java程序设计》第5周学习总结
    20155328 2016-2017-2 《Java程序设计》第四周学习总结
  • 原文地址:https://www.cnblogs.com/moss-yang/p/6854445.html
Copyright © 2011-2022 走看看