Файл JAR не читает входные данные из сканера (System.in) при выполнении crontab - PullRequest
0 голосов
/ 28 октября 2011


Я создал приложение, которое читает из System.in, используя следующий метод:

    Scanner input = new Scanner(System.in);

    while (input.hasNextLine()) {

        String line = input.nextLine();

    }

Входные данные передаются с помощью команды linux:

cat -A /home/someuser/somefile.txt | java -classpath "$CLASSPATH" com.test.Main

Запись в crontab выглядит так:

MAILTO=someuser
CLASSPATH="/home/someuser/test.jar:/usr/share/java/jdom.jar:/usr/share/java/mysql-connector-java.jar"

0,10,20,30,40,50 * * * * cat -A /home/someuser/somefile.txt | java -classpath "$CLASSPATH" com.test.Main  >/home/someuser/output.txt

Права доступа к файлам показывают следующее:

-rw-r--r-- 1 someuser serhiy 8385601 2011-02-07 10:57 /home/someuser/somefile.txt

На моей машине все работает нормально (Ubuntu 9), но после установки на другую машину Ubuntu 8 я понял, что программа запускается, но, похоже, ничего не читает. Я трижды проверил все конфигурации и все разрешения и результат все тот же. Когда я запускаю команду вручную, все работает, когда она запускается crontab, кажется, что она не читает ввод. Кто-нибудь сталкивался с этой проблемой раньше?

Спасибо за любую помощь
Serhiy.

1 Ответ

2 голосов
/ 28 октября 2011

Вы определяете переменные в crontab?Это не кажется правильным.

1) Переместите команду в скрипт оболочки и вызовите команду оболочки из cron, например,

*/10 * * * * /home/someuser/some_script.sh >/home/someuser/some_script.cronoutput 2>&1

2) Содержимое some_script.sh;убедитесь, что бит выполнения установлен

#!/bin/sh
export MAILTO=someuser  
export CLASSPATH="/home/someuser/test.jar:/usr/share/java/jdom.jar:/usr/share/java/mysql-connector-java.jar"  

cat -A /home/someuser/somefile.txt | java -classpath "$CLASSPATH" com.test.Main  >/home/someuser/output.txt
...