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
版权声明:本文标题:linux,计划任务,每小时执行一次(共7篇) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1702810161h431754.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论