java - JAR 文件在 crontab 执行时未从 Scanner(System.in) 读取输入

标签 java ubuntu cron java.util.scanner cat


我创建了一些应用程序,它使用以下方法从 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 运行时,它似乎没有读取输入。有人以前遇到过这个问题吗?

感谢您的帮助
谢尔希。

最佳答案

您是否在 crontab 中定义变量?这似乎不对。

1) 将命令移至 shell 脚本并从 cron 调用 shell 命令,例如

*/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

关于java - JAR 文件在 crontab 执行时未从 Scanner(System.in) 读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931987/

相关文章:

java - 有没有办法在方法声明中定义两个泛型类型

java - Flurry Agent 在 Android 2.3.4 上导致 CalledFromWrongThreadException 异常

java - 是否可以将 JPanel 覆盖在另一个 JPanel 之上?

windows - Vagrant 同步文件夹链接到 Apache/var/www/in Ubuntu VM

amazon-web-services - EC2 Ubuntu 14 默认密码

cron - Django 管理命令 Cron on Dotcloud

javascript - NodeJS 'Cron' 包 - 每 20 秒运行一次的计划作业

java - 如何在 Netbeans IDE 中安装 Cordova 插件? 8.0

ruby-on-rails - 如何使用 Rails 设置 cron 作业?

linux - 使用 wget 同时进行多个下载