You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu如何查看SSH断开重连后后台进程的实时输出日志

问题根因

使用&将进程放入后台时,进程的标准输出、标准错误默认仍绑定当前SSH会话对应的虚拟终端,会话断开后新登录的会话无法直接读取原终端的输出。你之前执行reptyr报错,是因为传入的是sudo进程的PID,实际运行业务的mortar进程是sudo的子进程(即报错中提到的PID 6461),跨进程组attach父进程会触发权限限制。

已运行进程的日志查看方案
  • 直接读取进程文件描述符(无额外依赖,推荐)
    先过滤出mortar业务进程的真实PID,不要用sudo进程的PID:
    ps aux | grep "[m]ortar server"
    
    拿到PID后直接读取进程对应的输出文件描述符,即可实时查看所有日志:
    # 将<PID>替换为上一步查到的mortar进程实际PID
    sudo tail -f /proc/<PID>/fd/1 /proc/<PID>/fd/2
    
    其中/proc/<PID>/fd/1对应进程标准输出,/proc/<PID>/fd/2对应进程标准错误,所有运行时打印的内容都会实时输出到这两个描述符,tail -f会持续追踪新增内容。
  • 修正reptyr参数attach子进程
    先临时放开ptrace限制,再直接attach真实的mortar子进程即可:
    sudo sysctl -w kernel.yama.ptrace_scope=0
    # 替换<PID>为mortar进程真实PID
    sudo reptyr <PID>
    
    attach成功后当前shell会直接接管该进程的输入输出,和在当前shell直接启动节点的效果完全一致。如果需要把进程放回后台继续运行,按Ctrl+Z暂停进程后执行bg即可。
后续启动的持久化方案

下次启动节点不要直接用&裸跑,选以下任意一种方式,避免会话断开后丢失日志:

  • nohup重定向日志到文件
    启动时直接把输出写入固定日志文件,会话断开不会影响进程运行:
    sudo nohup mortar server --data-dir ./data-dir --chain genesis.json --libp2p 0.0.0.0:PORT --nat IP-ADDRESS --seal --price-limit 1 > ./mortar-node.log 2>&1 &
    
    后续查看日志直接执行sudo tail -f ./mortar-node.log即可。
  • screen/tmux持久化终端会话
    以screen为例,先安装工具:
    sudo apt update && sudo apt install -y screen
    
    新建专属会话:
    screen -S mortar-node
    
    在弹出的会话窗口中直接执行节点启动命令(不需要加&),启动完成后按Ctrl+A再按D即可临时退出会话,节点会在后台持续运行。下次登录后执行screen -r mortar-node就能直接回到节点运行的终端界面,查看所有历史输出。
  • systemd托管(生产环境推荐)
    将节点配置为系统服务,支持开机自启、异常自动重启、日志统一管理。
    新建服务配置文件:
    sudo nano /etc/systemd/system/mortar-validator.service
    
    写入以下配置,注意替换WorkingDirectory、User、启动参数为你实际环境的值:
    [Unit]
    Description=Mortar Validator Node
    After=network.target
    
    [Service]
    User=ubuntu
    WorkingDirectory=/home/ubuntu/mortar
    ExecStart=/usr/local/bin/mortar server --data-dir ./data-dir --chain genesis.json --libp2p 0.0.0.0:PORT --nat IP-ADDRESS --seal --price-limit 1
    Restart=on-failure
    RestartSec=3
    LimitNOFILE=65535
    
    [Install]
    WantedBy=multi-user.target
    
    保存退出后重载配置、启动服务并设置开机自启:
    sudo systemctl daemon-reload
    sudo systemctl enable --now mortar-validator
    
    后续查看日志直接调用journalctl即可,支持实时追踪、时间过滤、关键词搜索:
    # 实时查看最新日志
    sudo journalctl -u mortar-validator -f
    

内容的提问来源于stack exchange,提问作者cormacncheese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 21:30:56