Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59752
  • 博文数量: 20
  • 博客积分: 1031
  • 博客等级: 少尉
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-11 14:22
文章分类

全部博文(20)

文章存档

2011年(2)

2010年(4)

2009年(14)

我的朋友

分类:

2009-12-01 17:52:06

今天下午写了一个svn服务器的备份脚本,并把它加到定时任务里,实现了每天13:15分压缩一个svn的数据仓库(repository)的目的。
 
 
 
中间碰到一个问题是:

在~/svn/下,把脚本写好,脚本名为svnbk.sh,“./svnbk.sh”运行正常,如下:
tar cjf svn.bk.$(date +%F).tgz  repos/
mv svn.bk.$(date +%F).tgz  svnbk/
 
但是在配好cron后,发现这个脚本不会运行,经试验发现,其中的路径都应该用绝对路径,否则不能成功。

用了绝对路径后,cron+脚本可以正常运行了,进一步改进: ^_^
用“&&”,或者“;”来分隔几个命令,并用“\”来断行,最后写成的脚本是这样的:
cd ~/svn/ ; \
tar cjf svn.bk.$(date +%F).tgz repos/ ; \
mv svn.bk$(date +%F).tgz tmp/
从这里学来的招数:
 
另外,将年月日体现在文件名里,从这里来的:
 
 
 
 
 
以上是脚本方面,接下来说 cron。
 
cron 可以用来做周期执行的事,比如,在每天下班时间前10分钟备份今天的代码,下班了,明天再写:)
 
 
 
today is tomorrow, continue...:)
 
编辑任务的工具是crontab,它按照一定的格式来设置定期任务,格式如下:
minute hour day-of-month month-of-year day-of-week [username] commands
 
基本语法:
crontab[-u user] {-e|-l|-r}
-e编辑某个用户的cron任务计划
-l列出...
-r删除...
 
一些有用的规则:
1、不能为空,可以使用通配符*表示任何时间。
2、可以指定多个值,它们之间用逗号间隔。例如:1,3,7。
3、可以指定时间段,用减号间隔。例如:0-6。
4、可以用“/n”表示步长。例如:8-18/2表示时间序列8,10,12,14,16,18
 
例子:
*/10 6-8 1,15 * *   ls>>/tmp/1.txt
每个月的一号和15号的早上6点到八点,每隔10分钟执行一次命令“ls>>/tmp/1.txt"
 
 
 
每次编辑完某个用户的cron设置后,cron自动在“/var/spool/cron/”下生成一个与此用户同名的文件,此用户的cron信息都记录在 这个文件中,这个文件普通用户不可以直接编辑,只能用crontab -e 来编辑。root用户才可以直接编辑该目录下的任意文件。
 
cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此,编辑完cron设置,或者“/var/spool/cron/”下的文件修改后不需要重新启动cron服务。
 
遇到的问题:
在服务器上处于某用户名 a,不能正常的编辑cron的任务,不得己,用root用户登录后,直接在目录“/var/spool/cron/”下编辑“vi a”,保存后即可运行。
 
 
 
一些要点:
1、检查crond服务状态
service crond status
 
2、不带命令行的crontab将试图从他自己的标准输出中读取crontab内容。这时不要用Ctrl-D退出,那样会删除整个crontab内容,而要使用Ctrl-C退出。





2011.7.12 ______________________________________________________________

两年前的文章,想起来觉得自己进步真的蛮慢...不管怎样,继续前进吧

这次主要是增加一个在删除以前的包的时候,用date 读取前一天时间;这次是从这里知道怎么写的:

显示前一天的日期:
date –date=’1 days ago’ “+%Y-%m-%d”
date -d ’1 days ago’ “+%Y-%m-%d”
date -d yesterday “+%Y-%m-%d”

也可以这样写: 自己的写法 ^_^
date -d "1 day ago" +%F

阅读(753) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~