在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
命令运行的进程的日志。