【问题标题】:Redirect the output to a file with date format name using crontab & nohup使用 crontab 和 nohup 将输出重定向到具有日期格式名称的文件
【发布时间】: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 &

这是我的问题:

  1. 为什么在crontab 中需要反斜杠\ 而在新的start.sh 脚本中却不需要?

  2. 如果以2>&1 & 结尾,我想将每个输出记录到文件中,包括异常或错误。最后一个& 来自nohup。那么2>&1 和 '&` 到底是什么意思呢?

【问题讨论】:

  • 你不能使用 crontab ~,它是为你的用户主目录而不是 crontabs
  • @tanaydin 感谢您的指出。实际上,~ 没有被使用。我把~放在crontab这里方便描述。
  • 我有点怀疑。 \ 真的需要吗?
  • date +"\%F" 将在名称中添加文字反斜杠。你可能不想要反斜杠。这会产生,例如\2014-08-15。你也不需要引号 - 这将工作$(date +%F)

标签: linux bash shell cron nohup


【解决方案1】:

2>&1 表示“在标准输出上重定向标准错误”

http://www.tldp.org/LDP/abs/html/io-redirection.html

正如您在该页面中看到的那样,数字指的是操作系统用来指向资源(stderr、stdout)的文件描述符,而 &> 是一个重定向运算符。

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2019-12-19
    • 2014-10-04
    • 2013-04-15
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多