详解Linux下crontab的使用与注意事项

来源:脚本之家  责任编辑:小易  

一、在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。 每一小时执行myscript.php如下: 复制代码 代码如下: # crontab -e 00 * * * * /usr/local/bin/php &

crontab是一个用于设置周期性被执行的指令。其守护进程为crond. crontab分为两种配置模式,一种为用户级的crontab,一种为系统级的crontab,这里我们分开来谈。

你先看看服务是否开了service crond start 还有 date >> t.txt 这个t.txt最好写全路径,不然不知道弄到哪去了,也许已经执行了你没找到文件。

用户级crontab

要使用绝对路径,因为crontab中也需要环境变量。 如果不想写绝对路径,可以使用 `which ps` -e -o pid= -o '\%cpu=' >> /home/deng/d2.txt (让which命令自动寻找ps的绝对路径)

用户使用新建循环型工作调度时,使用的crontab命令,crontab -e所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename

* * */14 * * command

用户控制文件

检查crontab有无调用环境变量。

/etc/cron.allow :

冬天穿什么显瘦又保暖学会这些方法即可都说寒冬不时髦,那是因为那么冷你肯定会穿起厚厚的衣服来那样怎么时髦?难道为了保暖就要放弃对时髦的追求吗,答案是不,想知道冬天怎么穿显瘦又保暖学会这些即使看起来轻薄高挑照样保暖。One:同色系混搭即使在冬日同色系的搭配一样行的通,本身的视觉竖直拉伸效果加上冬装的叠穿混搭更显瘦,里三层外三层的在同色系中也不会显得臃肿更不必担心会冷了。▲同色系混搭示范▲同色系混搭示范同色系带来的视觉效果使人看起来像纸片人一般,心机的内搭使简约的同时多了几分时髦。Two:提高腰线说到显瘦显高提高腰线已是老生常谈,毕竟它在身材比例中的作用太大,这招在冬日的搭配中也是行得通的,外面穿一

将可以使用crontab的用户写入,仅该文件内的用户可以使用crontab,相当于白名单

谁说科比能排在湖人队中的第二位,我认为科比也就是第三或者第四的水平吧。科比的人气你要说是湖人第一,这我相信,但是在NBA赛场他取得的成就怎么也不敢说能比魔术师、贾巴尔、奥尼尔强吧,他比韦斯特、贝勒高还是可以的。湖人是NBA历史上最伟大的球队,因此出的球星也特别多,论NBA历史地位,科比都进不了NBA前十,而另外三名湖人球员贾巴尔、魔术师、奥尼尔都位居前十之列。下面我们来看看他们的荣誉对比,科比-布莱恩特职业生涯5夺总冠军,2次FMVP,1次MVP,18次全明星,15次最佳阵容,12次防守最佳阵容,2次得分王。魔术师约翰逊职业生涯5夺总冠军3次FMVP,3次MVP,12次入选全明星10次最佳阵容

/etc/cron.deny :

孕妈的备产包里一样必备物品就是产妇卫生巾,它是专门为妊娠后的孕妇所特别准备的,合格的产妇卫生巾能有效的避免感染,保障新妈妈的身体安全。科学解读产妇卫生巾的必要性产妇卫生巾分为L\\M\\S三个型号,对应的是恶露的三个不同时期;产妇卫生巾是专门应对恶露的,不会造成产妇的皮肤刺激,另外也没有普通卫生巾里面的粘合剂、荧光增白粉等物质,更天然一些;完全无菌状态的产妇卫生巾更加安全可靠,减少感染的安全隐患;最大程度的减少对伤口的刺激,给脆弱的产后妈妈最切身的舒适感受。产妇卫生巾的使用方法L号应对恶露最多的时期:生产后2-3天是恶露排出的集中期,产妇可配合专用的卫生裤一起使用,产后第一时间进行护理时,L号

将禁止使用crontab的用户写入,仅该文件内的用户禁止使用crontab,相当于黑名单

这是一块新疆和田玉青玉原石。密度大于2.95。应该在3.0左右。原石有僵棉,颜色发暗。结构致密,油性尚好。去绺除杂后可雕刻把玩。和田青玉:和田玉青玉产量约占和田玉产量的百分之八十,致色成因为亚铁离子。因致色深浅度和混杂其它矿物致色元素而呈现不同。如我们熟知的青白、塔青,翠青、烟青、黑青、碧青等等。新疆料、俄罗斯料、青海料、韩料均有产出。籽料、山流水料、山料、戈壁料都有覆盖。青白料↓塔青↓翠青↓烟青↓黑青↓碧青↓青玉籽料↓青玉山流水料↓青玉山料↓青玉戈壁料↓新疆和田青玉最大的的特点是:由于结构交织致密,往往具有非常好的韧性,玉料韧度高、油润度好。历代封建王朝的传国玉玺均为青玉材质,代表清王朝最高

其中/etc/cron.allow优先级大于/etc/cron.deny,为避免混淆,建议二者仅使用一个。

命令

crontab [-u usename] [-l|-e|-r] 参数: -u:只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度 -e: 调用vi编辑crontab的工作内容 -l: 列出crontab的工作内容 -r: 删除所有crontab的工作内容。

语法

# .---------------- 分钟 (0 - 59) # | .------------- 小时 (0 - 23) # | | .---------- 日期 (1 - 31) # | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- 周几 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * 命令

语法与系统级crontab很相似,不同点在于此处不需要指定执行用户,而系统级crontab(/etc/crontab)中需要。

举例如下:

*/10 * * * * /home/test.sh #每隔10分钟就以当前用户执行一次/home/test.sh脚本 0 2 * * * /home/test.sh #每天2点 0 5,17 * * * /home/test.sh #每天5点、17点 0 17 * * sun /home/test.sh #每周日17点 0 4,17 * * sun,mon /home/test.sh#每周一、周日 @reboot /home/test.sh #系统重启时

这里推荐一个在线小工具:在线生成cron表达式

系统级crontab

系统级crontab一般用于系统的例行性任务,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等。配置文件为/etc/crontab,该文件仅root用户能够编辑。

编辑/etc/crontab

默认内容如下:

SHELL=/bin/bash 这里是指定使用哪种shell接口 PATH=/sbin:/bin:/usr/sbin:/usr/bin 这里指定文件查找路径 MAILTO=root 如果有额外的STDOUT,以email将数据送给谁,可以指定系统用户,也可以指定email地址,如alliot@iots.vip # For details see man 4 crontabs # Example of job definition: # .---------------- 分钟 (0 - 59) # | .------------- 小时 (0 - 23) # | | .---------- 日期 (1 - 31) # | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- 周几 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * 用户名 命令

即:

分 时 日 月 周 执行用户 任务命令

比如我要添加一个计划任务,每隔10分钟就以root身份执行一次/home/test.sh脚本,则在后面添加:

*/10 * * * * root /home/test.sh

这里注意,不要漏掉执行者root(用户级的crontab中不需要指定执行者),否则会在/var/log/cron日志中出现”ERROR (getpwnam() failed)”错误,计划任务无法正常运行。

重启服务

一般来说Linux下的crontab会自动帮我们每分钟重新读取一次 /etc/crontab 的例行工作事项,但是出于某些原因或者是其他的Unix系统中,由于crontab是读到内存当中的,所以栽修改完 /etc/crontab 之后,可能并不会马上执行,这时候需要重启crontab服务。

这里以CentOS为例:

service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重载配置 service crond status //服务状态

如果是CentOS 7则:

systemctl restart crond.service //重启服务 systemctl start crond.service //启动服务 systemctl stop crond.service //停止服务 systemctl reload crond.service //重载配置 systemctl status crond.service //服务状态

其他注意事项

取消不需要的输出

当执行结果或者执行的选项中有输出的数据时,该数据会通过mail发送给MAILTO指定的账号,若某一个调度一直出错,同时mail服务出现问题(事实上我根本就没开这个服务),将会产生大量的文件于 /var/spool/clientmqueue/ ,所以最好是将crontab里面的命令后面加上> /dev/null 2>&1

2>:重定向错误。

2>&1:把错误重定向到输出要送到的地方。即把上述命令的执行结果重定向到 /dev/null ,即抛弃,同时,把产生的错误也抛弃。

检查日志

日志保存在 /var/log/cron 中

语法区别

crontab -e命令会检查语法,而vim编辑 /etc/crontab 则不会,这里注意的是,crontab -e不需要写执行者用户名,而 /etc/crontab 需要指定。 执行路径必须使用绝对路径,否则可能无法正常执行。 周与日、月不能共存,即你可以分别以周或者是日、月为单位进行循环,但不可指定“几月几号且为星期几”的模式工作。

参考资料

鸟哥的Linux私房菜

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

如何知道linux下crontab的使用者都有谁?

名称 : crontab

使用权限 : 所有使用者

使用方式 :

crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

linux 中的crontab使用方法

噢,你把这个文件保存下来嘛。

然后你运行 crontab -e

然后在vi编辑器里输入

*/5 * * * * root ./temp.sh

然后保存就可以了。

crontab的具体用法我复一个文档给你。

噢,下午已有一个高手回答了,答得很简略也很实用。你可以听他的。

*************************************************************

linux 下的crontab如何写

wscdlzhom发布于 2008-2-24 | 439次阅读 字号: 大 中 小 (网友评论 0 条) 我要评论

crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。

cron 的主配置文件是 /etc/crontab,它包括下面几行:

SHELL=/bin/bash

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

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

前四行是用来配置 cron 任务运行环境的变量。SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);PATH 变量定义用来执行命令的路径。cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

/etc/crontab 文件中的每一行都代表一项任务,它的格式是:

minute hour day month dayofweek command

minute — 分钟,从 0 到 59 之间的任何整数

hour — 小时,从 0 到 23 之间的任何整数

day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)

month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)

dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)

command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理。

如你在 /etc/crontab 文件中所见,它使用 run-parts 脚本来执行 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本。

如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。

# record the memory usage of the system every monday

# at 3:30AM in the file /tmp/meminfo 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo

# run custom script the first day of every month at 4:10AM 10 4 1 * * /root/scripts/backup.sh

同时在写crontab执行的.sh脚本时要注意添加权限和路径。例如:

crontab语句:30 14 * * * /opt/apps/ems_query/bin/start.sh

相应的脚本:

source /home/tvgame/.bash_profile

cd /opt/apps/ems_query/bin/

java -Xmx64M -jar ../lib/ems_query.jar &

linux 下crontab -e 出现问题

说明你的crontab里原来什么都没有,用vi的编辑方式把你要的内容添加进去就行了:

按 i 键,然后将* */1 * * * /usr/sbin/ntpdate 192.168.1.7 && /usr/sbin/hwclock -w 输入

然后按 ESC键,然后输入 :x回车

最后查看crontab: crontab -l

谁能提供LINUX下crontab指令的源代码

linux下的定时访问可以使用corntab来实现

1、首先编辑corntab,添加如下命令

#每两个小时

0 */2 * * * sometask.sh

上面的这段代码是每两个小时 执行sometask.sh,这样我们可以在sometask.sh里

实现访问网络地址;

2、sometask.sh代码

#!/bin/sh

curl www.some123.com

经过以上两部就可以实现定时访问了。

或者:

加一个定时执行一个指定脚本的功能,而这个指定的脚本,就是我写的,代码很简单如下:

#!/bin/sh

php -f example.php

这是使用的php解析器的一个功能。写完这个脚本,可以现在终端窗口里测试一下。如果有找不到php的错误出现,说明在系统里没有知道php这个执行文件,需要加上指定的路径。example.php就是本地的一个php脚本,可以在这个脚本里用php做任何php能做的事情了。

总的方案有些罗嗦,比如本来可以在crontab里面直接执行自己写的脚本里面的内容,毕竟只有一行。我考虑的是,把要执行的部分独立出来,而不是全部放到crontab里面去。本来看man php,说是php可以直接写成脚本由crontab里面的命令执行的,但是发现语法不对,也不去研究了,算了。

为什么我的linux系统上/etc/crontab为空的?

crontab是定时服务,Linux中cron服务不管你有没有添加定时任务,服务都会运行,这是内核级的服务。

用法详解:

crontab file [-u user]-用指定的文件替代目前的crontab。

crontab-[-u user]-用标准输入替代目前的crontab.

crontab-1[user]-列出用户目前的crontab.

crontab-e[user]-编辑用户目前的crontab.

crontab-d[user]-删除用户目前的crontab.

crontab-c dir- 指定crontab的目录。

crontab文件的格式:M H D m d cmd.

基本格式 :

* * * * * command

分 时 日 月 周 命令

M: 分钟(0-59)。每分钟用*或者 */1表示

H:小时(0-23)。(0表示0点)

D:天(1-31)。

m: 月(1-12)。

d: 一星期内的天(0~6,0为星期天)。

cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数 :

crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

crontab -r : 删除目前的时程表

crontab -l : 列出目前的时程表

crontab file [-u user]-用指定的文件替代目前的crontab。

时程表的格式如下 :

f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推

当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

例子 :

#每天早上7点执行一次 /bin/ls :

0 7 * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :

0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 alex@domain.name :

0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"

20 0-23/2 * * * echo "haha"

  • 本文相关:
  • 如何使用linux的crontab定时执行php脚本的方法
  • linux使用crontab实现php执行计划定时任务
  • 详解使用python crontab设置linux定时任务
  • 使用linux命令crontab间隔时间执行其它命令
  • linux centos使用crontab设置定时重启的方法
  • linux使用find和crontab命令定期清理过期文件
  • linux定时器crontab的使用教程
  • linux定时任务crontab命令使用详解与总结
  • linux中使用crontab命令启用自定义定时任务实例
  • linux使用crontab定时访问某个路由地址的方法
  • linux定时任务crontab的使用方法
  • centos 7中 apache web 服务器安装配置教程
  • linux线程间的同步与互斥知识点总结
  • ubuntu14.04服务器环境下配置php7.0+apache2+mysql5.7的方法
  • linux 普通用户切换成root免密码的实现
  • 搭建阿里云ecs服务器之安装图形化界面的方法
  • 对send(),recv()函数的全面理解
  • lnmp部署及https服务开启教程
  • ddns 的工作原理及其在 linux 上的实现
  • linux(center os7)安装jdk、tomcat、mysql 搭建java web项目运
  • linux nfs 服务安全加固方法
  • 如何知道linux下crontab的使用者都有谁?
  • linux 中的crontab使用方法
  • linux 下crontab -e 出现问题
  • 谁能提供LINUX下crontab指令的源代码
  • 为什么我的linux系统上/etc/crontab为空的?
  • 如何使用Linux的Crontab定时执行PHP脚本的方法
  • linux中,crontab 不能自动执行.sh文件
  • 想问一下linux下crontab为什么不启动
  • 求助Linux下关于crontab里每隔两周运行一次命令的...
  • Linux下使用Crontab启动一个进程,但是该进程为什...
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved