записать результат работы Java-программы, запущенной из crontab [Permission denied]

Я хочу запустить простую Java-программу, вызываемую из crontab. Поскольку я хочу знать, правильно ли работает 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: Permission denied].


person kitokid    schedule 28.02.2013    source источник
comment
Я не вижу здесь никаких проблем. Вам просто нужно настроить и использовать структуру ведения журнала (например, log4j, встроенное ведение журнала Java), и она создаст соответствующие файлы журнала в указанном вами месте назначения. Веб-сайт Log4j   -  person nikkatsa    schedule 28.02.2013


Ответы (2)


Вот как перезаписать файл журнала:

* * * * * /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, чтобы убедиться, что вы правильно установили разрешения.

person vikingsteve    schedule 28.02.2013
comment
извиняюсь. когда я вставляю сюда код, я случайно удалил /. / home уже правильный для crontab. - person kitokid; 28.02.2013
comment
но когда я снова запускаю раскомментируйте crontab, я вижу журнал. Но там сказано [В разрешении отказано]. - person kitokid; 28.02.2013
comment
вы можете сделать chmod для файла .sh? например chmod 771 /home/vas/servers/tomcat/myTest.sh (это изменяет разрешения, чтобы разрешить выполнение) - person vikingsteve; 28.02.2013
comment
Спасибо большое . теперь он работает. Но одно: всякий раз, когда я запускаю раскомментирование crontab после редактирования некоторых изменений в myTest.sh, файл журнала перезаписывается. Как сделать так, чтобы в файл журнала добавлялись только новые журналы? - person kitokid; 28.02.2013
comment
ага. вы ответили на мой вопрос. но в дополнение, всякий раз, когда я проверяю файл журнала, кажется, что отображается только один вывод (например, helloThu 28 февраля, 16:18:01 SGT 2013). Я хочу, чтобы файл журнала выводился каждый раз, когда crontab запускает приложение java. Еще совет? - person kitokid; 28.02.2013

Измените > на >> в crontab и используйте абсолютный путь к файлу журнала, например:

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

Также вам лучше использовать exec при запуске Java из сценария оболочки:

exec $JAVA_HOME/bin/java myTest
person Mikhail Vladimirov    schedule 28.02.2013