linux下cron异常处理小结
1.failed to open PAM security session: No such file or directory 异常描述:查看/var/log/cron时会发现如下异常日志May 14 09:10:01 localhost crond[20319]: (CRON) /export/home/username (No such file or directory)May
1.failed to open PAM security session: No such file or directory
异常描述:查看/var/log/cron时会发现如下异常日志
May 14 09:10:01 localhost crond[20319]: (CRON) /export/home/username (No such file or directory)
May 14 09:10:01 localhost crond[20319]: CRON (username) ERROR: failed to open PAM security session: No such file or directory
May 14 09:10:01 localhost crond[20319]: CRON (username) ERROR: cannot set security context
原因:是建立用户时,想不生成home目录所以用以下命令创建用户
useradd -d /export/home/username username
由于不加-m所以目录不会自动创建
而cron命令在用户没有home目录时会发生如上异常
具体见:https://bugzilla.redhat.com/show_bug.cgi?id=241877有相关描述
解决方式:
修改用户用户主目录,可用root用户创建(mkdir username),然后修改所有者(chown username username)
命令参考
usermod [-u uid [-o]] [-g group] [-G group,...]
[-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
[-f 失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名
usermod -d /export/home/username -m username
2.cron指令不能带环境变量
异常描述:
如/var/log/cron的日志中,可能会出现如下的报警信息
Error:java: command not found
原因:
crontab -l
50 5 * * * java -jar test.jar
新用户username在用cron定时执行命令时可能不会带参数JAVA_HOME等参数.
但用户转到username,手动执行以上命令 java -jar test.jar是可以通过的.
解决方式:
crontab -l
50 5 * * * test.sh>test.log
(注:test.sh>test.log目的是将脚本test.sh运行时的内容输入到test.log日志中便以后查看)
test.sh的内容如下:
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.6/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/td.jar:$JAVA_HOME/jre/lib/rt.jar:.
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
java -jar test.jar
同上另一种解决环境变量丢失问题:但用户必须是root,如要转到oracle用户进行备份等操作.
su - oracle -c 指令脚本
因为用su转化,只有root时不需密码,所以必须是root执行以上指令.
附:googel的cron
http://code.google.com/intl/zh-CN/appengine/docs/java/config/cron.html
更多推荐
所有评论(0)