当前位置:首页 » 操作系统 » crontablinux定时

crontablinux定时

发布时间: 2022-11-27 05:00:25

⑴ Kali-linux 定时执行任务Crontab的简单设置

1.修改crontab文件添加或修改定时任务

直接编辑文件:nano /etc/crontab

或使用crontab命令:crontab -e

2.语法介绍:

里面已经有一些test示例,照着添加或修改就行,这里做点简单介绍:

time user command

分                 时             天           月               星期                    用户              命令

minute         hour         day         month         dayofweek         user              command

A. 时间 time:

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

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

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

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

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

command: 要执行的命令(command是linux终端可以直接执行的命令。)

这里一些符号可以表示以上特殊数值:

*表示所有有效值

-表示范围, 比如1-4(从1到4)

,表示散数数值, 比如1,2,4,7...

/表示每隔,比如 */19 (每隔19 )

看一些简单的例子,以下是我自己的一个crontab文件:

root@mtx:~#crontab -l

# /etc/crontab: system-wide crontab

# Unlike any other crontab you don't have to run the `crontab'

# command to install the new version when you edit this file

# and files in /etc/cron.d. These files also have username fields,

# that none of the other crontabs do.

SHELL=/bin/sh

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

# m h dom mon dow usercommand

#17 ** * *root    cd / && run-parts --report /etc/cron.hourly#每小时的17分

#25 6* * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )#每天6点25分

#47 6* * 7roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )#每年7月份里每一天的6点47分

#52 61 * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )#每个月1号的6点52分

*/4 *   * * *   root    /home/Tool/httpslow/httpslow.sh &#每4分钟

#

B. 命令 command

命令command直接是linux终端可以执行的命令或可执行脚本的绝对位置

3.使用方法:

crontab crontab_file (-u user)#如crontab /etc/crontab -u root (root用户执行默认配置文件)

crontab -l#查看当前正在运行的crontab服务

crontab -r#删除用户crontab配置文件

crontab -i#删除前给出提示

crontab -h#查看帮助

/etc/init.d/cron start/stop/restart/reload#启动/停止/重启/重新加载 crontab服务

简单的临时重复命令完全可以有其他方案代替:

while true;do clear && echo '您的ip地址是:' && wget -qo- ifconfig.me/ip;sleep 120;done

#每2分钟刷新一次外网ip地址,并打印出来”

watch -n 5 netstat -nus#显示网络流量,每5秒刷新一次

。。。

⑵ crontab定时任务 和linux请求接口

我能看懂的我感觉所有人都可以看懂

1.  crontab文件格式:

  *           *        *        *        *           command

minute   hour    day   month   week      command

分          时         天      月        星期       命令

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

2. 特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

3.运行crontab –e 编写一条定时任务 */5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本。

4.查询当前用户定时任务或删除当前用户定时任务

chkconfig --list crond         查看是否开机自动启动

chkconfig --level 35 crond on         设置cond开机自动启动

测试get请求

$ curl http://www.linuxidc.com/login.cgi?user=test001&password=123456

2、测试post请求

$ curl -d "user=nickwolfe&password=12345" http://www.linuxidc.com/login.cgi

我长用到的就这俩。

⑶ Linux下定时任务(系统任务调度、用户任务调度)crontab使用详解

crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,在CentOS Linux release 7.2.1511中默认是开机启动的,大家可以使用命令:systemctl status crond进行查看。 crond进程定期(每分钟)检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。用户在cron表
(也被称为crontab文件)指定了定时任务,crontab也就是我们常见的定时任务设置命令。Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度 :系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab文件就是系统任务调度的配置文件。

用户任务调度 :用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

通过以上帮助信息,我们可以知道crond是执行任务计划的一个守护进程。在使用crontab之前我们可以根据帮助信息来设置相关选项,一般情况下我们都使用默认值。

1.建立演示账号crontab。

2.星号(*)使用举例。

以上例子中完整演示了crontab从建立到执行的过程。“5 0 * * * echo "GeekDevOps"”表示在每天00:05执行命令:echo "GeekDevOps"。后面的星号表示只要前面条件满足都执行。例子中的-u选项指定了用户:crontab,-l选项列举了相关用户的用户任务调度,不指定用户则默认为root。执行结果默认写入到用户mail目录下的相关文件中。

3.逗号(,)的使用举例。

现在我们已经把用户切换到crontab下,因此无需额外指定-u选项相关内容。“3 2,6,8 * * *”表示每天的02:03:00、06:03:00、08:03:00分别执行一次命令:ls /usr/local。

4.减号(-)的使用举例。

例子中的“0 2-6 * * 6 df -h /”表示用户crontab在每周六的02:00、03:00、04:00、05:00、06:00执行命令:df -h / 。

5.斜杠(/)的使用举例。

例子中表示每隔2分钟执行一次命令:echo "GeekDevOps">>/root/GeekDevOps.txt。

6.crontab的使用非常简单,很容易理解,只要在取值范围内设置执行的值基本是没有问题的。现在我们要删除已经设置的这些定时任务。

例子中,选项-r表示删除所有定时任务。选项-i表示在删除前进行再次确定,输入y或者Y才能真正删除。

7.备份我们设置的用户任务调度配置文件。

8.系统任务调度的使用举例。

系统任务调度与用户任务调度不一样,需要直接在/etc/crontab里面配置,如果需要指定用户,还需要在执行命令前指定用户名。通过crontab -l 命令是查看不到系统任务调度任务的。

⑷ 怎样在linux中使用crontab编写一个定时任务,可以实现以下功能:

1、crontab命令概念

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。

cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。

crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许

用户拥有自己的crontab文件。

2、检查是否安装了crontab,如果提示未安装请自行安装,crontab安装包在系统光盘里面的pacekage文件夹 相对应的crontab安装包。

⑸ crontab定时任务

Linux系统下提供了一个非常有用的定时任务命令crontab,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

文件格式:

看一个例子:

第1列:分钟0~59
第2列:小时0~23(0表示子夜)
第3列:日1~31
第4列:月1~12
第5列:星期0~7(0和7表示星期天)
第6列:要运行的命令

对于每一列,有如下格式:

所以上面的例子是每分钟将时间重写向到/tmp/cron.log文件中。

创建一个名为<user> cron的文件,其中<user>是用户名,例如, davecron在该文件中加入如下的内容:

在上面的例子中,系统将每隔1分钟向/tmp/cron.log写入一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:

注: 最好在crontab文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的定时作业。

实例1:每1分钟执行一次cmd

实例2:每小时的第3和第15分钟执行

实例3:在上午8点到11点的第3和第15分钟执行

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

实例5:每周一上午8点到11点的第3和第15分钟执行

实例6:每晚的21:30执行

实例7:每月1、10、22日的4 : 45执行

实例8:每周六、周日的1 : 10执行

实例9:每天18 : 00至23 : 00之间每隔30分钟执行

实例10:每星期六的晚上11 : 00 pm执行

实例11:每一小时执行

实例12:晚上11点到早上7点之间,每隔一小时执行

⑹ 如何使用Linux的Crontab定时执行php脚本的方法

键入 crontab
-e 编辑crontab服务文件
------------------------------------------Ubuntu中的linux---------------
安装lynx包:apt-get isntall lynx
先写ln.sh脚本:lynx http://10.11.12.49/data_task.php

设置定时:crontab -e
0 1 * * * bash /var/www/test/ln.sh
-------------------------------------------------------------------------
分为两种情况:
第一种情况:你的php脚本中没有引入其他PHP文件,也就是说没有include,require_once等命令的PHP文件
* */1 * * * /usr/local/php/bin/php
/var/www/html/wwwroot/web/script.php (每一小时执行一次script.php)
注意,这样写需要把PHP变成可执行的脚本文件。在命令行下,脚本所在目录
chmod +x script.php
注意:你的script.php文件中一定要在开始处加上: #!/usr/local/php/bin/php -q
,下面是一个完整的script.php文件代码
<?php
#!/usr/local/php/bin/php -q
session_start();
define( "DB_PASSWORD", "111111" ); // 服务器登陆密码
define( "DB_NAME", "db_shopping" ); // 数据库名称
define( "DB_USER", "root" ); // 服务器登陆用户
define( "DB_HOST", "127.0.0.1" ); // 服务器IP地址或名称
define( "DB_PORT", "3306" ); // 服务器登陆端口号
define( "DB_CHARSET", "utf8" ); // 数据库默认语言
define( "DB_DEBUG", false ); // 是否设置为调试模式
define( "DB_CLOSE", false ); // 是否主动关闭数据库连接
$con=mysql_connect(DB_HOST.":".DB_PORT,DB_USER,DB_PASSWORD);
mysql_query ( "SET character_set_connection = ".DB_CHARSET.",
character_set_results = ".DB_CHARSET.", character_set_client =
binary");
if (!$con) die("Mysql Error:".mysql_error());
mysql_select_db(DB_NAME,$con);
//$dates=date()

$sqll="insert into test(NAME,Sex,thisdate,state)
values('love','0','2011-08-11','1')";
$resl=mysql_query($sqll);
echo "成功...";
?>

/usr/local/php/bin/php的意思是:用/usr/local/php/bin/目录中的php.exe文件来执行
/var/www/html/wwwroot/web/script.php

第二种情况:你的php脚本中有引入其他PHP文件,也就是说有用到include,require_once命令的PHP文件(先写shell脚本)
上面的方法有一个问题:当script脚本中有include文件时,脚本根本找不对PHP的路径,php将会在/bin/local/php目录下找文件,当然找不到。
所以,遇见这种情况,按照下面的方法做:
在终端上输入如下命令得到sh 和 lynx 程序的路径:
whereis sh
whereis lynx
or
which sh
which lynx
随便输入一个,其中便会返回你要的路径。如果你的系统里没有lynx,试试links,w3m,或者
links2,这些是其它的文本模型浏览器。这些浏览器将会运行你的脚本。
然后你需要创建一个sh文件,用它来调用php文件,通过lynx。假设你的服务器已经安装了lynx,sh路径为
/bin/sh,lynx路径为 /usr/local/bin/lynx
#!/bin/sh
/usr/local/bin/lynx -source
http://www.yoursite.com/folder/script.php
注意感叹号
把这个脚本保存为cron-lynx.sh
保存到一个你找得到的地方,比如:

你可以把它放在网站根目录。
然后再创建一个script.php的文件。当cron运行的时候,将会通过lynx来调用它。这个文件可以通过浏览器来访问

然后编辑主机的crontab,像下面这样。
*/1 * * * * root /bin/sh
/usr/www/yourdirectory/sh_scripts/cron-lynx.sh
在/bin/sh 和 /usr 间有空格。就这样就设好了,还有一点要注意的是,你的sh文件和php文件都正确无误。

===================================================================================

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、任务调度设置文件的写法

可用crontab
-e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件

具体格式如下:

Minute Hour Day Month Dayofweek
command

分钟
小时


天每星期
命令

每个字段代表的含义如下:

Minute
每个小时的第几分钟执行该任务

Hour
每天的第几个小时执行该任务

Day
每月的第几天执行该任务

Month
每年的第几个月执行该任务

DayOfWeek
每周的第几天执行该任务

Command
指定要执行的程序

在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选

字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
举例如下:

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

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

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

30
5
8
6
*
ls
指定每年的6月8日5:30执行ls命令

30
6
*
*
0
ls
指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,

以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]

30
3
10,20
*
*
ls
每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]

25
8-11
*
*
*
ls
每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

*/15
*
*
*
*
ls
每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]

30
6
*/10
*
*
ls
每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

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

50
7
*
*
*
root
run-parts
/etc/cron.daily [
注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

6、 新增调度任务

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

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

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

7、 查看调度任务

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

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

8、 删除任务调度工作

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

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

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

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

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

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

例如:

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

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

11 2 21 10 * rm -rf /mnt/fb

⑺ linux下编写定时任务crontab

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中,所有"."是用来表示当前目录的。

⑻ Linux设置定时任务

《使用PSSH批量管理Linux》 一文中,已经学习了使用pssh批量管理linux的技巧。而很多时候,我们需要定时执行一些任务,或者需要定时执行一些批量任务。因此,本文就来研究一下linux设置定时任务的方法。

主要参考 Linux Crontab 定时任务 、 Linux定时任务Crontab命令详解 和 Linux 定时任务详解 。

cron(crond)是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。另外,由于使用者自己也可以设置计划任务,所以,linux系统也提供了使用者控制计划任务的命令:crontab命令。

crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 /etc/crontab 文件就是系统任务调度的配置文件。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在 /var/spool/cron/crontabs/ 目录中,其文件名与用户名一致。

假设我们使用的是Ubuntu14.04.5 Server版,查看 /etc/crontab ,内容为:

第一行SHELL变量指定了系统要使用哪个shell;第二行PATH变量指定了系统执行 命令的路径。
接下来的命令格式为:
m h dom mon dow user command
英文全拼为:
minute hour day month week user commond

注意, /var/spool/cron 目录中的用户调度任务,没有user一项,因为文件名已经代表了user。

在以上各个字段中,还可以使用以下特殊字符:

crontab命令格式为:
crontab [-u username] [file] [ -e | -l | -r ]

设置定时任务和时间紧密相关,如果服务器的时区时间设置和本地不同,就不能保证计划任务的正确执行。所以使用crontab的第一步,是调节好服务器的时间。

下面参考 Ubuntu 16.04将系统时间写入到硬件时间BIOS ,对服务器时间进行调节。

时间是有时区的,无论硬件时间还是操作系统时间。hwclock的时区在/etc/default/rcS文件中设置,里面有一个参数UTC,默认值为yes,表示使用UTC时区,如果设置为no,那表示使用osclock的时区。建议hwclock与osclock设置相同的时区,也就是no。

1、查看服务器硬件时间
sudo hwclock -r ,看到的时间格式为: Wed 23 May 2018 11:02:17 AM HKT -0.031663 seconds

2、查看服务器系统时间
date ,看到的时间格式为: Wed May 23 11:02:41 HKT 2018

3、设置hwclock和osclock时区相同
sudo vim /etc/default/rcS ,找到:

修改为:

4、将系统时间写入硬件时间
sudo hwclock -w

5、修改系统时区
osclock的时区配置文件为/etc/timezone,不建议直接修改配置文件。

如果你想修改为CST时间,那么执行 sudo tzselect 命令时,选择Asia->China->Beijing Time即可,这时会提示使用Asia/Shanghai时区。(ubuntu和centos通用)

6、设置即刻生效
执行 date ,发现时区没有变化,依然是HKT。

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo ntpdate time.windows.com

如果执行ntpdate报错:ntpdate[18409]: no server suitable for synchronization found ,那么就换一个时间同步工具。
sudo apt-get install rdate
sudo rdate -s time-b.nist.gov

再次执行 date ,发现时区已经变成了CST。

7、硬件时间同步
sudo hwclock -r ,发现硬件时间落后。
sudo hwclock -w ,再次把系统时间写入硬件时间,同步完成。

实例1:每分钟、每小时、每天、每周、每月、每年执行

实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand

实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb
0 * * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb
0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本
01 * * * * root run-parts /etc/cron.hourly
run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了。

目标:每分钟查看一下ganglia的状态,并保存到/tmp/log/ganglia目录。

1、创建/tmp/log/ganglia目录
sudo mkdir -p /tmp/log/ganglia

sudo chmod a+w /tmp/log/ganglia

2、编辑crontab
crontab -e ,选择编辑器为vim

3、在crontab文件中添加一行

4、查看crontab任务
crontab -l ,看到任务已经添加成功。

5、等待了五分钟,发现/tmp/log/ganglia目录下啥也没有。
sudo service cron status ,状态正常。
sudo /etc/init.d/cron restart ,重启cron试试。
又等待了五分钟,发现/tmp/log/ganglia目录下依然空空。

莫非是因为pssh没有使用绝对路径? whereis pssh ,找到pssh路径为 /usr/lib/pssh ,修改crontab为:

然而,并没有用。
还是查看下crontab日志吧!

以下主要参考 Ubuntu下用crontab 部署定时任务 。

1、编辑50-default.conf
sudo vim /etc/rsyslog.d/50-default.conf

2、把cron前的井号去掉,也就是修改为:

3、重启rsyslog服务
sudo service rsyslog restart

4、重启crontab服务
sudo service cron restart

5、查看crontab日志
less /var/log/cron.log

果然发现了问题:

也就是说,命令确实按时执行了,只不过没有执行完,被百分号截断了,导致log文件没有正常生成!

修改crontab为:

终于,log文件成功生成,nice!但是,文件内容是空的!因为, /usr/lib/pssh 是一个目录,不是pssh命令!真正的pssh命令是parallel-ssh,找到它的位置为 /usr/bin/parallel-ssh ,修改crontab:

至此,问题圆满解决。
实际使用的时候,一天获取一次ganglia的状态就够了,所以crontab改成:

以上,每天执行一次定时任务,抓取ganglia的运行状态保存到日志文件中。紧接着,我们的目标是使用脚本检查当天的日志文件,如果发现ganglia运行异常,则产生一个错误日志。

1、假设日志文件ganglia-20180524.log的内容为:

2、参考 grep命令最经常使用的功能总结 ,编写脚本checkganglia.sh

3、执行
chmod a+x checkganglia.sh

./checkganglia.sh

如果所有客户机的ganglia运行正常,就会输出All services are runing!。如果有的客户机ganglia进程不存在,则会在/tmp/log/ganglia/目录下生成当天的错误日志。

4、设置定时运行
因为日志的检查工作要在日志生成之后,所以时间上延后十分钟。

上面的脚本,还有很多要改进的地方。比如有的客户机宕机了,上面的脚本检查不出来。比如有的客户机ganglia服务没有启动,那么具体是哪几台?针对这两个问题,下面进行改进。假设已经知道客户机的数量为10。

参考 csplit命令 ,checkganglia.sh脚本修改为:

以上脚本,实现了当客户机数量不为10的时候,进行报错;当客户机ganglia服务没有启动时,进行报错,并且筛选出所有没有启动ganglia的客户机。

本文中,我们先学习了crontab的基础知识和基本用法。然后通过监控ganglia这一个应用场景来具体学习crontab的详细使用方法,包括查看cron日志的方法,crontab中命令转义的方法,定时执行脚本的方法,以及审阅日志脚本的编写和进阶。

至此,还不够完美,因为我们需要每天登录管理机查看有没有错误日志。下一篇 Linux设置邮件提醒 中,我们将会研究linux设置邮件提醒的方法。审阅完日志后,如果脚本能够给我们发送一封邮件,告知我们审阅的结果,那么我们就不必再每天查看错误日志。

⑼ Centos7 利用crontab定时执行任务及配置方法

crond是什么?

crond 和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。

而crond正是它的守护进程。cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。

linux定时任务分为两种

1)系统自身轮训的任务,比如定时(5天或者一周)备份/var/log/message等日志文件(系统的定时任务一般分为七段或者八段(centos6以下),以空格分割)

系统轮训的配置文件/etc/logrotate.conf (centos7以下的在/etc/cron.daily/logrotate/logrotate.conf )

2)用户执行的定时任务(用户的定时任务一般分为六段)

at适合执行一次就结束的调度任务

anacrontab适合于非7*24小时开机的服务器准备的,是以天为单位执行的,不能指定以分钟的定时任务,在停机期间没有任务执行,可以开机时执行。

cron服务是Linux的内置服务,但它不会开机自动启动,可以每分钟执行任务。可以用以下命令启动和停止服务:

以上1-5行分别为启动、停止、重启服务和重新加载配置、查看服务状态

把cron设为在开机的时候自动启动

crontab操作

基本格式

基本使用

⑽ Linux crontab命令:开启定时任务

vixie-cron 软件包是 cron 的主程序;
crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

chkconfig --level 345 crond on

定时任务设置
使用以下命令打开配置文件,编辑文件,保存即可

示例:
linux corn 在线表达式: https://tool.lu/crontab/

注意:这里的定时表达式和java中的corn不是一样的,具体分别不细说了。

热点内容
plsql异常处理 发布:2024-05-20 07:54:47 浏览:541
dreamweaver上传网页 发布:2024-05-20 07:51:24 浏览:461
拍摄车的分镜头脚本 发布:2024-05-20 07:50:15 浏览:136
mg名爵最高配置是哪个 发布:2024-05-20 07:45:11 浏览:375
辅助官网源码 发布:2024-05-20 07:31:48 浏览:865
androidbutton的属性 发布:2024-05-20 07:18:58 浏览:636
查找重复字段的sql 发布:2024-05-20 07:18:17 浏览:302
我的世界创造房子服务器 发布:2024-05-20 06:48:36 浏览:818
小米笔记本存储不够 发布:2024-05-20 06:32:53 浏览:784
dirt5需要什么配置 发布:2024-05-20 06:02:58 浏览:543