crond和crontab 调研

来源:互联网 发布:自学python看什么书 编辑:程序博客网 时间:2024/06/05 18:28

crond服务:Linux中的一个可以定期来执行系统任务的命令

crontab命令的用法:

编辑etc/crontab文件配置cron,cron服务每分钟不仅要读一次 /var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用 crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务,此文件的文件格式是:

1.系统执行的工作:系统周期性所要执行的工作,如备份系统数据等。

2.个人执行的工作:某个用户定期要做的工作:某个用户定期要做的工作

crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:
文件 含义
/etc/cron.deny   该文件中所列的用户不允许使用crontab命令
/etc/cron.allow  该文件中所列的用户允许使用crontab命令
/var/spool/cron/ 是所有用户的crontab文件
crontab命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一:
参数名称 含义 示例
-l  显示用户的crontab文件的内容 crontab –l
-i  删除用户的crontab文件前给提示 crontab -ri
-r  从crontab目录中删除用户的crontab文件 crontab -r
-e  编辑用户的Crontab文件 crontab -e


在编辑cron服务时,编辑的内容有一些格式的约定,输入:crontab -u root -e

进入Vi编辑模式,编辑的内容一定要符合下面的格式:

*/1 * * * ***ls>>/tmp/ls.txt

编辑/etc/crontab文件,在末尾加上一行:30 5 * * * root init 6这样就将系统配置为每天早上5点30分自动重新启动。
crontab 文件中的行由6个字段组成,不同字段间用空格或tab键分隔。前5个字段指定命令要运行的时间
分钟(0-59)
小时(0-23)
日期(1-31)
月份(1-12)
星期几(0-6,其中0代表星期日,好像7也代表星期日)
第6个字段是一个要在适当时间执行的字符串。
例子:
#MIN      HOUR     DAY       MONTH  DAYOFWEEK       COMMAND
#每天早上6点10分
10    6     *     *     *     date
#每两个小时
0     */2   *     *     *     date
#晚上11点到早上8点之间每两个小时,早上8点
0     23-7/2,8      *     *     *     date
#每个月的4号和每个礼拜一到礼拜三的早上11点
0     11    4     *     1-3  date
#1月1日早上4点
0     4     1     1       *  date
补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export)
(1)       先建一个文件crond.txt如下,每天早上5点36分重新启动
36      5     *     *     *     reboot
(2)上传到/opt目录
(3)运行命令
crontab /opt/crond.txt
crontab –l
让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后,也要重新启动cron服务器。
在Fedora和Redhat中,我们应该用:
/etc/rc.d/crond restart
如果让crond在开机时运行,应该改变其运行级别:
chkconfig –level 35 crond on
service crond status查看cron服务状态,如果没有启动则service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab命令添加或者编辑需要定时执行的任务

1.使用crontab -e编辑任务。每隔一分钟向test.txt文件里写入hello

2.保存退出后,查看test.TXT文件里写入的内容

3.执行crontab -r终止这个进程

每一分钟执行一次ls命令一个终端只能运行一个前台作业,多个后台作业,当前前台运行的是shell,所以如果不指定输出到终端,那么这个定时任务是不能占用前台的。

为什么是重定向到/dev/pts/0呢?终端也是一个文件,使用who am i命令可查看当前终端文件。

这样就达到了一分钟执行一次ls的效果,后面加上指令crontab —e  杀死这个进程


原创粉丝点击