0.计划任务的命令:

  at  安排作业在某一时刻执行

   batch  安排作业在系统负载不重时执行

   crontab 安排周期性运行的作业

  

1.at命令用法:

  安排命令或者多个命令在指定的时间运行一次

 语法;

  at [-f filename] 时间

  at -d or atrm   删除队列中的任务

  at -l 或者 atq  查看队列中的任务

1.1 at指定时间的方式(前提是开启atd服务,所以需要查看系统是否开启atd服务)

绝对计时方法;

  midnight noon  teatime

  hh:mm[today]

  hh:mm tomorrow

  hh:mm 星期

  hh:mm MM/DD/YY

 相对计时方法:

  now +n minutes

  now +n hours

  now +n days

例如:

1.2  at用法:

1.安排定时任务

例如:10分钟以后发个广播:

  1. [root@iz2ze46xi6pjjj69ailg9lz ~]# at now + minutes #用相对时间
  2. at> /usr/bin/wall < /etc/motd<EOT>      #输入命令之后Ctrl+D保存任务

注意:

  (1)命令要用绝对路径。

  (2)能使用at定时任务的前提是开启atd服务,所以需要查看系统是否开启atd服务:

  1. [root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le|grep atd
  2. S - hrtime ? :: atd

 2.查看以及删除定时任务

  • 定时任务原理:

我们安排了一个定时任务实际上是将我们的命令保存在/var/spool/at/目录下面:

  1. [root@iz2ze46xi6pjjj69ailg9lz ~]# ls /var/spool/at/  #查看目录下文件
  2. a0000301832fd6 spool  
  3. [root@iz2ze46xi6pjjj69ailg9lz ~]# tail - /var/spool/at/a0000301832fd6  #查看文件内容
  4. exit
  5. }
  6. ${SHELL:-/bin/sh} << 'marcinDELIMITER2474a99d'
  7. /usr/bin/wall < /etc/motd
  8. marcinDELIMITER2474a99d

  我们发现linux实际上将我们的定时任务放在文件末尾,在前面做了一系列的读取环境变量的操作,也就是我们的定时任务是在文件的末尾写着的。

  • 查看与删除定时任务:
  1. [root@iz2ze46xi6pjjj69ailg9lz ~]# atq
  2. [root@iz2ze46xi6pjjj69ailg9lz ~]# at now + minutes  #新增一个任务
  3. at> /usr/bin/wall gggg<EOT>
  4. job at Sat Mar ::
  5. [root@iz2ze46xi6pjjj69ailg9lz ~]# at now + minutes  #新增一个任务
  6. at> /usr/bin/wall secondwall<EOT>
  7. job at Sat Mar ::
  8. [root@iz2ze46xi6pjjj69ailg9lz ~]# atq    #查看定时任务
  9. Sat Mar :: a root
  10. Sat Mar :: a root
  11. [root@iz2ze46xi6pjjj69ailg9lz ~]# at -l  #查看任务方法二
  12. Sat Mar :: a root
  13. Sat Mar :: a root
  14. [root@iz2ze46xi6pjjj69ailg9lz ~]# at -d 5  #移除序号是5的任务
  15. [root@iz2ze46xi6pjjj69ailg9lz ~]# atq
  16. Sat Mar :: a root
  17. [root@iz2ze46xi6pjjj69ailg9lz ~]# atrm 4  #移除序号是4的任务

3.at配置文件限制哪些用户可以使用at命令:

    /etc/at.allow

    /etc/at.deny

规则:

  如果/etc/at.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;

   如果/etc/at.deny文件存在,那么只有列在此文件中的用户才不可以使用at命令;

  如果两个文件都不存在,那么只有超级用户才可以使用at命令;

  如果两个文件都存在且都为空,那么所有人可以使用at命令。

2.batch命令用法:

  用法与功能与at一样,只是它会检查系统负载值,负载较轻才会执行任务(一般为0.8以下为较轻)。负载值就是我们用w或top查询时候的load average。

3.crontab周期性执行命令的用法:(依赖于crond进程)

    作用:用于生成cron进程所需要的crontab文件

语法:

  crontab {-l | -e|-r}

  -l   显示当前的crontab

  -r  删除当前的crontab

  -e  使用编辑器编辑当前的crontab文件

crontab -e格式: (时间值的填写方法:将知道的时间值填上,不知道的写上*。)

  分钟   小时    天    月    星期    命令/脚本

例如:

(1)每天凌晨四点备份文件:

  0  4  *  *  *  备份脚本

(2)每个星期二和星期五下午六点备份文件

  0  18  *  *  2,5  备份脚本

(3)一月到三月的星期2和星期五备份文件

  0  18  *  1-3  2,5  备份脚本

(4)另一个需求,星期一到星期五的17.30发一条广播,17.45所有电脑自动关机

  30  17  *  *  1-5  /usr/bin/wall < news.txt

  45  17  *  *  1-5  /sbin/shutdown -h now

(5)3-6月和9-12月每个星期的星期1到星期5的12点到下午2点每隔2分钟执行一次备份脚本

  */2  12-14  *  3-6,9-12  1-5  /bin/cp /root/data/ -r /root/data.bak 2> /root/bak.err

  上面将错误的信息重定向到/root/bak.err文件夹中

总结:时间范围用-,多个时间用,逗号隔开,没两分钟可以在分钟处*/2,每两小时在天的位置*/2.

总结:

  (1)这些选项都不能为空,必须填入

  (2)如果不知道具体的值用*代替

  (3)每个时间段可以指定多个值,用逗号隔开;时间范围的话用-

  (4)命令应该给出绝对路径

  (5)用户必须具有运行所对应的命令或程序的权限。

1.周期性任务的例子:

(1)每隔3分钟发送一条广播,内容从news.txt读取

  1. [root@iz2ze46xi6pjjj69ailg9lz ~]# crontab -e

输入内容如下,输入完成之后保存即可:

  1. */ * * * /usr/bin/wall < /root/news.txt

保存之后可以到/var/spool/cron/目录下查看

  1. [root@iz2ze46xi6pjjj69ailg9lz cron]# pwd
  2. /var/spool/cron
  3. [root@iz2ze46xi6pjjj69ailg9lz cron]# cat root
  4. */ * * * /usr/bin/wall < /root/news.txt

定时执行的原理:

  将我们写的命令保存到/var/spool/cron/目录下,以用户命名,然后定期执行文件,我们也可以手工编辑这个文件。

(2)其他例子:

2.查看周期性任务的两种方式: 

  1. [root@iz2ze46xi6pjjj69ailg9lz cron]# cat /var/spool/cron/root  #直接读取文件
  2. */ * * * /usr/bin/wall < /root/news.txt
  3. */ * * * * /usr/bin/ls
  4. [root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -l  #用crontab命令读取
  5. */ * * * /usr/bin/wall < /root/news.txt
  6. */ * * * * /usr/bin/ls
  7. [root@iz2ze46xi6pjjj69ailg9lz cron]#

3.删除周期性任务的两种方式

第一种:直接删除所有的任务

  1. [root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -r
  2. [root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -l
  3. no crontab for root

第二种:编辑/var/spool/cron/root文件,删除指定行也就完成了删除任务

注意:crond周期执行任务依赖于crond进程,因此需要开启crond进程:

  1. [root@iz2ze46xi6pjjj69ailg9lz ~]# pkill crond  #杀掉进程
  2. [root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le | grep crond
  3. [root@iz2ze46xi6pjjj69ailg9lz ~]# which crond
  4. /usr/sbin/crond
  5. [root@iz2ze46xi6pjjj69ailg9lz ~]# crond  #开启crond进程
  6. [root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le | grep crond
  7. S - hrtime ? :: crond

4.crontab的配置文件: /etc/crontab文件   介绍了配置文件的格式

  1. [root@iz2ze46xi6pjjj69ailg9lz /]# cat /etc/crontab #查看/etc/crontab文件
  2. SHELL=/bin/bash
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  4. MAILTO=root
  5.  
  6. # For details see man crontabs
  7.  
  8. # Example of job definition:
  9. # .---------------- minute ( - )
  10. # | .------------- hour ( - )
  11. # | | .---------- day of month ( - )
  12. # | | | .------- month ( - ) OR jan,feb,mar,apr ...
  13. # | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,f
  14. ri,sat
  15. # | | | | |
  16. # * * * * * user-name command to be executed
  17.  
  18. */ * * * root /bin/wipefs

5.     /etc/下面有每周、每天和每日执行的脚本文件夹,我们将一个脚本放进去即可实现对应的执行脚本:

  1. [root@iz2ze46xi6pjjj69ailg9lz etc]# ll /etc/ | grep cron
  2. -rw-------. root root Mar anacrontab
  3. drwxr-xr-x. root root Aug cron.d
  4. drwxr-xr-x. root root Aug cron.daily
  5. -rw-------. root root Mar cron.deny
  6. drwxr-xr-x. root root Jun cron.hourly
  7. drwxr-xr-x. root root Jun cron.monthly
  8. -rw-r--r--. root root Jan : crontab
  9. drwxr-xr-x. root root Jun cron.weekly

centos7,调用执行上面每日、每月、每周文件夹下面的脚本是在:/etc/anacrontab通过anacron在调用

  1. [root@iz2ze46xi6pjjj69ailg9lz etc]# cat /etc/anacrontab
  2. # /etc/anacrontab: configuration file for anacron
  3.  
  4. # See anacron() and anacrontab() for details.
  5.  
  6. SHELL=/bin/sh
  7. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  8. MAILTO=root
  9. # the maximal random delay added to the base delay of the jobs
  10. RANDOM_DELAY=
  11. # the jobs will be started during the following hours only
  12. START_HOURS_RANGE=-
  13.  
  14. #period in days delay in minutes job-identifier command
  15. cron.daily nice run-parts /etc/cron.daily
  16. cron.weekly nice run-parts /etc/cron.weekly
  17. @monthly cron.monthly nice run-parts /etc/cron.monthly

6.限定哪些用户可以使用crond命令:

  /etc/cron.allow

  /etc/cron.deny

规则:

  如果/etc/cron.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;

   如果/etc/cron.deny文件存在,那么只有列在此文件中的用户才不可以使用at命令;

  如果两个文件都不存在,那么只有超级用户才可以使用at命令;

  如果两个文件都存在且都为空,那么所有人可以使用at命令。

linux进程管理-定时定期执行任务的更多相关文章

  1. [转帖]十二 个经典 Linux 进程管理命令介绍

    https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看.   随笔- 109  ...

  2. [转帖]linux进程管理总结

    linux进程管理总结 https://www.cnblogs.com/chenfangzhi/p/10660355.html 高手总结的.. 看出来我是菜逼. 目录 一.进程相关的概念 二.关闭会话 ...

  3. Linux进程管理子系统分析【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...

  4. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  5. Linux进程管理知识整理

    Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...

  6. Linux性能及调优指南(翻译)之Linux进程管理

    本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...

  7. Linux进程管理 (1)进程的诞生

    专题:Linux进程管理专题 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 L ...

  8. Linux进程管理 (2)CFS调度器

    关键词: 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 Linux进程管理 ( ...

  9. Linux进程管理 (7)实时调度

    关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...

随机推荐

  1. 【TCP】- TCP协议简介

    转载:https://blog.csdn.net/ningdaxing1994/article/details/73076795 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议 ...

  2. 加密和数字签名工具GPG

    转载: 源文件位置:http://blog.chinaunix.net/uid-9525959-id-2001824.html GPG [功能]  GPG是加密和数字签名的免费工具,大多用于加密信息的 ...

  3. QT分析之调试跟踪系统

    原文地址:http://blog.163.com/net_worm/blog/static/127702419201002004518944/ 在我们前面的分析中,经常看到qWarning()和qDe ...

  4. vs中编译连接时的警告屏蔽

    编译警告类型为warning C4996的形式 可以采用的#pragma warning(disable:4996)屏蔽掉这种编译警告 连接警告类型为warning LNK4049的形式 这是由于不同 ...

  5. bpf程序

    bpf都是怎么起作用的? 记得bpf之前是绑定在bpf bpf作用在哪里呀?

  6. Java SE1.6中的Synchronized

    1 引言 在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本 ...

  7. Spring编程式事务管理及声明式事务管理

    本文将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务.通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之. Spring 事务属性分析 事务管理 ...

  8. 【Python】面向对象--类的特殊成员方法

    类的特殊成员方法 1. __doc__ 表示类的描述信息 class Func(object): '''__doc__方法是用来打印类的描述信息''' def tell(self): pass def ...

  9. 《转》HTTP 协议入门

    HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点. 本文介绍 HTTP 协议的历史演变和设计思路. 一.HTTP/0.9 HTTP 是基于 TCP ...

  10. poj 1273 && hdu 1532 Drainage Ditches (网络最大流)

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53640   Accepted: 2044 ...