2013-02-28 63 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以確保你有正確的設置權限

相關問題