【发布时间】:2014-08-15 09:00:10
【问题描述】:
现在我有一个脚本start.sh 来启动我的应用程序:
java -Dlog4j.configuration=file:~/log4j.xml -Xmx2048m -jar ~/myapp.jar
我将此脚本添加到 crontab 以使其成为计划作业:
15 05 * * 1-5 /home/me/start.sh >> /home/me/cronlog/$(date +"\%F")-start.log 2>&1
将start.sh 的输出重定向到具有日期格式名称的单独文件
现在,我想使用 nohup 并将重定向命令放到 start.sh 脚本而不是 crontab 中
所以crontab 看起来很干净:
15 05 * * 1-5 /home/me/start.sh
而在start.sh中,经过测试应该是:
nohup java -Dlog4j.configuration=file:~/log4j.xml -Xmx2048m -jar ~/myapp.jar > ~/cronlog/$(date +"%F")-nohup.log 2>&1 &
这是我的问题:
为什么在
crontab中需要反斜杠\而在新的start.sh脚本中却不需要?如果以
2>&1 &结尾,我想将每个输出记录到文件中,包括异常或错误。最后一个&来自nohup。那么2>&1和 '&` 到底是什么意思呢?
【问题讨论】:
-
你不能使用 crontab ~,它是为你的用户主目录而不是 crontabs
-
@tanaydin 感谢您的指出。实际上,
~没有被使用。我把~放在crontab这里方便描述。 -
我有点怀疑。
\真的需要吗? -
date +"\%F"将在名称中添加文字反斜杠。你可能不想要反斜杠。这会产生,例如\2014-08-15。你也不需要引号 - 这将工作$(date +%F)。
标签: linux bash shell cron nohup