1. 苏葳的备忘录首页
  2. 操作系统

AIX下crontab的一些注意事项

crontab aixAIX 5.3下,crontab有/var/adm/cron/cron.allow 和 /var/adm/cron/cron.deny两个用户权限配置文件。若allow文件存在,则只有allow文件中出现的用户名才允许使用crontab,或.allow文件不存在,.deny文件存在但.deny文件为空,则表示所有用户均可使用crontab。crontab以非log in方式运行,这就意味着,登录后一个脚本可运行,但在crontab中可能不能正常运行,因为没有运行用户的环境文件如.profile等,比如一些PATH路径很可能就不存在。

crontab运行的一些信息,会发邮件给创建crontab的用户,如:

Subject: Output from cron job sh ~/log/000002/nnn_back.sh >/dev/pts/0, nnn@nnnn2, exit status 127
Cron Environment:
SHELL =
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/jdk/jre/bin:/usr/jdk/bin:/opt/tomcat/bin
CRONDIR=/var/spool/cron/crontabs
ATDIR=/var/spool/cron/atjobs
LOGNAME=zzz
HOME=/home/zzz
Your "cron" job executed on nnnn2 on Wed Apr 16 15:16:00 BEIDT 201

邮件的此段就指出crontab执行脚本时使用的默认环境变量,可以看出此变量与用户log in后的环境变量有很大不同,为了脚本正常运行,可以将用户的.profile文件加入定时执行的脚本。

#!/usr/bin/ksh
. ~/.profile

注意,用.的方式执行.profile文件很关键,若直接执行.profile或用sh 执行.profile,则.profile 作为一个脚 本执行完毕后,不会改变用户环境的变量。当然不执行.profile而在脚本中手动设置各环境变量也是一种办法,不过繁琐一些。

crontab -e编辑时:

* * * * * cmd 6列分别表示:分钟 小时 天 月 周天(周一,周三等) 命令

*表示每(分钟/小时/天等)都执行一次。

若0 5 * * * echo “ggggg” >/dev/console

表示每天5点0分在控制台上显示ggggggg

若你用远程终端,则用tty显示终端号,如/dev/pts/0等代替/dev/console即可。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/547.html

发表评论

邮箱地址不会被公开。 必填项已用*标注