您的位置:首页 > 运维架构 > Linux

Linux下定时执行命令

2010-05-10 21:33 225 查看
如果想要定时执行任务,需要用到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命令,在指定的时间里运行一些特殊作业,这个命令是一次性的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: