我想运行从crontab调用的简单java程序。 由于我想知道crontab是否正常运行,我想将结果打印为日志文件。
目前,我不知道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 /
下编辑:包括/在家门口。
=============================================== ==========
现在我可以看到日志文件,但是它说[/ bin / sh:/home/vas/servers/tomcat/myTest.sh:权限被拒绝 ]。
答案 0 :(得分:3)
以下是覆盖日志文件的方法:
* * * * * /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
以确保您已正确设置权限。
答案 1 :(得分:0)
在crontab中将>
更改为>>
,并使用绝对路径来记录日志文件:
* * * * * /home/vas/servers/tomcat/myTest.sh >> /home/vas/servers/tomcat/myTest.log 2>&1
从shell脚本运行Java时,最好还是使用exec
:
exec $JAVA_HOME/bin/java myTest