zoukankan      html  css  js  c++  java
  • linux环境中,如何通过手动创建crontab文件的方式来设置crontab定时调度任务?

    需求描述:

      之前在创建定时任务的时候,都是通过cronab -e的方式进行创建,今天在做通过脚本部署定时任务的时候,

      就想,通过crontab -e编辑的定时任务存放在哪个文件里,是否,可以手动的编辑这个文件来创建定时任务呢,

      在此找到这个定时任务的文件,然后通过手动创建文件,看是否能够正确的执行.

    操作过程:

    1.通过crontab -e来创建定时任务

    [root@testvm02 ~]# crontab -e
    no crontab for root - using an empty one
    crontab: installing new crontab          #安装了新的crontab
    [root@testvm02 ~]# crontab -l
    */1 * * * * /usr/sbin/ntpdate 192.168.53.22

    2.查看root的crontab对应的文件

    [root@testvm02 cron]# pwd
    /var/spool/cron               #crontab文件在这个目录下,每个用户一个单独的文件.
    [root@testvm02 cron]# ls -l
    total 4
    -rw------- 1 root root 44 Aug  8 10:15 root
    [root@testvm02 cron]# cat root               #查看root文件,就是刚刚编辑好的定时任务,该定时任务的作用是进行时间同步.
    */1 * * * * /usr/sbin/ntpdate 192.168.53.22    

    3.通过普通用户,创建crontab,查看生成的crontab文件

    [root@testvm02 cron]# ls -l
    total 4
    -rw------- 1 aiprd aiprd  0 Aug  8 10:21 aiprd   #用户和用户组都是普通的用户的.
    -rw------- 1 root  root  44 Aug  8 10:15 root

    4.通过crontab -e将crontab中内容删除掉

    [root@testvm02 cron]# crontab -e
    crontab: installing new crontab
    [root@testvm02 cron]# crontab -l
    [root@testvm02 cron]# cat root #root文件中的内容也被删除掉了.

    5.手动将定时任务的内容输入到root文件

    [root@testvm02 cron]# echo '*/1 * * * * /usr/sbin/ntpdate 192.168.53.22' >> /var/spool/cron/root
    [root@testvm02 cron]# cat root
    */1 * * * * /usr/sbin/ntpdate 192.168.53.22
    [root@testvm02 cron]# ls -l root
    -rw------- 1 root root 44 Aug  8 10:25 root

    6.修改系统时间为一个错误的时间,看看几分钟之后,时间能否被正确的修改

    [root@testvm02 cron]# date -s "2018-08-08 01:00:00"
    Wed Aug  8 01:00:00 CST 2018
    [root@testvm02 cron]# clock -w
    [root@testvm02 cron]# date
    Wed Aug  8 01:00:05 CST 2018
    [root@testvm02 cron]# date
    Wed Aug  8 01:00:13 CST 2018
    [root@testvm02 cron]# date
    Wed Aug  8 01:00:38 CST 2018
    [root@testvm02 cron]# date
    Wed Aug  8 01:00:40 CST 2018
    [root@testvm02 cron]# date
    Wed Aug  8 01:00:49 CST 2018
    [root@testvm02 cron]# date
    Wed Aug  8 01:00:52 CST 2018
    [root@testvm02 cron]# date
    Wed Aug  8 10:28:02 CST 2018
    You have new mail in /var/spool/mail/root
    [root@testvm02 cron]# date
    Wed Aug  8 10:28:04 CST 2018

     

    备注:在一分钟之后,系统时间,自动同步为正确的时间了.说明,直接对文件进行编辑也是能够是的crontab调度成功的.

    6.对于一个普通用户如何来创建这个定时任务的文件

    [root@testvm02 cron]# echo '*/1 * * * * date > /tmp/date.log' >> /var/spool/cron/aiprd
    You have new mail in /var/spool/mail/root
    [root@testvm02 cron]# ls -l /var/spool/cron/aiprd
    -rw-r--r-- 1 root root 33 Aug  8 10:33 /var/spool/cron/aiprd   #并没有修改这个文件的权限,用户和用户组.

     7.切换到普通用户下,执行crontab -l,然后查看具体有没有日志输出

    [root@testvm02 ~]# su - aiprd
    [aiprd@testvm02 ~]$ crontab -l
    */1 * * * * date > /tmp/date.log            #包含了刚刚编写的内容.
    [aiprd@testvm02 ~]$ tail -f /tmp/date.log   #查看也发现有任务确实在执行.
    Wed Aug  8 10:35:01 CST 2018
    [aiprd@testvm02 ~]$ ls -l /tmp/date.log
    -rw-r--r-- 1 aiprd aiprd 29 Aug  8 10:36 /tmp/date.log #同时,生成的文件,也是aiprd用户和用户组.

    备注:说明,对于普通用户,也可以在root用户下直接编辑/var/spool/cron/文件,为普通用户创建crontab定时任务.可以不考虑该文件的权限,如果为了更安全的考虑,可以修改文件的用户和用户组.

    [root@testvm02 cron]# chown aiprd:aiprd /var/spool/cron/aiprd
    You have new mail in /var/spool/mail/root
    [root@testvm02 cron]# chmod 600 /var/spool/cron/aiprd
    [root@testvm02 cron]# ls -l /var/spool/cron/aiprd
    -rw------- 1 aiprd aiprd 33 Aug  8 10:33 /var/spool/cron/aiprd

    备注:实践证明,修改不修改用户组,权限都不影响调度,但是为了和默认使用contab创建的文件的权限和用户组保持一致性,可以这么设置.

    小结:

      可以通过直接在/var/spool/cron目录下为特定的用户创建crontab文件,就可以实现用户的定时任务调度,可以为root用户和普通用户进行创建.前提在root下执行.

    注意:

      普通用户没有在cron中写文件的权限,所以要在root用户下执行创建编辑文件.

    文档创建时间:2018年8月8日10:41:53

  • 相关阅读:
    hihoCoder #1062 : 最近公共祖先·一
    hihoCoder #1050 : 树中的最长路
    hihoCoder #1049 : 后序遍历
    108 Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树
    107 Binary Tree Level Order Traversal II 二叉树的层次遍历 II
    106 Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树
    105 Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树
    104 Maximum Depth of Binary Tree 二叉树的最大深度
    102 Binary Tree Level Order Traversal 二叉树的层次遍历
    101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/9441393.html
Copyright © 2011-2022 走看看