crontab过错剖析和不履行的原因ITeye - 牛牛娱乐

crontab过错剖析和不履行的原因ITeye

2019年02月28日08时37分01秒 | 作者: 震轩 | 标签: 指令,文件,用户 | 浏览: 1943

Cron

Cron is a time-based job scheduler in Unix-like computer operating systems.The name cron comes from the world chronograph(a time-piece).

Cron enables users to schedule jobs(commands or shell scripts)to run automatically at a certain time or date.It is commonly used to automate system maintenance or administration,though its general purpose nature means that it can be used for other purposes,such as connecting to the Internet and downloading email.

.—————- 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

| | | | |

* * * * * command to be executed

其实我却是以为运用 Crontab 最常见的一个问题往往是由于环境变量不对。常常会看到论坛里有人问:为什么我的 Crontab 创立了不履行? 预备创立一条 Cron JOB 的时分,很多人都喜爱在指令行下运转一遍,由于这个时分环境变量是跟着 Shell 主动带进来,在 Crontab 中则或许由于找不到正确的环境变量,JOB 就不能履行。这个小问题就像出天花,一次经验之后就都记住了。

有必要运用的一则技巧

每条 JOB 履行结束之后,体系会主动将输出发送邮件给当时体系用户。铢积寸累,十分的多,甚至会撑爆整个体系。所以每条 JOB 指令后边进行重定向处理是十分必要的: /dev/null 2 1 。条件是对 Job 中的指令需求正常输呈现已作了必定的处理, 比方追加到某个特定日志文件

1.直接用crontab指令修改

cron效劳供给crontab指令来设定cron效劳的,以下是这个指令的一些参数与阐明:

crontab -u //设定某个用户的cron效劳,一般root用户在履行这个指令的时分需求此参数

crontab -l //列出某个用户cron效劳的具体内容

crontab -r //删去没个用户的cron效劳

crontab -e //修改某个用户的cron效劳

比方说root查看自己的cron设置:crontab -u root -l

再例如,root想删去fred的cron设置:crontab -u fred -r

在修改cron效劳时,修改的内容有一些格局和约好,输入:crontab -u root -e

进入vi修改形式,修改的内容必定要契合下面的格局:*/1 * * * * ls /tmp/ls.txt

这个格局的前一部分是对时刻的设定,后边一部分是要履行的指令,假如要履行的指令太多,能够把这些指令写到一个脚本里边,然后在这里直接调用这个脚本就能够了,调用的时分记住写出指令的完好途径。时刻的设定咱们有必定的约好,前面五个*号代表五个数字,数字的取值规模和意义如下:

分钟 (0-59)

小時 (0-23)

日期 (1-31)

月份 (1-12)

星期 (0-6)//0代表星期天

除了数字还有几个个特别的符号就是”*”、”/”和”-”、”,”,*代表一切的取值规模内的数字,”/”代表每的意思,”*/5″表明每5个单位,”-”代表从某个数字到某个数字,”,”分隔几个离散的数字。以下举几个比如阐明问题:

每天早上6点

0 6 * * * echo “Good morning.” /tmp/test.txt //留意单纯echo,从屏幕上看不到任何输出,由于cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo “Have a break now.” /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * * echo “Have a good dream:)” /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

早上4点

0 4 1 1 * command line

每次修改完某个用户的cron设置后,cron主动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记载在这个文件中,这个文件是不能够直接修改的,只能够用crontab -e 来修改。cron发动后每过一份钟读一次这个文件,查看是否要履行里边的指令。因而此文件修改后不需求重新发动cron效劳。

2.修改/etc/crontab 文件装备cron

cron 效劳每分钟不只要读一次/var/spool/cron内的一切文件,还需求读一次/etc/crontab,因而咱们装备这个文件也能运用cron效劳做一些工作。用crontab装备是针对某个用户的,而修改/etc/crontab是针对体系的使命。此文件的文件格局是:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root //假如呈现过错,或许有数据输出,数据作为邮件发给这个帐号

HOME=/ //运用者运转的途径,这里是根目录

# run-parts

01 * * * * root run-parts /etc/cron.hourly //每小时履行/etc/cron.hourly内的脚本

02 4 * * * root run-parts /etc/cron.daily //每天履行/etc/cron.daily内的脚本

22 4 * * 0 root run-parts /etc/cron.weekly //每星期履行/etc/cron.weekly内的脚本

42 4 1 * * root run-parts /etc/cron.monthly //每月去履行/etc/cron.monthly内的脚本

我们留意”run-parts”这个参数了,假如去掉这个参数的话,后边就能够写要运转的某个脚本名,而不是文件夹名了。

 

另:crontab 添加日志 0 6 * * * $HOME/for_crontab/createTomorrowTables $HOME/for_crontab/mylog.log 2 1

参阅:

http://en.wikipedia.org/wiki/Crontab

http://www.dbanotes.net/techmemo/crontab_tips.html

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章