博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux环境中,如何通过手动创建crontab文件的方式来设置crontab定时调度任务?
阅读量:7044 次
发布时间:2019-06-28

本文共 3306 字,大约阅读时间需要 11 分钟。

需求描述:

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

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

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

操作过程:

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

[root@testvm02 ~]# crontab -eno crontab for root - using an empty onecrontab: 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 -ltotal 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 -ltotal 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]# dateWed Aug  8 01:00:05 CST 2018[root@testvm02 cron]# dateWed Aug  8 01:00:13 CST 2018[root@testvm02 cron]# dateWed Aug  8 01:00:38 CST 2018[root@testvm02 cron]# dateWed Aug  8 01:00:40 CST 2018[root@testvm02 cron]# dateWed Aug  8 01:00:49 CST 2018[root@testvm02 cron]# dateWed Aug  8 01:00:52 CST 2018[root@testvm02 cron]# dateWed Aug  8 10:28:02 CST 2018You have new mail in /var/spool/mail/root[root@testvm02 cron]# dateWed Aug  8 10:28:04 CST 2018

 

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

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

[root@testvm02 cron]# echo '*/1 * * * * date > /tmp/date.log' >> /var/spool/cron/aiprdYou 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/aiprdYou 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

转载于:https://www.cnblogs.com/chuanzhang053/p/9441393.html

你可能感兴趣的文章
ipcs和ipcrm用法简介
查看>>
[Go 笔记]关于 Panic和 Recover
查看>>
关于HP Diagnostics
查看>>
Oracle中的二进制、八进制、十进制、十六进制相互转换函数
查看>>
关于empty函数的输出
查看>>
SCI
查看>>
【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统
查看>>
分享一组Rpg Marker人物行走,游戏素材图片,共20张图片
查看>>
POJ 1947 Rebuilding Road(树形DP)
查看>>
武汉性能测试研讨会资料共享
查看>>
Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)
查看>>
WPF DataTrigger的两个用法
查看>>
细数:九部美国励志电影
查看>>
漫说单例模式--宝宝成长记 你真的了解了吗?
查看>>
yii表单
查看>>
惊艳的HTML5动画特效及源码
查看>>
2014年QS世界大学排名
查看>>
面向对象程序设计与面向过程程序设计解析
查看>>
公网服务 基础知识
查看>>
vs必备快捷键整理
查看>>