java - 在 Linux OpenSuse cron 上,脚本运行,但只生成空日志

标签 java linux cron opensuse

我有 OpenSuse Linux 12.3,我有一个每半小时运行一次的脚本文件。我知道它运行是因为它会生成一个日志文件。日志文件如下:myscript.sh

我应该说这个脚本从命令行运行良好。如果我告诉它“立即运行”,它在 Task Scheduler 中也能正常运行,它会运行并生成日志文件,并且日志文件中包含适当的日志数据。

我确实将脚本更改为 chmod 777,因此所有内容都可以访问它。我知道 cron 服务正在系统上运行。我可以看到正在生成日志文件,但日志中没有任何内容。它们是 0 字节大小的文件。这是任务计划程序开始运行某些东西的时候。

所以,这里是脚本:myscript.sh:

datestr=$(date +%Y%m%d_%H%M%S)
cd /home/tholmes/git/Tom_Utils/Tom_Utils
mvn exec:java -Dexec.mainClass="com.tom.test.utils.fix.MyJavaApp" -Dexec.args="12" > /home/tholmes/logs/my_java_app/12_$datestr.log

那么,我确实知道此脚本中的所有命令都能完美运行?当我在任务计划程序中手动运行脚本时,它工作正常,并生成了一个日志。但是当 Task Scheduler 自动运行时,它不会运行...

谁能帮我看看我做错了什么?没想到这么难。

最佳答案

通过附加 2>&1 捕获 stderr。此外,您可以使用单个 \ 来分隔长行,例如

mvn exec:java -Dexec.mainClass="com.tom.test.utils.fix.MyJavaApp" \
    -Dexec.args="12" > /home/tholmes/logs/my_java_app/12_$datestr.log 2>&1

你也可以将stderr写入第二个文件,

mvn exec:java -Dexec.mainClass="com.tom.test.utils.fix.MyJavaApp" \
    -Dexec.args="12" > /home/tholmes/logs/my_java_app/12_$datestr.log \
    2>/home/tholmes/logs/my_java_app/12_$datestr.err

关于java - 在 Linux OpenSuse cron 上,脚本运行,但只生成空日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829130/

相关文章:

linux - 如何在 GNOME 中使用 C/C++ 更改文件图标的标志?

linux - crontab 无法正常工作

python - python 中的 crontab

python - 运行几次后 headless 脚本崩溃

java - 在java struts中抛出自定义错误消息

java - java编译器是JVM的一部分吗?

c - 分段故障归档 sleep 功能

linux - Linux 如何在启动时在 x86 IO 地址总线上找到设备?

java - android 如何从接口(interface)获取值

java - Jackson - 将 json 反序列化为通用类型