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

 

 

 

Logo

更多推荐