2013-02-28 68 views
0

我想运行从crontab调用的简单java程序。 因为我想知道crontab是否运行正常,我想打印出结果作为日志文件。从crontab运行的java程序的日志结果[Permission denied]

现在,我不知道crontab是否正确运行我的java程序。

示例Java程序:

public static void main(String[] args) { 
    Calendar c = Calendar.getInstance(); 
    System.out.println("hello" + c.getTime()); 
} 

样品SH:

#!/bin/bash 
JAVA_HOME=/usr/java/jre1.6.0_31/ 
export JAVA_HOME; 


for file in /home/vas/servers/tomcat/myTest.jar 
do 
     CLASSPATH=$file:$CLASSPATH 
done 
export CLASSPATH 

$JAVA_HOME/bin/java myTest 

的crontab:

* * * * * /home/vas/servers/tomcat/myTest.sh > /home/vas/servers/tomcat/myTest.log 2>&1 

PS:myTest.java,myTest.sh都位于在/ home/vas/servers/tomcat/

Ed ited:包括/在家门口。

============================================== ===========

现在我可以看到日志文件,但它是说[/ bin/sh:/home/vas/servers/tomcat/myTest.sh:权限被拒绝 ]。

exec $JAVA_HOME/bin/java myTest 
+0

我没有看到任何问题在这里。您只需配置和使用日志框架(例如,log4j,Java的内置日志记录),它将在您要指定的目标中创建适当的日志文件。 [Log4j网站](http://logging.apache.org/log4j/1.2/) – nikkatsa 2013-02-28 07:29:19

回答

3

下面是如何:从shell脚本运行Java时

* * * * * /home/vas/servers/tomcat/myTest.sh >> /home/vas/servers/tomcat/myTest.log 2>&1 

而且您更好地使用exec

+0

抱歉。当我在这里粘贴代码时,我意外删除了/。/home对于crontab已经是正确的。 – kitokid 2013-02-28 07:37:55

+0

但是当我运行取消注释crontab时,我可以看到日志。但它说[权限被否认]。 – kitokid 2013-02-28 07:40:06

+0

你可以在.sh文件上做一个chmod吗?例如'chmod 771/home/vas/servers/tomcat/myTest.sh'(这改变了允许执行的权限) – vikingsteve 2013-02-28 07:44:56

0

变化>>>在crontab中使用绝对路径,日志文件这样覆盖日志文件:

* * * * * /home/vas/servers/tomcat/myTest.sh > home/vas/servers/tomcat/myTest.log 

VS如何追加日志文件

* * * * * /home/vas/servers/tomcat/myTest.sh >> /home/vas/servers/tomcat/myTest.log 

(编辑,根据您的评论)

你可以尝试这样的事:

chmod 771 /home/vas/servers/tomcat/myTest.sh 

然后做ls -al /home/vas/servers/tomcat/myTest.sh以确保你有正确的设置权限

相关问题