跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 写了一个 py 想让它在云服务后台运行
未分類
17 3 月 2021

写了一个 py 想让它在云服务后台运行

写了一个 py 想让它在云服务后台运行

資深大佬 : ling516 2

nohup python3 test.py &
网上搜了半天是使用这个命令,但是关闭窗口后进程还是结束了
网上还说 nohup 按任意键回到 shell,再用 exit 退出,但是关闭窗口后进程还是结束了

求大佬指点

大佬有話說 (69)

  • 資深大佬 : lambdafate

    强推 screen 命令, 谁用谁知道

  • 資深大佬 : privapps

    nohup 之后,用
    disown %%

    再试试

  • 資深大佬 : ByteCat

    写成服务运行,懒的话直接 screen

  • 資深大佬 : mmtromsb456

    关键词进程守护,相对更加稳定并且在服务意外关闭后可以自动重启
    可以选用一般发行版自带的 systemd,注册一个 systemd 服务进行管理即可,或者环境中已经存在 python 对额外添加包不敏感的话也可以用 supervisor.
    如果没有这些要求的话,简单的使用 screen 命令创建一个 deattach 的 shell 来执行你的命令即可

  • 資深大佬 : johnsona

    screen

  • 資深大佬 : Tink

    最简单就是你说的这个,然后依次是 screen-tmux-supervisor-systemd 等等

  • 資深大佬 : 676529483

    nohuo &是可以的,我觉得应该先检查下 python3 test.py 是否会一直运行

  • 資深大佬 : hertzry

    感觉 7#说的有道理。

  • 資深大佬 : sunhuawei

    进程管理器 pm2 挺不错的

  • 資深大佬 : ClericPy

    按优先级推荐, 场景不一样
    systemd
    supervisord, 如果有时间调度 azkaban, airflow
    tmux

    还是看点 linux 基础吧…

  • 資深大佬 : isSamle

    nohup python xxx.py

  • 資深大佬 : imes

    又到了我来安利 systemd 的时候了
    按照下面的来,注意一下文件路径即可。

    “`
    [Unit]
    Description=Python Service
    After=multi-user.target
    [Service]
    WorkingDirectory=/path
    User=root
    Type=idle
    ExecStart=/usr/bin/python3 /path/python.py
    Restart=always
    [Install]
    WantedBy=multi-user.target
    “`

  • 資深大佬 : lidashuang

    supervisord
    systemd

  • 資深大佬 : yeqizhang

    我用 nohup 没毛病,参考一下 7 意见

  • 資深大佬 : aheadlead

    打个 docker image 不香吗

  • 資深大佬 : ipwx

    supervisor

  • 資深大佬 : poterliu

    Java 启动是这样的,可以参考一下:
    nohup java -jar 应用名 > 日志文件名>&1 &

  • 資深大佬 : wtks1

    命令前加 setsid

  • 資深大佬 : ylz

    byobu 也很好用

  • 主 資深大佬 : ling516

    @imes 那还是用 systemd

  • 資深大佬 : seakingii

    我喜欢 supervisor

  • 資深大佬 : 7gugu

    screen

  • 資深大佬 : mingff258

    如果是在 VS Code 里面运行 nohup 的话,是会有问题的,使用普通 ssh 客户端执行就行了。

  • 資深大佬 : CodeCodeStudy

    两种办法:
    1 、你可以把命令写到一个 shell 文件里,比如 run.sh ,然后 chmod +x run.sh ,再然后 ./sh
    2 、敲完 nohup python3 test.py & 命令后,使用 exit 退出,如果使用 xshell 断开连接的话则不行喔
    关键在于,使得进程的父进程 pid 是 1

  • 資深大佬 : imldy

    systemd 或 tmux 。
    前者适合长期使用,后者适合临时后台运行

  • 資深大佬 : yucongo

    tmux 或 pm2

    喜欢折腾的话还可以装 tmux-resurrect 插件。

  • 資深大佬 : koast

    @imes 这种配置文件是挺好看的,不过我挺好奇这么多键名,是每次写的时候都要看看文档或者参考一下已有的配置文件?

  • 資深大佬 : chenqh

    单机, docker 怎么 pull 呀,registry 放哪里?

  • 資深大佬 : WildCat

    tmux?

    tmux attach #0?

  • 資深大佬 : troilus

    screen 是一个非常有用的命令,提供从单个 SSH 会话中使用多个 shell 窗口(会话)的能力。当会话被分离或网络中断时,screen 会话中启动的进程仍将运行,你可以随时重新连接到 screen 会话。如果你想运行一个持久的进程或者从多个位置连接到 shell 会话,这也很方便。

  • 資深大佬 : SenLief

    7 的没有问题啊。我的 ddns 就是这样扔到后台的。很长时间了也没挂。

  • 資深大佬 : kaka6

    高级点用:supervisor
    简单点用:nohup python test.py &

  • 資深大佬 : chinvo

    虚拟 tty 法 screen tumux byobu
    服务法 systemd init.d

  • 資深大佬 : 2379920898

    nohup ./程序名 & 这样来用就 OK 了。。我发现这么多评论,都没有说道点子上,除了 32

  • 資深大佬 : zhuweiyou

    screen
    pm2

  • 資深大佬 : zhoudaiyu

    哪位老哥知道哪里有教程讲 systemd 的 service 文件里面的配置字段啊

  • 資深大佬 : ychost

    tmux 用起来美滋滋

  • 資深大佬 : Macv1994

    supervisor 也挺不错的 还支持 web 端 如果需要可以参考我写的博客 https://2dogz.cn/blog/article/3/

  • 資深大佬 : epicSoldier

    exit 退出试一下,不要直接关闭连接窗口

  • 資深大佬 : realpg

    screen 就完了

  • 資深大佬 : MOONLIGHTT

    tmux+1

  • 資深大佬 : ronman

    @zhoudaiyu 这里: https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html

  • 資深大佬 : zengguibo

    nohup python test.py & 绝对可以,如果不行先检查一下你的脚本

  • 資深大佬 : FransicZhang

    pm2 它不香嘛

  • 資深大佬 : zhoudaiyu

    @ronman 十分感谢~

  • 資深大佬 : nicevar

    大概率是程序写得有问题

  • 主 資深大佬 : ling516

    @nicevar 不是 已经可以了 写的 systemctl

  • 資深大佬 : nutting

    看看父进程是啥就能分析出来为啥挂不住了

  • 資深大佬 : yanfany

    用 screen

  • 資深大佬 : dapan24678

    个人感觉你还是先看看,不后台运行能跑起来不,很多时候是项目启动时报异常退出了,因为后台运行,异常信息也看不见,确定项目能跑起来了再用这个命令

  • 資深大佬 : cheneydog

    @lambdafate
    @ByteCat
    @7gugu

    我有个问题请教,screen 怎么能一行命令创建并执行?每次都得 screen -dmS xxx 进去运行,然后退出。

  • 資深大佬 : tomari

    tmux 或者 screen,deep learning 做 train 和 interfere 的时候常用。。

  • 資深大佬 : tomari

    @tomari inference….搜狗的英文输入法有毒

  • 資深大佬 : ShienPro

    临时用一下的话可以试试 systemd-run

    “`
    systemd-run –unit=py-test python3 /absolute/path/test.py
    “`

  • 資深大佬 : xiaochong0302

    关键看你 test.py 里面是不是一次执行就结束了,你写个死循环试试

  • 資深大佬 : leavic

    supervisor 就很好用

  • 資深大佬 : lithiumii

    @chenqh Gitlab 可以免费私有镜像,另外其实可以把镜像直接当文件拷来拷去 (docker save 和 load)

  • 資深大佬 : chenqh

    @lithiumii 镜像文件太大了,动不动几百 M

  • 資深大佬 : oisadfo

    应该是你的程序有 BUG,自己退出了

  • 資深大佬 : irytu

    守护进程吧 不过最好弄下 logging 方便看问题 https://pypi.org/project/python-daemon/

  • 資深大佬 : DaGongRen001

    nohup XXX &可能会因为环境变量问题导致运行失败,在敲第二下回车时就能看出来退出状态码是否为 0

  • 資深大佬 : www5070504

    nohup 还要注意错误的标准错误的重定向问题

  • 資深大佬 : litel

    pm2 大法好
    nodejs 的时候就在用,py 也适用

  • 資深大佬 : julyclyde

    nohup 忽略 HUP 信号并重定向
    & 放后台
    按说这俩都用上之后,退出 ssh 应该是不会导致程序中断的啊……
    虽然不是正规做法,但是应该可以成功使用

  • 資深大佬 : Ealrang

    pm2 非常舒服

  • 資深大佬 : jeeyong

    我是 pm2, 跑了 5 年了快.
    web 系统 nodejs, 业务服务是 python
    都是用 pm2

  • 資深大佬 : julyclyde

    哦。我大概猜到了
    后期版本的 systemd 在用户注销的时候会把残留进程也都关闭
    还是请使用正确的 systemd-run

  • 資深大佬 : SkyGuardian

    nohup & 是最简单的,但实际上不能用于部署服务
    之前有一个 python 脚本跑了几个月没事,有天上去发现因为系统的原因 terminated 了

    所以要正经部署的话,自己写个 systemd service,就算脚本遇到意外退出了,还可以自动重启

  • 資深大佬 : lylh1987

    pm2 大法好

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具