首页 > 编程知识 正文

crontab定时任务执行日志(crontab定时执行脚本)

时间:2023-05-04 12:23:38 阅读:75923 作者:962

1)、 crond服务管理与访问控制

crontab命令需要crond服务的支持,crond服务也是独立的服务,因此启动方法和自启动方法如下。

[ root @ localhost~~ ] # servicecrondrestart

crond:[确定]

crond: [ :正在启动:“确定”

重新启动crond服务

[ root @ localhost~] # chkconfigcrondon

将crond服务设置为在启动时自动启动

默认情况下,crond服务会自动启动。 如果服务具有循环运行的系统时间任务,请不要关闭crond服务。

crontab命令与at命令类似,/etc/cron.allow和/etc/cron.deny文件用于限制某些用户是否可以使用crontab命令。 原则也很相似:

如果系统包含/etc/cron.allow文件,则只有名为hill的文件中的用户才能使用crontab命令,没有写入的用户不能使用crontab命令。 如果存在此文件,则会忽略/etc/cron.deny文件,并提高/etc/cron.allow文件的优先级。

如果系统中只有/etc/cron.deny文件,则写入此文件的用户无法使用crontab命令。 另外,未写入文件的用户可以使用crontab命令。

该规则基本上与at规则相同,/etc/cron.allow文件的优先级高于/etc/cron.deny文件的优先级,而在Linux上,缺省情况下仅/etc/cron.deny文件

2)、 用户的crontab设置

每个用户都可以通过以此用户身份运行crontab -e命令来执行自己的crontab计时器任务。 当然,不能加入/etc/cron.deny文件。 crontab命令的格式如下:

[root@localhost ~]# crontab [可选]

可选:

- e :编辑crontab计划任务

- l :查询crontab任务

-r :删除当前用户的所有crontab任务。 如果有多个任务,并且只想删除一个,则为

所以使用“crontab -e”

-u用户名:修改或删除其他用户的crontab任务。 只有根可以使用

[root@localhost ~]# crontab -e

进入crontab编辑界面。 打开vim编辑你的工作。

* * * * *要执行的任务

举个例子

示例1 :系统每五分钟在/tmp/test文件中写入一行“11”,以验证是否执行系统计划任务

[root@localhost ~]# crontab -e

#进入编辑界面

*/5 * * * */xqdfk/echo " 11 "/tmp/test

例2 :每周二上午5点05分重新启动系统

[root@localhost ~]# crontab -e

5 5 * * 2 /sxqdfk/shutdown -r now

示例3 :每月1日、10日和15日凌晨3点30分定时运行日志备份脚本autobak.sh

[root@localhost ~]# crontab -e

0331、10、15 * */root/sh/auto bak.sh

[root@localhost ~]# crontab -l

查看根用户的crontab任务

[root@localhost ~]# crontab -r

如果要删除root用户的所有计划任务,并只删除某个计划任务,请单击,

可以将crontab -e”设置为编辑模式并手动删除

3)、 crontab的注意事项在书写crontab定时任务时,需要注意几个注意事项,这里我们再强调下:

六个选择不能为空。 必须填写。 不知道是否在任意时间使用“*”时;

crontab定时任务,最小有效时间为分钟,最大时间范围为月。 像2018年的某个时候执行的那样,无法识别3点30分30秒这样的时间;

定义时间时,日期和星期最好不出现在一个定时任务中。 因为这些都是以天为单位的,所以容易让管理者混乱

在定时任务中,无论是直接编写命令还是在脚本中编写命令,都建议使用绝对路径。 相对路径命令可能会发生错误。

系统的crontab设置

“crontab -e”是每个用户执行的命令。 这意味着不同的用户id可以执行自己的计划任务。 但是,一些计划任务需要系统运行。 在这种情况下,必须编辑名为/etc/crontab的配置文件。 当然,执行写入/etc/crontab配置文件的计划任务时并不需要用户id。 使用crontab -e命令定义计划任务时,缺省用户id为当前登录的用户。 修改/etc/crontab配置文件时,可以手动指定计划任务的运行id。 这使定时任务的执行更灵活,也更容易修改

那我们打开这个文件看看吧:

[root@localhost ~]# vi /etc/crontab
SHELL=/xqdfk/bash
#标示使用哪种shell
PATH=/sxqdfk:/xqdfk:/usr/sxqdfk:/usr/xqdfk
#指定PATH环境变量,crontab是使用自己的PATH,而不是用系统默认的,所以在定时任务中出现的命令最好使用大写
MAILTO=root
#如果有报错输出,或命令结果又输出,会向root发信息
HOME=/
#标示主目录
# For details see man 4 crontabs
#提示大家可以去“man 4 crontabs”查看帮助
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
#分 时 日 月 周 执行者身份 命令
#列出文件格式,并加入了注释
在CentOS 6.x中,/etc/crontab这个文件也发生了变化,在CentOS 5.x中这个文件的内容大概是这个样子:
#以下输出,是在CentOS 5.5当中
[root@sc ~]# vi /etc/crontab
SHELL=/xqdfk/bash
PATH=/sxqdfk:/xqdfk:/usr/sxqdfk:/usr/xqdfk
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
在CentOS 5.x版本中,/etc/crontab文件会使用run-parts脚本执行/etc/cron.{daily,weekly,monthly}目录中的所有文件。这个run-parts其实是一个shell脚本,保存在/usr/xqdfk/run-parts,它的作用就是把其后面跟随的目录中的所有可执行文件依次执行。也就是说,如果我们想让某个脚本在每天都执行一次,可以不用手工去写定时任务,而只需要给这个脚本赋予执行权限,并把它放入/etc/cron.daily/目录中。这样这个脚本就会在每天的凌晨4点02分执行了。
可是在CentOS 6.x版本中,/etc/crontab文件中不再有相关的段落,那么是否run-ptars这种定时任务执行方法不可用了呢?我们看到/etc/crontab中有一句提示,让我们“man 4 crontabs”来查看帮助,那么我们就看看这个帮助吧!在这个帮助中,明确写明了“在旧版本的crontab配置文件中,是通过run-parts脚本来调用cron.{daily,weekly,monthly}目录,定时执行这些目录中的脚本。在当前系统中,为了避免cron和anacron之间产生冲突,只要anacron已经安装,就使用anacron来执行这些目录中的脚本。具体可以查看anacron(8)的帮助。”。对于anacron的用法,我们下一个小节来介绍。
其实对我们用户来讲,我们并不需要知道这个定时任务到底是由哪个程序调用的。我们需要知道的事情是如何使用系统的crontab设置。这个新老版本的CentOS没有区别,配置方法都有两种:
 第一种方法就是我刚刚说过的,把你需要定时执行的工作写成脚本程序,并赋予执行权限,然后直接把这个脚本复制到/etc/cron.{daily,weekly,monthly}目录中的任意一个。比如我需要让某个脚本每周执行,那么就把这个脚本复制到/etc/cron.weekly/目中中。这样这个脚本就会每周执行一次,具体的执行时间要参考anacron的配置。
 第二种方法就是修改/etc/crontab这个配置文件,自己加入自己的定时任务,不过需要注意指定脚本的执行者身份。例如:
[root@localhost ~]# vi /etc/crontab
…省略部分输出…
* * * * * root run-parts /root/cron/
#让系统每分钟都执行一次/root/cron/目录中的脚本,脚本执行者是root用户。
#虽然在CentOS 6.x中,不是直接通过此配置文件调用/etc/cron.{daily,weekly,monthly}这些目录,
#但是run-parts脚本还是可以使用的。所以我完全可以参照CentOS 5.x的方法来写定时任务。
#使用run-parts脚本调用并执行/root/cron/目录中所有的可执行文件
[root@localhost ~]# mkdir cron
#建立/root/cron目录
[root@localhost cron]# vi /root/cron/hello.sh
#/xqdfk/bash
echo "hello" >> /root/cron/hello.log
#在/root/cron/hello.log文件中写入hello
[root@localhost cron]# chmod 755 hello.sh
#赋予执行权限。
#因为hello.sh脚本放入了/root/cron/目录,所以会每分钟执行一次。
只要保存/etc/crontab文件,这个定时任务就可以执行了,当然要确定crond服务是运行的。
这两种方法都是可以使用的,具体看个人的习惯吧!不过要想修改/etc/crontab文件,当然我要是
root用户才可以,普通不能修改,只能使用用户身份的crontab命令。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。