【问题标题】:Run python in terminal and don't terminate when terminal is closed [closed]在终端中运行python并且在终端关闭时不终止[关闭]
【发布时间】:2013-09-04 13:04:46
【问题描述】:

我需要制作静态网站。所以我通过 ssh 连接到某个本地服务器,我想在其中创建一个静态网站。然后我用python让它工作:

$ python -m http.server 55550

但是如果我关闭终端,那么 python 程序就会终止。我想关闭我的计算机,但我想让这个进程在本地服务器上运行,这样其他人仍然可以访问那个网站。

我该怎么做?之后,我应该如何终止该进程?

感谢您的帮助

【问题讨论】:

  • 这对超级用户来说可能更好,但你应该把它变成一个守护进程(使用你的操作系统的工具来做到这一点),但根据 shell 提示,你可以尝试 nohup 使用 @ 987654323@ 将使它不响应 hup 并在 proc 术语消失时继续运行。

标签: python terminal


【解决方案1】:

使用nohup shell builtin

nohup python -m http.server 55550

要终止进程,只需使用kill 命令终止它,就像任何其他进程一样。

【讨论】:

    【解决方案2】:

    你也可以在后台启动它

    python -m http.server 55550 &
    

    然后输入

    disown
    

    将进程分离到当前术语

    【讨论】:

    • python -m SimpleHTTPServer 55550 & disown 它允许我在该终端中输入更多命令,但退出 ssh 后它不起作用
    • 它应该像我每天与我启动的许多其他进程一样;) 你可能会错过一些东西。 ://
    • @Windkiller disown vs nohup ;)
    • 有趣,但问题仍然存在。一旦我退出 ssh 并关闭连接,我的进程就会因 disown 而死......
    • 您确定在退出 ssh 连接之前,您在输入 python -m SimpleHTTPServer 55550 & 之后就拒绝输入?
    【解决方案3】:
    screen
    python -m SimpleHTTPServer 55550 &
    press ctrl+a, then press d
    exit
    
    shutdown your computer
    ...
    start your computer
    ssh your server
    screen -r
    

    【讨论】:

    • 如果您关闭计算机,屏幕进程也会停止...
    • @FoxMaSk:服务器不会
    • 你之前没有分离屏幕所以退出会结束python进程,你需要做crtl-D分离屏幕;那么你可以退出,不是吗?
    • @FoxMaSk:好几个星期没用了,补充
    最近更新 更多