在UNIX系统中使用crontab的注意事项
在UNIX系统中crontab是一种很好的工具,可以实现很多系统自动执行功能,很受系统管理员欢迎。但如果使用不当,也会带来一些麻烦。这里根据我们的经验提出一些使用crontab的使用注意事项和建议,请大家参考。
一、定时命令选择
在UNIX系统中batch、at、cron都可以完成定时运行功能,但不同的命令侧重点不同,应根据具体情况选择合适的指令:
batch可以让系统选择在资源空闲时执行命令;
at可以指定某个时间执行命令,一般用于一次性的预约执行;
cron可以指定定期执行命令,一般使用较多。
二、使用权限
从安全和管理角度考虑,建议取消其它用户的cron权限。系统中只允许root用户有cron权限。所有需定时运行的程序都由root启动,并根据需要以不同用户身份运行。
UNIX系统缺省只能root用户使用cron功能。UNIX系统中使用/var/usr/lib/cron/。
三、环境变量
大部分shell程序运行时需要设置相应的环境变量,系统管理员为保证程序正常运行,必须在cron调用的shell中定义许多必需的环境变量。这样做非常繁琐且不宜维护,当某一用户(如informix)的环境变量由于某种需要修改时(如修改字符集),这时cron可能会不能正常运行,并且管理员很难快速找出问题所在。
建议在cron中用root用户启动程序,并使用su -命令切换到相应用户执行程序,这样能保证以正确的用户身份和环境变量执行程序。
0 2 * * * /usr/bin/su - life -c "/home/life/script/" 1>/dev/null 2>/dev/null
在corn文件中不能使用环境变量,对命令和文件一定要使用全路径。
0 2 * * * /usr/bin/su - life -c "/home/life/script/" 1>/dev/null 2>/dev/null
四、系统输出
在UNIX系统中,程序运行的输出分为1(标准输出)和2(标准报错)两种。一般情况下缺省输出到当前终端入屏幕上,当cron运行程序时由于无当前终端输出,系统便将输出和报错以mail方式发送给程序运行用户,如果输出较多(例如每天进行informix dbexport备份),每天mail的所占地磁盘空间可能会很大,时间一长可能会导致根文件系统空间涨满,引发系统严重故障。我们已多次发现由于Mail持续稳定增长,导致操作系统崩溃的情况。按照总公司的标准安装文档,安装后的根文件系统一般利用率在46%。如果持续增长,请务必检查原因,防止系统崩溃。
建议在cron中明确将标准输出和标准报错丢弃,而在程序内部将必要的log信息和报错信息写到指定位置,并通过定期自动覆盖的方式控制日志占用的空间大小。
0 2 * * * /usr/bin/su - life -c "/home/life/script/" 1>/dev/null 2>/dev/null
五、cron的生效
当cron文件修改后(/var/spool/cron/crontabs/root),使用#crontab –l指令立即可以看到内容以修改,但实际上修改后的cron并没有立即生效。
一般的UNIX系统说明中指出,每当cron文件修改后必须重起机器,其实只要重起cron deamon进程便可。
SCO UNIX中重起cron:
[sxftp:/ #]ps -ef|grep cron
root 278 1 0 May-30 ? 00:00:01 /etc/cron
cron 27244 1 0 12:20:23 ? 00:00:00 sendmail -oo -oem root
[sxftp:/ #]kill 278
[sxftp:/ #]/etc/cron
[sxftp:/ #]! *** cron started *** pid = 27248 Mon Jun 23 12:20:43 2003
[sxftp:/ #]
在AIX系统中,系统会自动启动cron进程,所以只需将相应的cron进程杀死便可。
六、程序规范
由于重起系统或kill cron进程都需要根用户权限,且使用中有一定的风险。所以建议在cron文件中不要直接调用真正执行操作的程序,可以用cron文件调用一个简单的中间shell,该shell程序不做任何操作,只调用正在执行操作的程序。这样当需要调整或临时暂停自动运行程序时,既不需要修改程
井冈山图片 来自淘豆网m.daumloan.com转载请标明出处.