我有 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/