nohup定时日志分割(按日期和大小)

很多时候,用nohup后台启动生成日志时,如果不进行分割,文件会越来越大,导致日志文件打开很慢,不方便问题的ji'shi定位和解决。
此文记录实际开发过程中,按照日期分割日志的操作步骤
一、首先写一个可执行的shell脚本,本次较为简单,建立一个名为nohup_log.sh,内容如下:
按日期
# !/bin/sh
# 拷贝日志文件到 昨天的log中
cp /usr/local/release/nohup.out /usr/local/release/logfile_`date -d yesterday +%Y%m%d`.log  
# 清空nohup.out 日志
cat /dev/null > /usr/local/release/nohup.out
按大小
# !/bin/sh
# 拷贝日志文件到 昨天的log中
split -b 100m -d -a 4 /usr/local/release/nohup.out /usr/local/release/logfile_`date -d yesterday +%Y%m%d`.log  
# 清空nohup.out 日志
cat /dev/null > /usr/local/release/nohup.out

二、先手动执行一下shell脚本
./nohup_log.sh
可能遇到的问题:
1、提示权限不够
解决办法:chmod 777 ./nohup_log.sh
2、提示“目标‘\r’不是目录”
解决办法: 用vim打开sh脚本文件, 重新设置文件的格式
:set ff 然后回车  再重新设置下文件格式:
:set ff=unix 然后保存退出
:wq! 回车

三、加入定时任务
1、crontab -e
根据自己需要设置,定时执行的时间
#每5分钟执行一次
*/5 * * * *  /usr/local/release/nohup_log.sh
#每天
0 0 * * * /usr/local/release/nohup_log.sh
2、使定时任务生效
service crond restart

### 禁止 `nohup` 输出日志的方法 在使用 `nohup` 命令启动程序时,默认情况下会将标准输出(stdout标准错误输出(stderr)重定向到当前目录下的 `nohup.out` 文件中。若希望完全禁止输出日志,可以通过重定向方式丢弃所有输出信息。 #### 禁用所有输出日志 要实现不记录任何日志信息的效果,可以将标准输出标准错误输出都重定向至 `/dev/null`,这是一个特殊的设备文件,用于丢弃写入其中的所有数据[^3]。具体命令如下: ```bash nohup your_command > /dev/null 2>&1 & ``` 上述命令中: - `> /dev/null` 表示将标准输出重定向到空设备,即丢弃所有标准输出内容。 - `2>&1` 表示将标准错误输出(文件描述符为 2)重定向到标准输出(文件描述符为 1)的位置,也就是同样被丢弃。 - `&` 表示将该命令放入后台执行。 通过这种方式,`your_command` 在后台运行期间不会产生任何日志文件或控制台输出。 #### 解决日志堆积问题的替代方案 如果用户并不希望完全禁用日志,而是想解决 `nohup.out` 日志文件过大导致磁盘空间占用的问题,则可以采用日志轮转的方式进行管理。例如,每天自动将当前的 `nohup.out` 内容归档并清空原始文件,以避免日志持续增长[^2]。以下是一个简单的 Shell 脚本示例: ```bash #!/bin/sh # 获取昨天的日期 yesterday=$(date -d yesterday +%Y%m%d) # 将当前 nohup.out 拷贝为带有日期的归档文件 cp nohup.out /logs/nohup_$yesterday.log # 清空当前 nohup.out 文件 cat /dev/null > nohup.out ``` 此脚本可定期运行(如通过 `cron` 定时任务),从而确保 `nohup.out` 不会无限增长,同时保留历史日志供后续分析。 --- ### 相关问题 1. 如何在 Linux 中配置定时任务以自动清理 `nohup.out` 文件? 2. 如果没有 `/dev/null` 设备,如何模拟其行为? 3. 使用 `nohup` 启动服务后,如何查看其运行状态? 4. 如何将 `nohup` 的输出日志大小自动分割? 5. 除了 `nohup`,还有哪些工具可以在后台运行程序并管理日志
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值