Chinaunix首页 | 论坛 | 博客
  • 博客访问: 566259
  • 博文数量: 375
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-20 10:21
文章分类

全部博文(375)

文章存档

2015年(1)

2014年(374)

分类:

2014-09-03 11:44:19

 
今天一个客户问我如下问题:

这边的MMSC需要增加一个计划任务:定时运行脚本。请你帮忙告知一下,情况如下:

每天凌晨1点1分执行,首先su - mmsc,然后 sqlplus mmsc/mmsc@ora92登陆进sqlplus介面, 然后在sqlplus状态下执行/opt/mmsc/11oracle.sql这个脚本。

这个在crotab -e里面怎么写?


在问了客户是用root用户调用该任务之后,觉得有点纳闷,为什么不直接用“mmsc”用户执行呢,这样就不必从root用户切换到该用户了。

但不管如何,以上的问题还是可以通过如下方式实现(未经验证):

step1.新建一个脚本,将用户提及的主要的任务放进该脚本中。

# more /opt/sun/script.sh
su -c mmsc "sqlplus mmsc/mmsc@ora92 @/opt/mmsc/11oracle.sql"

# chmod +x /opt/sun/script.sh

step2.定义root用户的crontab脚本。

root # crontab -e
加入:
1 1 * * * /opt/sun/script.sh

[附:crontab命令用法]

crontab命令
/usr/sbin/cron命令在系统启动时自动执行,它启动cron daemon,从/var/spool/cron/crontabs目录下读取任务调度文件,系统将各个用户的任务调度文件放置在/var/spool/crontabs/usernames目录下,仅有超级用户有权查看别人的crontab文件。
cron依靠两个文件:/etc/cron.d/cron.allow或/etc/cron.d/cron.deny来决定谁有权执行任务调度,缺省cron.allow文件不存在,当cron.allow存在时,则cron.deny不会被使用,如果两个文件都不存在,则只有root用户才能运行cron。
读取cron文件内容:
crontab –l(查看当前登录用户的调度文件)
crontab –l username(查看指定用户的调度文件)

编辑cron文件内容:
$EDITOR=vi
$export EDITOR(将VI设成缺省的文件编辑器)
$crontab –e(编辑当前用户的cron文件) 或 crontab –e username(编辑指定用户的cron文件)

删除crontab文件
contab -r

crontab文件格式
分 小时(0-23) 日 月 星期 命令 (每个域之间用空格分开,每个域中允许有多个值,各值之间用逗号分开,每个域可以用*来匹配所有的值) 如:
30 12 * * * echo “time to go for lunch”(在每天中午12:30显示信息,输出的信息存于用户的邮箱中)
30 12 * * * echo “time to go for lunch” >/dev/pts/4 (假如当前终端为/dev/pts/4[可以用tty得知],则输出的信息在当前用户终端的屏幕上显示)
0 0 3,15,20 * 3 command(在每个月的第3,5,20天执行任务,假如该天为星期三)
0 16 * * 5 my_job (在每个星期五的下午4点执行作业my_job)

crontab内容存放在/var/spool/cron/crontabs/username文件中。
阅读(877) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~