linux下编写定时任务crontab

linux下编写定时任务crontab,第1张

linux下槐腔的crontab服务:

1、crontab 是用来让使用者在固定时间或固定间隔执行程序之用

在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。

以某一频率执行任务

linux缺省会启动crond进程,crond进程不需要用户启动、关闭。

crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。

cron的调度文件有以下几个:

1. crontab

2. cron.d

3. cron.daily

4. cron.hourly

5. cron.monthly

6. cron.weekly

如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。

示例:

每隔一分钟执行一次脚本 /opt/bin/test-cron.sh

可以在cron.d新建脚本 echo-date.sh

内容为

*/1 * * * * root /opt/bin/test-cron.sh

2、cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,如果它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

你也可以将这个服务在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/service crond start

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了

查看服务是否已经运行用 ps -ax | grep cron

3、crontab命令

查看该用户下的crontab服务是否创建成功, 用 crontab -l 命令

命令 which php 查看linux下安装的php的路径

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

任务调度的crond常驻命令crond 是linux用来定期执行程序的命令。当安装完成 *** 作系统之后,默认便会启动此 任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

crontab命令选项:

-u指定一个用户

-l列出某个用户的任务计划

-r删除某个用户的任务

-e编辑某个用户的任务

4、cron文件语法:

分 小时日 月 星期 命令

0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)

5、 新增调度任务

新增调度任务可用两种方法:

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。

2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。

6、 查看调度任务铅哪衫

crontab -l //列出当前的所有调度任务

crontab -l -u jp //列出用户jp的所有调度任务

7、 删除任务调度工作

crontab -r //删除所有任务调度工作

8、 任务调度执行结果的转向

例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中

30 5 * * * ls >/jp/test 2>&1

注:2>&1 表示执行结果及错误信息。

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”这个参数了,如果去掉这个参数的话,后面就可以写::要运行的某个脚本名,而不是文件夹名了。

总结:

编写定时任务的两种方式:1.sudo vim /etc/crontab 2. sudo crontab -e

查看定时任务的两种方式:1.sudo cat /etc/crontab 2.sudo crontab -l

*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ &&./back_coupon.sh 2 10 >>/dev/null 2>&1

查看定时任务是否运行:

sudo tail -f /var/log/cron //定时任务日志(查看刚才设置的任务是否执行)

注:脚本有可执行权限

sh a.sh(不需要执行权限)

./sh (需要执行权限)

1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别的。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。

关于crontab

cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。在Ubuntu server 下,cron是被默认安装并启动的。通过/etc/crontab文件,可以看到以下内容:

ununtu 通过调用 run-parts 命令,定时运行四个目录下的所有脚本。

1)/etc/cron.hourly,目录下的脚本会每个小时让执行一次,在每小时的2分钟时运行;

2)/etc/cron.daily,目录下的脚本会每天让执行一次,在每天0点17分时运行;

3)/etc/cron.weekly,目录下的脚本会每周让执行一次,在每周第七天的3点56分时运行;

4)/etc/cron.mouthly,目录下的脚本会每月让执行一次,在每月19号的5点32分时运行;

当然,以上的时间均是系统默认时间,可以根据自己的需求进行修改。

cron 服务的启动与停止

在Ubuntu 9.10下,cron是被默认安装并启动的。而 ubuntu 下启动,停止与重启cron,均是通过调用/etc/init.d/中的脚本进行。命令如下:

1)service cron start  /*启动服务*/

2)service cron stop /*关闭服务*/

3)service cron restart /*重启服务*/

4)service cron reload /*重新载入配置*/

可以通过以下命令查看cron是否在运行(如果在运行,则会返回一个进程ID):

# pgrep cron

crontab命令

crontab 命令用于安装、删除或者列出用于驱动cron后台进程的表格。也就是说,用户把需要执行的命令序列放到crontab文件中以获得执行,每个用户都可以有自己的crontab文件。以掘亏下是这个命令的一些参数与说明:

1)crontab -u /*设定某个用户的cron服务*/

2)crontab -l /*列出某个用户cron服务的详细内容*/

3)crontab -r /*删除某个用户的cron服务*/

4)crontab -e /*编辑某个用户的cron服务*/

参数名称 含义 示例

-l 显示用户的Crontab文件的内容 crontabl –l

-i 删除用户的Crontab文件前给提示 crontabl -ri

-r 从Crontab目录中删除用户的Crontab文件 crontabl -r

-e 编辑用户的Crontab文件 crontabl -e

/etc/crontab文件语法如下:

Minute Hour Day Month Dayofweek command

分钟 小时 天 月 天每星期 命令

每个字段代表的含义及取值范围如下:

Minute :分钟(0-59),表示每个小时的第几分钟执行该任务

Hour : 小时(1-23),表示每天的第几个小时执行该任务

Day : 日期(1-31),表示每月的第几天执行该任务

Month : 月槐散和份(1-12),表示每年的第几个月执行该任务

DayOfWeek : 星期(0-6,0代表星期天),表示每周的第几天执行该任务

Command : 指定要执行的命令(如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调铅盯用这个脚本就可以了,调用的时候记得写出命令的完整路径)

在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。同时,cron支持类似正则表达式的书写,支持如下几个特殊符号定义:

“*” ,代表所有的取值范围内的数字;

“/” , 代表”每”(“*/5”,表示每5个单位);

“-” , 代表从某个数字到某个数字(“1-4”,表示1-4个单位);

“,” ,分开几个离散的数字;

举例如下:

5 * * * * ls /*指定每小时的第5分钟执行一次ls命令*/

30 5 * * * ls /*指定每天的 5:30 执行ls命令*/

30 7 8 * * ls /*指定每月8号的7:30分执行ls命令*/

50 7 * * * root run-parts /etc/cron.daily /*每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件*/

新增 cron 任务

1.执行如下命令添加任务

# crontab -e

1)直接执行命令行,比如每隔1分钟执行date命令并将结果保存至文件/tmp/testCron.txt中,cron 格式如下:

*/1 * * * * date >>/tmp/testCron.txt

2)执�¡.shell 脚本,比如每隔3分钟执行一次/var/backups/test.sh æ–‡ä»¶ï¼Œcron 格式如下:

*/3 * * * * /var/backups/test.sh

文件 /var/backups/test.sh 的内容如下:

———————————————————————————————————————–

#!/bin/sh

cd /var/backups/

Now=`date â€˜+%Y%m%d’`

tar -zcf /var/backups/${Now}Website.tar.gz /var/www/html/

———————————————————————————————————————–

2. 重启cron 服务

# service cron restart


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12333434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存