V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
piaochen0
V2EX  ›  Linux

关于 supervisor 运行.sh 脚本的问题

  •  
  •   piaochen0 · 2018-01-02 14:33:28 +08:00 · 6294 次点击
    这是一个创建于 2524 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目的: 用 python 写了一个监控文件夹的程序,需要长时间运行监控。运行 py 文件之前,需要切换目录和进入虚拟环境。

    方案:
    我写了一个 sh 脚本,supervisor 来运行此 sh 脚本。

    .sh 代码:
    cd /var/ftp_root/program/watch
    . /root/.virtualenvs/watch/bin/activate
    python3 startall.py

    问题:
    在 sh 脚本中,python3 startall.py 这句起了另外一个进程 python3,这个也是长时间需要运行的。我在 superviosr 关闭.sh 脚本后,该 python3 进程还是在运行。要是使用 supervisor 重启该任务,实际上就会同事存在两个 python3 进程。如何在 supervior 关闭任务的时候,把启动的相关进程也关了?或者像我这样的,有什么其他好的解决方案?

    8 条回复    2018-01-02 17:52:30 +08:00
    fordoo
        1
    fordoo  
       2018-01-02 15:34:16 +08:00
    directory=/var/ftp_root/program/watch
    command=. /root/.virtualenvs/watch/bin/python3 startall.py

    我猜的
    fordoo
        2
    fordoo  
       2018-01-02 15:35:12 +08:00
    command=/root/.virtualenvs/watch/bin/python3 startall.py 这样
    wzha2008
        3
    wzha2008  
       2018-01-02 15:37:34 +08:00
    mutilprocess.setDaemon(False)
    bingxx
        4
    bingxx  
       2018-01-02 15:57:58 +08:00   ❤️ 1
    配置增加以下, 试试:

    stopasgroup=true
    killasgroup=true
    SErHo
        5
    SErHo  
       2018-01-02 16:22:12 +08:00
    改成 exec python3 startall.py 试试?
    hsuan
        6
    hsuan  
       2018-01-02 16:29:16 +08:00 via Android
    supervisors 不能直接运行 Python 吗,还要用 sh 封装一道?切换目录完全可以放到 python 里去做
    knightdf
        7
    knightdf  
       2018-01-02 17:47:55 +08:00
    不需要,直接用虚拟环境的 python 执行就行了
    tempdban
        8
    tempdban  
       2018-01-02 17:52:30 +08:00
    兄弟。。。你注意过有个叫 pyenv 的环境变量么?
    virtualenv 的 active 脚本其实就是设了两个环境变量:
    PATH 和 pyenv
    写到 supervisor 的配置文件里就好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2212 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:30 · PVG 09:30 · LAX 17:30 · JFK 20:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.