linux - 使用 crontab & nohup 将输出重定向到具有日期格式名称的文件

标签 linux bash shell cron nohup

现在我有一个脚本 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 和 '&` 到底是什么意思?

最佳答案

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

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

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

关于linux - 使用 crontab & nohup 将输出重定向到具有日期格式名称的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25323800/

相关文章:

Linux:获取单个 HTTP 请求的详细统计信息?

linux - 如果父进程退出则暂停子进程退出

linux - 在linux bash中动态更改文件名

bash - 将 csv 转换为文本

bash - 在 bash 我正在构建一个更新脚本,如何更新更新脚本

bash - 别名和导出(和函数!)[BASH] 之间有什么区别?

python - 如何在并行运行所有脚本时运行特定命令

命令 "who -b"的行为不同

linux - 从 PGAdmin 容器连接本地 postgres 数据库

c# - 在 CentOS/Linux 上正确配置 dotnet (ASP.NET Core 2.1) 环境