linux

如何使用nohup命令记录输出

小樊
56
2025-08-29 03:54:02
栏目: 编程语言

nohup(no hang-up)命令用于在后台运行程序,即使关闭终端或断开连接,程序也会继续运行

  1. 使用 nohup 命令运行程序,并将标准输出重定向到一个文件。例如,如果你想运行名为 my_script.sh 的脚本,可以使用以下命令:
nohup ./my_script.sh > output.log 2>&1 &

这里,> 将标准输出重定向到 output.log 文件,2>&1 将标准错误重定向到标准输出(这样错误信息也会被记录到 output.log 文件中),最后的 & 符号将程序放入后台运行。

  1. 如果你想查看实时输出,可以使用 tail 命令:
tail -f output.log

这将显示 output.log 文件中的最新内容。要停止显示实时输出,可以按 Ctrl + C

  1. 如果你想限制日志文件的大小,可以使用 logrotate 工具。首先,创建一个名为 logrotate.conf 的配置文件,包含以下内容:
/path/to/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,属主为用户,属组为组。

然后,使用 logrotate 命令手动触发日志轮转:

logrotate /path/to/logrotate.conf

或者,你可以设置定时任务(如每天凌晨执行一次)来自动触发日志轮转。编辑 /etc/crontab 文件,添加以下行:

0 0 * * * root logrotate /path/to/logrotate.conf

这将在每天凌晨 0 点执行 logrotate 命令。

0
看了该问题的人还看了