简体   繁体   English

从crontab运行的Java程序的日志结果[权限被拒绝]

[英]log result of java program that run from crontab [ Permission denied ]

I want to run the simple java program called from crontab. 我想运行从crontab调用的简单Java程序。 As I want to know whether the crontab is running properly, I want to print out the result as log file. 因为我想知道crontab是否正常运行,所以我想将结果作为日志文件打印出来。

For now, I don't know the crontab is running my java program correctly or not. 现在,我不知道crontab是否正确运行了我的Java程序。

Sample Java program: 示例Java程序:

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

Sample sh: 样本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: Crontab:

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

PS: myTest.java, myTest.sh are all located under /home/vas/servers/tomcat/ PS:myTest.java,myTest.sh都位于/ home / vas / servers / tomcat /下

Edited: include / in front of home. 编辑:包括/家门口。

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

Now I can see the log file , but it was saying that [ /bin/sh: /home/vas/servers/tomcat/myTest.sh: Permission denied ] . 现在,我可以看到日志文件,但是它说的是[/ bin / sh:/home/vas/servers/tomcat/myTest.sh:权限被拒绝]。

Here is how to overwrite the log file: 以下是覆盖日志文件的方法:

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

vs how to append to the log file: vs如何附加到日志文件:

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

(edit, based on your comment) (根据您的评论进行编辑)

Can you try something like this: 你可以尝试这样的事情:

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

And then do ls -al /home/vas/servers/tomcat/myTest.sh to be sure you have set permissions correctly. 然后执行ls -al /home/vas/servers/tomcat/myTest.sh以确保您正确设置了权限。

Change > to >> in crontab and use absolute path to log file like this: 在crontab中将>更改为>>并使用绝对路径来记录文件,如下所示:

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

Also you better use exec when running Java from shell script: 另外,从外壳程序脚本运行Java时,最好使用exec

exec $JAVA_HOME/bin/java myTest

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM