admin 管理员组

文章数量: 887031


2023年12月17日发(作者:ajax是不是必须添加jquery)

linux,计划任务,每小时执行一次(共7篇)

:每小时 执行 计划 linux linux计划任务不执行 linux计划任务crontab

篇一:Linux 计划任务命令小结

Linux 下的计划任务命令小结

在UNIX下怎样实现和Windows下“计划任务”一样的功能

$crontab -e 编辑脚本

$crontab -l 察看脚本

用$crontab -e 编辑脚本,加入下列行

:分 小时 星期 月 命令

Linux下crontab命令的用法

任务调度的crond常驻命令

crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

linux脚本定时执行

3、Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:文件含义

/etc/ 该文件中所列的用户不允许使用Crontab命令

/etc/ 该文件中所列的用户允许使用Crontab命令

/var/spool/cron/ 是所有用户的crontab文件

/var/spool/cron/crontabs

4、Crontab命令的格式为:crontab –l|-r|-e|-i [username],

其参数含义如表一: 参数名称含义 示例

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

crontab –l

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

crontabl -ri

-r

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

crontabl -r

-e

编辑用户的Crontab文件

crontabl -e

5、用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,格式如下:* * * * * 其时间段的含义如表二: 段 含义 取值范围

第一段代表分钟 0—59

第二段代表小时 0—23

第三段代表日期 1—31

第四段代表月份 1—12

第五段代表星期几0代表星期日

名称 : crontab

使用权限 : 所有使用者

使用方式 :

crontab [ -u user ] file

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

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定

user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

餐数 :

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

-r : 删除目前的时程表

-l : 列出目前的时程表

时程表的格式如下 :

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 的方式来设定时程表。 例子 :

每月每天每小时的第 0 分钟执行一次 /bin/ls :

0 7 * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup : 0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给

[email protected]/* */ :

0 17 * * 1-5 mail -s hi [email protected]/* *//dev/null

2&1 即可

例:如果用户的Crontab文件的内容是:29 19 * * * echo its

dinner time,则系统每天的19:29显示‘its dinner time’

示例(创建一个cron全过程,每分钟都会在里输入当前时间):

1. 以普通用户登录linux系统(我用的是CentOS4.1)

2. $crontab –e

说明:系统默认的编辑器是VIM,如果不是请加上以下shell:

$EDITOR=vi

$export EDITOR

3. 输入”*/1 * * * * date $HOME/”,save and exit VIM

4. $su root

5. $cd /etc/init.d

6. ./crond restart

下面看看看几个具体的例子:

● 0 */2 * * * /sbin/service httpd restart意思是每两个小时重启一次apache

● 50 7 * * * /sbin/service sshd start意思是每天7:50开启ssh服务

● 50 22 * * * /sbin/service sshd stop意思是每天22:50关闭ssh服务

● 0 0 1,15 * * fsck /home每月1号和15号检查/home 磁盘

● 1 * * * * /home/bruce/backup每小时的第一分执行

/home/bruce/backup这个文件

● 00 03 * * 1-5 find /home *.xxx -mtime +4 -exec rm {} ;每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。

● 30 6 */10 * * ls意思是每月的1、11、21、31日是的6:30执行一次ls命令 在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。

以某一频率执行任务

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

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

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

b

.d

y

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

示例:

每隔一分钟执行一次脚本 /opt/bin/ 可以在cron.d新建脚本

内容为

*/1 * * * * root /opt/bin/

在指定的时间运行任务

也可以通过at命令来控制在指定的时间运行任务 如:

at -f -v 10:25

其中-f 指定脚本文件, -v 指定运行时间

quote:ea946d690b=lophyxp]首先用

contab -l

导出contab的配置。

然后编辑文件。以一下格式添加一行: 分钟 小时

天 月 星期 命令

比如

10 3 * * 0,6 hello

就是每周六、周日的3点10分执行hello程序。 15 4 * * 4-6 hello

就是从周四到周六的4点15点执行hello程序。 然后用

contab

命令导入新的配置。

一般不建议直接修改/etc/下的相关配置文件。

启动cron进程的方法:/etc/init.d/crond start

开机就启动cron进程的设置命令:chkconfig --add crond 方法

二:

把cron加入到启动脚本中:

# rc-update add vixie-cron default

crontab -l #查看你的任务

crontab-e#编辑你的任务

crontab-r#删除用户的crontab的内容

实例讲解二:

篇二:linux计划任务和自动登录

? 计划任务

在很多时候为了自动化管理系统,我们都会用到计划任务,比如关机,管理,备份之类的操作,我们都可以使用计划任务来完成,这样可以是管理员的工作量大大降低,而且可靠度更好。

linux系统支持一些能够自动执行任务的服务,我们称为计划任务。

LINUX有如下三种计划任务:

at:指定一个时间执行一个任务 (适用一个或多个任务,执行一次后就不用)

cron:根据一个时间表自动执行任务 (使用一个或多个任务,周期性执行)

系统级别的计划任务及其扩展anacron:在一个指定时间间隔错过后自动执行任

at: 安排一个任务在未来执行,需要一个atd的系统后台进程

检查atd进程是否启动

[[email protected]/* */ 桌面]# service atd status

atd (pid 2274) 正在运行...

[[email protected]/* */ 桌面]# chkconfig |grep atd

atd 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭 如果未启动,可以使用如下命令:

[[email protected]/* */ 桌面]# service atd start

正在启动 atd:[确定]

[[email protected]/* */ 桌面]# chkconfig atd on

常用指令:at:安排

延时任务

具体使用方法:

例1:

#at now+2 minutes 回车

输入要执行的命令

ctrl+d 结束输入

[[email protected]/* */ ~]# at now+2 minutes

at wall Aixi

at EOT

job 2 at 2010-06-18 16:36

EOT是ctrl+d中断输入,这个命令意思是发送一个广播内容是

Hello Aixi.具体时间可以改,单位可以改,可以用hours,months,years,weeks等.

例2 我们还可以跟具体时间

[[email protected]/* */ ~]# at 16:39 dec 10

at Hello Aixi

at EOT ctrl+d结束输入

job 3 at 2010-12-10 16:39

意思是在今年的12月10日16:39运行这个命令.如果不加月和日,默认就是今天.

Atq:查询当前的等待任务

用atq来查询,已经运行的任务,就消失了。这就是at计划任务的重点,只运行一次

atrm:删除等待任务

启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。

格式:atrm 任务号

命令后面跟计划任务编号,如果不跟,就会删除这个用户所有的计划任务。

和at –r 的效果一样

例3

atrm 10 //删除计划任务10

atq //查看计划任务是否删除

at将要运行的命令以文本形式写入/var/spool/at/目录内,等待atd服务的取用和执行。 还可以进入到/var/spool/at目录里把计划任务删除,计划任务的文件都保存在该目录里,可以用rm -f 文件名来删除(以文件的形式删除计划任务,因为计划任务是以文件形式保存在该目录中)

例4:

#cd /var/spool/at //进入到/var/spool/at目录中

ls //显示目录中所有文件

rm -f a0000b0138b19c //删除计划任务

在通常情况下,超级用户都可以使用这个命令。对于其他用户来说,能否可以使用就取决于两个文件:/etc/和/etc/。

at 命令是可以基于用户来控制的,我们可以明确指定哪些用户可以使用at计划任务,哪些用户不可以使用at计划任务。

at的控制文件

/etc/

/etc/

系统默认是有文件,如果某个用户名在这个文件里,他就不能使用at计划任务。如果有文件,allow文件先行,检查了allow明确允许,就不会检查deny。

如果你要让哪个用户不能使用计划任务,就直接把他的用户名写进去就可以了,一排只能写一个。

2、cron服务(参考网址:) 相对与at,cron的优点就是能够周期性的执行某个命令,at却只能执行一次,cron的后台进程名字是crond ,cron也是system V的服务,所以我们可以service crond

start|stop 来启动和关闭此服务,也可以使用chkconfig或者ntsysv来选择cron服务的默认开启,这些命令在以前我们都讲过的

命令:

#crontab -e 编辑当前用户的cron表

#crontab -l查看当前用户的cron表

#crontab -r 删除当前用户的cron进程

#crontab -u 用户名 以某用户的身份来控制cron表

还有个重要的知识点,就是当用户的计划任务建立后是存放在var/spool/cron这个目录

当使用crontab -e编辑当前用户的cron表后,会出现一个vi文件,cron的格式是这样的。分成两列,左边是时间,右边是运行的命令。时间是由5个部分组成。

例:

* * * * * wall hello everyone

5个星号分别代表:minute hour day-of-month month-of-year

day-of-week ,而wall hello everyone 这是命令内容。上面的意识是每分每小时每天每月每周广播hello everyone。具体时间大家可以自己定义。如果要每两分钟发送就用*/2代替第一个*。也可以是用具体时间来表示。

我们使用crontab -e编辑当前用户的cron表

这里的5个星号就代表的时间和日期:

第一个*星号代表个小时的第几分钟:minute 范围是从0-59

第二个*星号代表每天的第几个小时:hour 范围是从0-23

第三个*星号代表每月的第几个日:day-of-month 范围从1-31

第四个*星号代表没年的第几个月:month-of-year 范围从1-12

第五个*星号代表每周的星期几:day-of-week 范围从0-6,其中0和7都表示星期日 用户名:也就是执行程序要通过哪个用户来执行,这个一般可以省略;

命令:执行的命令和参数。

使用者也可以将所有的设定先存放在档案 file 中,用 crontab

file 的方式来设定时程表。

* 表示任意时刻

,表示分隔符号,把不同的时间点分开

— 表示时间段 如2-5表示2-5这段时间

*/n 表示频率,即没n个时间段一次

3、系统级别的计划任务及其扩展anacrontab

这个是系统设置好了,清理系统垃圾或者是自动执行某些脚本的系统任务,在开机时自动运行检查,根据时间戳检查没有运行的计划任务并立刻执行。一般我们做了解就行了,不要更改配置文件是/etc/cotab

SHELL:就是运行计划任务的解释器,默认是bash

PATH:执行命令的环境变量

MAILTO:计划任务的出发者用户

HOME:家目录为/

run-parts是一个脚本,在/usr/bin/run-parts,作用是执行一个目录下的所有脚本/程序。 run-parts /etc/执行目录/etc//之下的所有脚本/程序.

run-parts下面就是运行的命令

vim /etc/crontab 与crontab -e写入的定时运行的区别?

vim /etc/crontab:是系统级别定义的crontab,/etc/crontab的所有者和组都是root

crontab -e :是用户自定义的crontab,是所有的用户都可以写入的

两种方法记录的位置不一样,一个在/etc/ 另一个在/var/ 里面。都被cron服务调用 如果系统在以上说的时间没有开机怎么办?那么这个脚本不就是不能执行了?设计者早就想到了这个问题,所以就有了cron服务的扩展,目的就是为了防止非24小时开机的计算机遗漏的守护任务,anacrontab就是系统计划任务的扩展文件:在一个指定时间间隔错过后自动执行任务

格式是这样的:

period delay job-identifier command

period — 命令执行的频率(天数)

delay — 延迟时间(分钟)

job-identifier — 任务的描述,用在 anacron 的消息中,并作为作业时间戳文件的名称,只能包括非空白的字符(除斜线外)。

command — 要执行的命令

第一行的意思是:每天开机65分钟后就检查文件是否被执行了,如果今天没有被执行就执行他

第二行的意思是:每隔7天开机后70分钟检查文件是否被执行了,如果一周内没有被执行就执行他

第三行的意思也差不多

下面说说关于cron服务的控制,和at差不多,就是/etc/这个配置文件来控制,里面写入要禁止使用cron用户的名字,一行一个就OK了

性能优化

设置文件夹打开方式 设置屏幕保护时间 解除上网限制

常见问题

部分网站无法访问问题的解决

CentOS 5内核对TCP的读缓冲区大小有缺省设置,缺省为:_rmem = 4096 87380 4194304

解决办法就是将最后一个数字改小一点,具体操作就是在文件

/etc/中添加一行: _rmem = 4096 87380

174760

然后保存

重新启动网络service network restart,就OK了,如果还是部分网站上不去,可以检查/etc/文件是否和下面相同

_local_port_range = 1024 65536

_max=174760

_max=16777216

_rmem=4096 87380 174760

_wmem=4096 65536 16777216

_fin_timeout = 15

_keepalive_time = 600

_tw_recycle = 1

_max_backlog = 30000

_no_metrics_save=1

onn = 262144

_syncookies = 1

_max_orphans = 8000

_max_syn_backlog = 8000

_synack_retries = 2

_syn_retries = 2

_wmem=4096 65536 16777216 :为自动调优定义每

个 socket 使用的内存。第一个值4096是为socket 的发送缓冲区分配的最少字节数。第二个值65536是默认值(该值会被

wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。第三个值16777216是发送缓冲区空间的最大字节数(该值会被wmem_max 覆盖)

_rmem=4096 87380 174760:与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值。

_max = 25165824 #定义最大的TCP/IP栈的接收窗口大小 _default = 25165824#定义默认的TCP/IP栈的接收窗口大小

_max = 25165824 #定义最大的TCP/IP栈的发送窗口大小

_default = 65536 #定义默认的TCP/IP栈的发送窗口大小

_sack =1 #启用有选择的应答(Selective

Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。

_window_scaling = 1 #启用RFC1323定义,支持超过64K窗口

_fack =1 #启用转发应答(Forward

Acknowledgment),这可以进行有选择应答(SACK)从而减少拥

塞情况的发生;这个选项也应该启用。

_mem 24576 32768 49152 确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)。第一个值是内存使用的下限。第二个值是内存压力模式开始对缓冲区使用应用压力的上限。第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)。

Centos5无法连接无线网络

系统-管理-服务器设置-服务,将NetworkManager选项勾选,点击重启服务。然后就可以看到右上角已经有了网络连接。

篇三:Linux计划任务调度

Linux计划任务调度 一、crond简介

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

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

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

/etc/crontab文件包括下面几行:

SHELL=/bin/bash

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

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/

02 4 * * * root run-parts /etc/

22 4 * * 0 root run-parts /etc/

42 4 1 * * root run-parts /etc/y

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本

时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

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

二、crontab工具的使用

(1)crontab的使用格式

crontab常用的使用格式有如下两种:

crontab [-u user] [file]

crontab [-u user] [-e|-l|-r |-i]

选项含义如下:

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

? -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

(2)crontab文件的含义

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它

的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minutehourdaymonthweekcommand

其中:

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

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

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

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

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 ? command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。 在以上各个字段中,还可以使用以下特殊字符:

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

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

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

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

(3)crontab文件举例

0 */3 * * * /usr/local/apache2/apachectl restart

表示每隔3个小时重启apache服务一次。

30 3 * * 6 /webdata/bin/

表示每周六的3点30分执行/webdata/bin/脚本的操作。

0 0 1,20 * * fsck /dev/sdb8

表示每个月的1号和20号检查/dev/sdb8磁盘设备。

10 5 */5 * * echo /usr/local/apache2/log/access_log

表示每个月的5号、10号、15号、20号、25号、30号的5点10分执行清理apache日志操作。

三、 使用crontab工具的注意事项

(1)注意环境变量问题

有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这样,系统执行任务调度时就没有问题了。

(2)注意清理系统用户的邮件日志

每条任务调度执行完毕,系统都会将任务输出信息通过电子邮

件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。

例如,可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * /usr/local/apache2/apachectl restart /dev/null

2&1

“/dev/null 2&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

(3)系统级任务调度与用户级任务调度

系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

篇四:LINUX下计划任务的配置

LINUX下计划任务的配置 计划任务的概述

系统中有两个守护进程cron和anacron用于自动执行周期性任

务,cron与anacron是完全不同的两个用于定期执行任务的守护进程。

A. cron 假定服务器是 24*7 全天候运行的,当系统时间变化或有一段关机时间就会遗漏这一时间段应该执行的cron任务。

B. anacron(anachronistic cron)是cron的一个连续时间版本,它不会因为时间不连续而导致的任务不执行。

C. anacron 是针对非全天候运行而设计的,当 anacron 发现时间不连续时,也会执行这一时间段内该执行的任务,这样就不会遗漏计划任务的执行。

D. 每个用户都可以安排自己的 cron 任务。超级用户可以管理系统的cron任务和anacron任务。

设置用户自己的计划任务

cron守护进程会去搜索/var/spool/cron 目录下的文件和/etc/crontab文件,/etc/crontab这个文件是系统安装时设置好的自动安排的进程任务的crontab文件。

cron简介

cron守护进程启动以后,它将首先检查是否有用户设置了crontab文件,cron守护进程首先会搜索 /var/spool/cron目录,寻找以 /etc/passwd文件中的用户名命名的crontab文件,被找到的这种文件将载入内存。例如一个用户名为 benet的用户,它所对应的

crontab文件就应该是 /var/spool/cron/benet,也就是说,以该

用户命名的crontab文件存放在 /var/spool/cron目录下面。如果cron守护进程没有发现相应的crontab文件就转入“休眠”状态,释放系统资源,所以该后台进程占用资源极少。cron守护进程每分钟唤醒一次,当crontab中的时间和日期与系统的当前时间和日期相同时,就执行相应的cron任务,cron任务执行结束后,任何输出都将作为邮件发送给安排cron任务的所有者,或者是crontab中 MAILTO 环境变量中指定的用户。

cron守护进程的执行不需要用户干涉;只需要用户安排crontab文件,在该文件中要执行的时间和命令序列,下面介绍crontab命令。 crontab命令

每个用户都可以设置自己的crontab文件以便执行用户自己需要的自动运行的任务。用户自己的crontab文件位于

/var/spool/cron/ 目录,但用户不能直接编辑这些文件,用户必须使用crontab命令编辑它。

crontab命令用于安装、删除或者列出用于驱动cron后台进程的crontab任务,crontab的命令格式如下:

格式1:crontab [-u user] file

格式2:crontab [-u user] [-l|-r|-e]

下表是 crontab 命令的选项说明

crontab文件中的每一行格式为:

minute hour day-of-month month-of-year day-of-week

[ username] commands

每行中都由用空格间隔的七个字段组成。下表说明了各个字段的含义和取值范围。

下面重点说明一下前五个时间字段的语法:

A. 不能为空,可以使用统配符*表示任何时间。

B. 可以指定多个值,它们之间用逗号间隔。例如:1,3,7。

C. 可以指定时间段,用减号间隔。例如:0-6。

D. 可以用/n表示步长。例如:8-18/2表示时间序列

8,10,12,14,16,18。

E. 可以在crontab文件中定义并使用环境变量。

F. 如果要执行多条命令可以将其写入一个脚本中,在commands字段中只需写脚本文件名即可。

自动安排进程任务举例

执行如下命令安排root用户的crontab任务:

# crontab –e

# 每月1日和15日凌晨1:30使系统进入维护状态,重新启动系统

30 1 1,15 * * shutdown –r +10 /dev/null 2&1

# 每天凌晨的2点删除/ftp/incoming/temp目录下的所有文件

00 02 * * * rm -rf /ftp/incoming/temp/*

# 每天凌晨的1点删除/tmp目录下7天没有被修改过的所有子目录

# 不包括/tmp当前目录和lost+found目录

00 01 * * * find /tmp !–name . ! –name lost+found –type d

–mtime +7 –exec /bin/rm–rf {} ‘;’

# 每天早上8点将 /var/log/secure 文件内容发送给

[email protected]/* */

0 8 * * * mail [email protected]/* */ /var/log/secure #

每隔两小时将命令 netstat -a 的输出发送给

[email protected]/* */ 0 */2 * * * netstat -a | mail

[email protected]/* */

篇五:Linux定时任务设置详细操作记录

Linux定时任务设置详细操作记录

基本格式 :

* * * * * command

分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart

每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

一月一号的4点重启apache

名称 : crontab

使用权限 : 所有使用者

使用方式 :

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.

M: 分钟(0-59)。

H:小时(0-23)。

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 寄一封信给

[email protected]/* */ :

0 17 * * 1-5 mail -s hi [email protected]/* */

/tmp/maildata

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

echo haha

20 0-23/2 * * * echo haha

注意 :

当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之

后加上 /dev/null 2&1 即可

例子2 :

#每天早上6点10分

10 6 * * * date

#每两个小时

0 */2 * * * date

#晚上11点到早上8点之间每两个小时,早上8点 0 23-7/2,8

* * * date

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

4 * mon-wed date

#1月份日早上4点

0 4 1 jan * date

范例

$crontab -l 列出用户目前的crontab.

篇六:Linux下计划任务crontab配置实现

Linux下计划任务

1,at一次性任务设置 (at 时间 如:at 17:302013-04-06)

使用atq查看,使用atrm删除

2,crontab周期性任务设置

1,/etc/crontab系统任务的配置文件,这个文件一般不需要人为修改

2,/var/spool/cron/用户cron任务配置存放目录

3,使用crontab命令管理 用户的计划任务 Crontab-e 编辑计划任务列表 -u 指定计划任务属于那个用户,只有root用户有权限使用此选项 -l 列出计划任务 -r 删除计划任务

Crontab任务配置目录中的格式如下:

分钟(0-59)+小时(0-23)+日期(1-31)+月份(1-12)+星期(0-7)+执行的操作(命令或脚本) 时间数值的特殊表示方法:

*表示范围内的任意时间

,表示间隔的多个不连续时间点

- 表示一个连续的时间范围

/ 表示间隔的时间频率

例子:

0 17 * * 1-5

周一到周五每天下午

5

30

8 * * 1,3,5 每周1,3,5的8点半

0 8-18/2 * * * 每天8-18点每隔两小时 0 * */3 * *

每三天

0 23 1 * * 每个月1号的23:00

篇七:linux计划任务crontab

Linux计划任务入门详解

[[email protected]/* */ ~]# yum install vixie-cron

[[email protected]/* */ ~]# yum install crontabs

Linux操作系统定时任务系统 Cron 入门

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

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

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

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

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

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

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

/sbin/service crond start

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:

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/

任务调度的crond常驻命令

crond 是linux用来定期执行程序的命令。当安装完成操作系统

之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

1、linux任务调度的工作主要分为以下两类:

*系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

*个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

b命令选项:

-u指定一个用户,

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

-r删除某个用户的任务,

-e编辑某个用户的任务

文件语法:

分小时日月星期命令

0-590-231-311-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)

4.记住几个特殊符号的含义:

*代表取值范围内的数字,

/代表每,

-代表从某个数字到某个数字,

,分开几个离散的数字

一、任务调度设置文件的写法

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

Minute Hour Day Month Dayofweekcommand

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

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

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 86 * 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命令 ]

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

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

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

二、新增调度任务

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

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

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

三、查看调度任务

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

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

四、删除任务调度工作

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

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

例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///每小时执行/etc/内的脚本

024*** root run-parts /etc/ //每天执行/etc/内的脚本224**0 root run-parts /etc/

//每星期执行/etc/内的脚本

4241** root run-parts /etc/y //每月去执行/etc/y内的脚本

大家注意run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了

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

2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务 11 2 21 10 * rm -rf /mnt/fb


本文标签: 任务 执行 用户 文件