zoukankan      html  css  js  c++  java
  • Linux计划任务

    计划任务的安排方式分两种:

    一种是定时性的,也就是例行。就是每隔一定的周期就要重复来做这个事情

    一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务

    at和crontab这两个命令:

    at:它是一个可以处理仅执行一次就结束的指令

    crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去。

    at一次性计划任务使用 

    at语法格式:at 时间

    1. 下载at程序

    # yum install at -y

    1. 启动atd服务

    # systemctl restart atd

    # ps aux | grep atd

    root 1166 0.0 0.1 25904 944 ? Ss 17:52 0:00 /usr/sbin/at -f root 1168 0.0 0.1 112704 956 pts/0 S+ 17:52 0:00 grep –color=auto atd

      3.设置at计划任务

     [root@localhost ~]# at 15:20
    at> touch /home/he/tttt.txt
    at> <EOT>                  #按ctrl d 保存
    job 3 at Mon May 13 15:20:00 2019
    [root@localhost ~]# atq           #查看计划任务
    3 Mon May 13 15:20:00 2019 a root

    [root@localhost ~]# ls /home/he
    b  e1.txt  e.txt  [-p]  ss.txt  text  tttt.txt  yunwei  yw.txt

    已经在计划时间执行了计划任务。

      4、删除计划任务

    [root@localhost ~]# at 16:11
    at> touch /home/he/ttt.txt
    at> <EOT>
    job 2 at Mon May 13 16:11:00 2019
    [root@localhost ~]# atq
    2 Mon May 13 16:11:00 2019 a root            #获取任务编号。
    [root@localhost ~]# atrm 2
    [root@localhost ~]# atq

    [root@localhost ~]#

    现在你会发现已经没有这个任务编号了。

      5.at计划任务的特殊写法

    [root@ken ~]# at 20:00 2018-10-1 在某天

    [root@ken ~]# at now +10min 在 10分钟后执行

    [root@ken ~]# at 17:00 tomorrow 明天下午5点执行

    [root@ken ~]# at 6:00 pm +3 days 在3天以后的下午6点执行

    crontab定时任务的使用

    语法:#crontab -u  -e

    常用选项:

    -l:list,列出指定用户的计划任务列表

    -e:edit,编辑指定用户的计划任务列表

    -u:user,指定的用户名,如果不指定,则表示当前用户

    -r:remove,删除指定用户的计划任务列表

    查看进程是否启动:

    [root@localhost ~]# ps aux|grep crond
    root      1020  0.0  0.1 126220  1220 ?        Ss   15:01   0:00 /usr/sbin/crond -n
    root      5601  0.0  0.0 112664   972 pts/0    S+   15:30   0:00 grep --color=auto crond

    查看计划任务:

    [root@localhost ~]# crontab -l
    no crontab for root

    编写计划任务:

    计划任务的规则语法格式,以行为单位,一行为一个计划:

    分 时 日 月 周 需要执行的命令

    执行的命令建议写成绝对路径的格式!

    取值范围(常识):

    分:0~59

    时:0~23

    日:1~31

    月:1~12

    周:0~7,0和7表示星期天

    四个符号:

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

    -:做连续区间表达式的,要想表示1~7,则可以写成:1-7

    /:表示每多少个,例如:想每10分钟一次,则可以在分的位置写:*/10

    ,:表示多个取值,比如想在1点,2点6点执行,则可以在时的位置写:1,2,6

    [root@localhost ~]# crontab -e

    输入上面的命令编辑定时任务,相当于打开了一个vim编辑器。

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

    45  4  1,10,22  *  *  systemctl restart network (每月,周没有制定)

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

    10  1  *  *  6,7  systemctl restart network   (日、月没有指定)

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

    */30  18-23  *  *  *  systemctl restart network  ( 日 月 周 没有指定)

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

    3,15  8-11  */2  *  *  reboot   (月和周没有指定)

    如果要删除命令:

    [root@localhost ~]# crontab -r
    [root@localhost ~]# crontab -l
    no crontab for root

    案例:真实测试案例,每1分钟往root家目录中的ken.txt中输一个123,为了看到效果使用追加输出

    [root@ken ~]# crontab -e #编写计划任务

    * * * * * echo “123” >> /root/ken.txt

    [root@ken ~]# tail -f ken.txt #查看计划任务执行结果 123 123

  • 相关阅读:
    分布图
    针对回归训练卷积神经网络
    polyfit 多项式曲线拟合matlab
    Re-run failed tests in testng
    URI 和 URL的区别
    十分钟理解Gradle
    移动App测试实战—专项测试(转)
    adb 常用命令
    MySQL基本操作
    Java注解
  • 原文地址:https://www.cnblogs.com/getbird/p/10857254.html
Copyright © 2011-2022 走看看