V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
GhostEX
V2EX  ›  问与答

Ubuntu 上如何后台运行 python 爬虫?

  •  
  •   GhostEX · 2016-06-10 19:31:41 +08:00 · 2873 次点击
    这是一个创建于 3088 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 putty 连接 Ubuntu 运行脚本,但是断开连接爬虫就退出,不能一直在后台执行。

    搜了解决方法在命令前后加以下代码:

    nohup python smzdm.py &
    

    但是报错,哪里写错了么?

    第 1 条附言  ·  2016-06-10 20:42:55 +08:00
    screen 可以完美解决
    18 条回复    2016-06-11 10:27:39 +08:00
    reeco
        1
    reeco  
       2016-06-10 19:33:03 +08:00 via iPhone   ❤️ 1
    screen
    notgod
        2
    notgod  
       2016-06-10 19:35:34 +08:00   ❤️ 1
    你要看报什么错
    smzdm.py 脚本本身的错误 还是哪里的

    这么写
    nohup python /path/smzdm.py > _log.txt 2>&1 &

    你那么写 终端退出 pid 就阵亡了
    ug888168
        3
    ug888168  
       2016-06-10 19:38:59 +08:00 via Android   ❤️ 1
    screen 应该能帮你
    mornlight
        4
    mornlight  
       2016-06-10 19:40:57 +08:00   ❤️ 1
    建议上 supervisor ,你这种需求写一下文件路径就行,很简单
    GhostEX
        5
    GhostEX  
    OP
       2016-06-10 19:40:59 +08:00
    @notgod 按格式写,输出了 [21] 20030 ,好像没有执行的迹象。。。
    GhostEX
        6
    GhostEX  
    OP
       2016-06-10 19:43:28 +08:00
    @notgod 或者说怎么判断有没有执行。。。
    notgod
        7
    notgod  
       2016-06-10 19:44:39 +08:00
    jobs
    或者 ps aux|grep 'smzdm.py'
    notgod
        8
    notgod  
       2016-06-10 19:45:09 +08:00
    @GhostEX

    你那个输出应该是返回的 pid

    查看有无进程
    jobs
    或者 ps aux|grep 'smzdm.py'
    GhostEX
        9
    GhostEX  
    OP
       2016-06-10 19:47:21 +08:00
    @notgod 哭了,运行了 21 次。。。
    GhostEX
        10
    GhostEX  
    OP
       2016-06-10 19:48:47 +08:00
    ```python
    root@iZu1imazcmtZ:/# jobs
    [1] Running nohup python smzdm.py & (wd: /var/www)
    [2] Running nohup python smzdm.py & (wd: /var/www)
    [3] Running nohup python smzdm.py & (wd: /var/www)
    [4] Running nohup python smzdm.py & (wd: /var/www)
    [5] Running nohup python smzdm.py & (wd: /var/www)
    [6] Running nohup python smzdm.py & (wd: /var/www)
    [7] Running nohup python smzdm.py & (wd: /var/www)
    [8] Running nohup python smzdm.py & (wd: /var/www)
    [9] Running nohup python smzdm.py & (wd: /var/www)
    [10] Running nohup python smzdm.py > out.log & (wd: /var/www)
    [11] Running nohup python -u smzdm.py > out.log & (wd: /var/www)
    [12] Running nohup python smzdm.py & (wd: /var/www)
    [13] Running nohup python /var/www/smzdm.py > _log.txt 2>&1 & (wd: /var/www)
    [14] Running nohup python /var/www/smzdm.py > _log.txt & (wd: /var/www)
    [16] Running nohup python /var/www/smzdm.py > _log.txt & (wd: /var/www)
    [17] Running nohup python smzdm.py > _log.txt & (wd: /var/www)
    [18] Running nohup python /var/www/smzdm.py > _log.txt 2>&1 &
    [19] Running nohup python /var/www/smzdm.py > _log.txt 2>&1 &
    [20]- Running nohup python /var/www/smzdm.py > _log.txt 2>&1 &
    [21]+ Running nohup python /var/www/smzdm.py > _log.txt 2>&1 &
    root@iZu1imazcmtZ:/#
    ```
    是该理解成是 21 个进程么?
    spikeLIN
        11
    spikeLIN  
       2016-06-10 20:21:23 +08:00 via iPhone
    直接上定时也行⋯⋯
    RockyLee
        12
    RockyLee  
       2016-06-10 21:20:27 +08:00
    screen 时间久了也会挂掉的
    ThreeBody
        13
    ThreeBody  
       2016-06-10 22:12:26 +08:00 via Android   ❤️ 1
    @RockyLee screen 会挂么?我好像没遇到过,不过以前遇到过 screen 被挂起的问题,进不去,不过用-D 参数就可以进去了,不知道你说的是不是这个情况
    sen506
        14
    sen506  
       2016-06-10 23:00:45 +08:00 via Android
    tmux ?或者不要后台一直运行,改成定时的?
    prondtoo
        15
    prondtoo  
       2016-06-10 23:02:09 +08:00
    supervisor
    RockyLee
        16
    RockyLee  
       2016-06-10 23:57:26 +08:00
    @ThreeBody 额,很久的事了,记不得了
    sciooga
        17
    sciooga  
       2016-06-11 02:06:38 +08:00
    daemon ?
    exuxu
        18
    exuxu  
       2016-06-11 10:27:39 +08:00
    tmux +2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1103 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:02 · PVG 03:02 · LAX 11:02 · JFK 14:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.