2015-06-03 4 views
0

Я пытаюсь запустить простую программу java helloworld с помощью crontab. Я сделал следующий код Java: Helloworld.java:Простой простой файл класса Java с crontab

class HelloWorld { 
    public static void main (String args[]) { 
     System.out.println("Hello world"); 
    } 
} 

Затем я пытаюсь запустить это из кронтаба в следующей последовательности:

  1. crontab -e
  2. В конце я вставить это line 0,7,10,15,30,46,50,55,59 * * * * root /usr/bin/java /home/shivajividhale/cloudOccular/HelloWorld >/dev/null 2>&1

Тем не менее, я не могу видеть helloworld putput в syslog. Все ли правильно? Как проверить, выполняется ли файл класса или нет. Я попытался распечатать вывод в текстовый файл со временем на нем. Но ничего не делается в файле.

Запуск файла обычно java HelloWorld дает правильный выход. Я также убедился, что crontab заканчивается новой строкой.

Я просто хочу начать с создания файла класса, выполняемого crontab. В сообщениях Oher обсуждается, что crontab запускает скрипты bash, я просто хочу запустить эту простую программу. Я просто хочу распечатать Hello World вместе со временем, чтобы гарантировать выполнение программы через определенные промежутки времени. Любая помощь?

+1

как насчет если вы перенаправить вывод в лог-файл самостоятельно? это работает? – Andrei

+0

Да, хорошая точка,/dev/null просто отбрасывает ее. Он должен сделать что-то вроде> /tmp/mylog.txt 2> & 1 –

+0

Ну, это помогло. Спасибо :) Однако, я получаю сообщение об ошибке: Не удалось найти или загрузить основной класс. Я думаю, что это как-то связано с курсом класса. Но я не знаю, как это исправить. –

ответ

2

Вы не должны указывать полный путь при попытке выполнить класс с помощью «java». Команда «java» ожидает получить только имя класса в качестве аргумента.

Вот почему это работает должным образом:

java HelloWorld

Но это не делает:

/usr/bin/java /home/shivajividhale/cloudOccular/HelloWorld

Чтобы сделать последнюю работу, вам необходимо предоставить только имя класса, и дополнительно «классы» так что Java знает, где найти этот класс. Вы можете использовать опцию -cp для предоставления пути к классам.

Попробуйте это:

/usr/bin/java -cp /home/shivajividhale/cloudOccular/ HelloWorld

+0

Почему нам нужно предоставить classpath для запуска java-файла из crontab, но не когда вы пытаетесь выполнить normlly? –

+0

Текущая папка по умолчанию находится в пути к классу. Попробуйте запустить его «нормально», но из другой папки, и вам понадобится опция classpath. – eugenioy

Смежные вопросы