nohup 命令默认会将输出重定向到当前目录下的 nohup.out
文件中。要按日期查询这些日志,有几种常用方法:
假设你的日志中包含日期格式(如 2023-11-15
):
grep "2023-11-15" nohup.out
# 提取从2023-11-15到2023-11-20的日志
sed -n '/2023-11-15/,/2023-11-20/p' nohup.out
awk '/2023-11-15/{print}' nohup.out
更好的做法是在启动时就让日志按日期分割:
/etc/logrotate.d/nohup
配置文件nohup your_command > nohup_$(date +%Y-%m-%d).log 2>&1 &
这样每天都会生成一个新的日志文件,如 nohup_2023-11-15.log
# 查看今天生成的日志
grep "$(date +%Y-%m-%d)" nohup.out
# 查看最近3天的日志
for i in {0..2}; do grep "$(date -d "$i days ago" +%Y-%m-%d)" nohup.out; done
# 安装multilog(如果未安装)
sudo apt-get install daemontools
# 使用示例
nohup your_command | multilog t ./logs &
通过以上方法,你可以有效地按日期查询和管理 nohup 命令产生的日志。