在CentOS系统中,使用nohup命令可以确保进程在用户退出登录后继续运行。为了有效地管理这些进程的日志,可以遵循以下规范:
nohup命令nohup command > output.log 2>&1 &
这条命令会将标准输出和标准错误都重定向到output.log文件,并且将进程放到后台运行。nohup command > /var/log/myapp/$(date +%Y%m%d%H%M%S)_output.log 2>&1 &
nohup command > /var/log/myapp/myapp_$$_$(date +%Y%m%d%H%M%S)_output.log 2>&1 &
logrotate工具:CentOS自带logrotate工具,可以自动管理日志文件的轮转和压缩。
/etc/logrotate.d/myapp:/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root root
}
chmod 640 /var/log/myapp/*.log
chown root:root /var/log/myapp/*.log
假设你有一个名为myapp的应用程序,以下是一个完整的示例:
#!/bin/bash
# 启动应用程序并记录日志
nohup /path/to/myapp > /var/log/myapp/myapp_$$_$(date +%Y%m%d%H%M%S)_output.log 2>&1 &
# 获取进程ID
PID=$!
# 将PID写入一个文件,方便后续管理
echo $PID > /var/log/myapp/myapp.pid
# 监控日志文件大小
while true; do
LOG_FILE="/var/log/myapp/myapp_$$_$(date +%Y%m%d%H%M%S)_output.log"
if [ $(stat -c%s "$LOG_FILE") -gt 10485760 ]; then # 10MB
echo "Log file size exceeded 10MB, rotating logs..."
logrotate /etc/logrotate.d/myapp
fi
sleep 60
done
通过遵循这些规范,可以有效地管理和维护CentOS系统中使用nohup命令运行的进程的日志。