执行任务Ubuntu使用crontab定时任务
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
因为明天想定时执行postgres的一些脚本,所以在网上查一下有一个crontab的命令,就把这个命令的应用记录一下,便利往后查找.
cron是一个[守护程序]用于在指定的时光内执行行程类的任务,每一个用户都有一个 crontab 文件,来允许他们指定需要执行的内容和时光,此外,系统也有一个 crontab ,用来允许像交替日志和更新当地数据这样有规矩的任务。
环境:Ubuntn 12
1.应用 crontab -e命令
这个命令比较简单直接输入就可以
#:crontab -e
出现如下窗口(第一次会提示你用那个编译器,随意选 一个就好了)
以后就可以输入你想执行的内容了.
比如:*/2 * * * * date >> /home/postgres/time.log 它的意思就是每过两分钟就向time.log文件中写入当然的系统时光.
以后ctrl+X退出保存就好了.
2.保存crontab以后,我们还要重启crontab服务来使这个任务失效.
sudo service cron restart
3.看一下结果
vim /home/postgres/time.log
参数说明(我找的很多例子,看看就明确了.)
# m h dom mon dow command
m 分钟 0-59
h 小时 0-23
dow 天1-31
mon 月 1-12
dow 星期 1-6 0表现星期天
command 就是要执行的命令
除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表现一些其他的含义:
星号 表现任意值,比如在小时部分填写 * 代表任意小时(每小时)
逗号 可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表现一分钟或三分钟
斜线 一般配合 * 应用,代表每隔多长时光,比如在小时部分填写 */2 代表每隔两分钟。所以 */1 和 * 没有区分
- * * * * * date >> /home/postgres/time.log # 每隔一分钟执行一次任务
- 0 * * * * date >> /home/postgres/time.log # 每小时的0点执行一次任务,比如6:00,10:00
- 6,10 * 2 * * date >> /home/postgres/time.log # 每月2号,每小时的6分和10分执行一次任务
- */3,*/5 * * * * date >> /home/postgres/time.log # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06
3 * * * * /home/meng/hello.sh就是:每小时的03分执行/home/meng/下的hello.sh脚本*/5 9-17 * * mon,tue,wed,thur,fri wall "Are we there yet?"
5 3 * * * /usr/bin/apt-get update 就是每天的03:05执行“/usr/bin/apt-get update
*/5 9-17 * * mon,tue,wed,thur,fri wall "Are we there yet?" 就是在所有的工作日的(9-17点)每过5分钟出现"Are we there Yet?"
#每晚的21:30重启apache。 30 21 * * * /usr/local/etc/rc.d/lighttpd restart #每月1、10、22日 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #每天早上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
http://wiki.ubuntu.org.cn/UbuntuHelp:CronHowto/zh
文章结束给大家分享下程序员的一些笑话语录:
PC软件体积大,是因为一个PC软件功能往往较多,能够满足你一个方面的需求,而一个iphone软件往往没几行代码,干一件很小的事情,自然需要的软件就多。就像吃西瓜和吃瓜子的来比数目,单位不同啊。
--------------------------------- 原创文章 By 执行和任务 ---------------------------------