nohup 命令用于在后台运行程序,即使关闭终端或断开连接,程序也会继续运行
重定向输出到文件:
使用 > 和 >> 操作符将标准输出和标准错误重定向到文件。例如:
nohup your_command > output.log 2>&1 &
这里,your_command 是你要运行的命令,output.log 是输出日志文件的名称。2>&1 表示将标准错误(2)重定向到标准输出(1),& 表示将命令放入后台运行。
限制日志文件大小:
使用 logrotate 工具来限制日志文件的大小。首先,创建一个名为 logrotate.conf 的配置文件,并添加以下内容:
/path/to/your/output.log {
size 10M
rotate 5
compress
missingok
notifempty
create 640 user group
}
这里,size 10M 表示当地日志文件达到10MB时进行轮转,rotate 5 表示保留5个轮转日志文件,compress 表示压缩旧的日志文件,missingok 表示如果日志文件丢失,不要报错,notifempty 表示如果日志文件为空,不进行轮转,create 640 user group 表示创建新的日志文件,权限为640,属主为用户,属组为组。
然后,使用 crontab 定期运行 logrotate。编辑用户的 crontab 文件:
crontab -e
添加以下行以每天运行一次 logrotate:
0 0 * * * /usr/sbin/logrotate /path/to/your/logrotate.conf
使用 syslog 或 journald:
如果你的系统支持 syslog 或 journald,可以将日志输出发送到系统日志中。这样,你可以使用系统工具(如 journalctl)来查看和管理日志。
例如,要将日志输出发送到 syslog,可以使用 logger 命令:
nohup your_command 2>&1 | logger -t your_tag
这里,your_tag 是一个自定义的标签,用于在日志中识别你的程序的输出。
通过这些方法,你可以优化 nohup 命令的日志输出,使其更易于管理和维护。