-

贤钟的博客

一个人的奋斗
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Linux下定时执行命令

Posted on 2010-05-10 21:33  贤钟  阅读(1046)  评论(0)    收藏  举报

如果想要定时执行任务,需要用到cron,cron 是系统调度进程,可以每分钟、每小时、每天执行。

我们可以通过以下命令控制crom服务:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

service crond status  查看crond服务的状态

如果不自动启动,在/etc/rc.d/rc.local这个文件里加上启动命令,系统重新启动的时候启动服务

/sbin/service crond start

 

我们可以使用crontab命令来处理任务

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数  crontab -u root2 -l

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

crontab -r //删除某个用户的cron服务, crontab -u root2 -r

crontab -e //编辑某个用户的cron服务, crontab -u root2 -e

我们可以用 crontab -e 命令编辑:

例如 */5 * * * * vnstat -u

完成修改后,按ESC键,然后输入:wq,保存修改并退出

5分钟运行一次vnstat 程序。

前面五个*号代表五个数字表示时间,后面是要执行的命令或者脚本。

时间:

第1列分钟(0-59)

第2列小時 (0-23)

第3列日期 (1-31)

第4列月份 (1-12)

第5列星期 (0-6)//0代表星期天

第6列   要运行的命令


 

*/2    * * * * top -b -n1 >>/root/top.log   每2分钟把top内容记录到/root/top.log  文件里。

0,10,20,30,40,50 * * * *  top -b -n1 >>/root/top.log   每10分钟把top内容记录到/root/top.log  文件里。

0,10,20,30,40,50 * * * *   curl http://www.pipc.net/  每10分钟把访问一下网站, 可以通知网站服务器没有挂, 用于状态监控。

10 22 * * * top -b -n1 >>/root/top.log    每晚的22:10运行

10 12 1,2,3 * * /root/vnstat.sh  每月的1,2,3号的12:10执行/root目录下的 vnstat.sh

10 12 * * 6,0 /root/vnstat.sh  每个星期六和星期日12:10 执行/root目录下的 vnstat.sh

如果你想每20分钟更新一次,就要写成:0,20,40 

如果想5分钟更新一次,则要写成0,5,10,15,20,25,30,35,40,45,50,55 或者*/5

0-55/5 * * * * root /usr/bin/vnstat -u -i venet0
0-55/5 * * * * root /root/1.o
*/5    * * * * top -b -n1 >>/root/top.log
*/30 * * * * netstat > /tmp/net.log

 

 

"*"、"/"和"-"、"," 

 *代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

/var/spool/cron  目录里有当前用户的命令, 以用户名称命名的。

crontab -e 命令编辑以后会产生这个文件。

我们可以查看当前文件内容, cat /var/spool/cron/root

cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。

因此此文件修改后不需要重新启动cron服务。

 

有的时候任务不执行是因为没有设定权限照成的,我们可以 chmod +x filename

我们可以不使用crontab -e 编辑, 可以新建立一个文件, 比如pipc.cron  使用 crontab /root/pipc.cron  这样吧pipc.cron的任务导入进来。

crontab /etc/cron.d/vnstat 

 

上面说的是针对用户的任务,还有系统执行的任务。

cat /etc/crontab

 

-bash-3.2# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts

39 * * * * root run-parts /etc/cron.hourly
51 1 * * * root run-parts /etc/cron.daily
42 3 * * 0 root run-parts /etc/cron.weekly
51 5 13 * * root run-parts /etc/cron.monthly

44 3 * * * root /var/qmail/bin/dh_key 2>&1 > /dev/null
-bash-3.2#

 

可以显示系统每小时、每日、每周和每月的执行的文件。 我们需要每小时、每日、每周和每月执行命令可以放到

/etc/cron.hourly,/etc/cron.daily 文件夹里面。注意这里是文件夹,通过run-parts 执行文件夹里所有的文件。 如果不加run-parts  必须指定到具体文件。  

MAILTO=root是执行的情况发送给root用户。

 

 

 

其他执行任务的命令:

nohup命令提交任务,在后台执行任务

at命令,在指定的时间里运行一些特殊作业,这个命令是一次性的

 

 


--
---