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

Ubuntu下Scrapy后台运行问题:关闭SSH后进程终止原因咨询

问题原因及解决办法

原因

关闭SSH会话时,系统会向该会话关联的所有进程发送SIGHUP(挂起信号),默认情况下进程收到这个信号就会终止。即便用了nohup,仍可能因为以下情况导致进程终止:

  • Scrapy启动的子进程没正确继承nohup的会话隔离,依然会收到SIGHUP信号
  • 未正确重定向输出流,若nohup.out写入失败(比如权限不足),进程会主动退出
  • 部分Shell在退出时,仍会向后台作业发送额外信号,触发进程终止

解决办法

  • 使用终端复用工具(最可靠)
    用screen或tmux创建独立的终端会话,爬虫在会话内运行,关闭SSH不会影响进程:

    # 创建名为spider的会话
    screen -S spider
    # 在会话内启动爬虫
    scrapy crawl myspider
    # 按Ctrl+A+D分离会话,之后可通过screen -r spider重新连接查看状态
    
  • 优化nohup命令
    确保重定向所有输出流,避免因输出写入失败导致进程退出:

    nohup scrapy crawl myspider > myspider.log 2>&1 &
    

    其中2>&1将错误输出合并到标准输出,一起写入指定日志文件,替代默认的nohup.out。

  • 脱离Shell作业控制
    在nohup启动进程后,用disown将其从Shell作业列表中移除,避免Shell退出时发送信号:

    nohup scrapy crawl myspider > myspider.log 2>&1 &
    disown %1
    

    或者直接用setsid启动进程,让它完全脱离当前SSH会话:

    setsid scrapy crawl myspider > myspider.log 2>&1 &
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:45:35