今天一个客户问我如下问题:
这边的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文件中。
阅读(849) | 评论(0) | 转发(0) |