V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
princelai
V2EX  ›  Linux

问一个 Linux 上 nohup 和后台任务的问题

  •  
  •   princelai · Mar 24, 2022 · 5187 views
    This topic created in 1509 days ago, the information mentioned may be changed or developed.

    我有三台 Linux 机器,A,B,C,A 是服务器,B,C 是我使用的家用机

    我有个 python 脚本,需要在 A 机器上运行,运行后就退出登陆,所以启动命令类似于

    nohup python xxx.py &
    

    这个脚本类似于 htop 命令,可以交互查看一些信息,但是需要持续在后台运行,输出也不需要重定向,查看要把任务调到前台来交互查看。

    B,C 两个机器需要 ssh 到 A 机器,我想要 fg 把任务调出来查看,不用的时候还能够 Ctrl+z,bg 1 这个样子放到后台,但是需要用 nohup 方式,因为 ssh 过来是要退出的。

    请问各位有什么办法能够实现吗?

    27 replies    2023-04-07 12:45:43 +08:00
    newaccount
        1
    newaccount  
       Mar 24, 2022
    tmux
    CallMeReznov
        2
    CallMeReznov  
       Mar 24, 2022
    screen
    princelai
        3
    princelai  
    OP
       Mar 24, 2022
    @newaccount @CallMeReznov 好的我去搜搜怎么用
    brucedone
        4
    brucedone  
       Mar 24, 2022
    pm2
    wps353
        5
    wps353  
       Mar 24, 2022
    我喜欢用 screen
    princelai
        6
    princelai  
    OP
       Mar 24, 2022
    感谢楼上各位,我简单看了下 screen 和 tmux 还要配置 ,而且和我当前配置好的 zsh 不太兼容,我找到一个 Byobu,F2 新建窗口,F3,F4 切换,F6 Detach ,1 分钟就上手,和我的配置也能兼容,这几个功能就够我用了,谢谢!
    lixuanyy
        7
    lixuanyy  
       Mar 24, 2022 via iPhone   ❤️ 1
    @princelai screen 不需要配置啊!就命令开启,-S 开启,-r 还原窗口
    duke807
        8
    duke807  
       Mar 24, 2022 via Android
    screen 開機自動啟動某腳本,可參考:
    https://www.v2ex.com/t/840645
    SenLief
        9
    SenLief  
       Mar 24, 2022
    screen 就一个-R
    njzjz
        10
    njzjz  
       Mar 24, 2022 via iPhone
    $ conda install tmux -c conda-forge
    $ tmux
    zyq2280539
        11
    zyq2280539  
       Mar 24, 2022
    tmux +1
    levinit
        12
    levinit  
       Mar 24, 2022 via iPhone
    不用怀疑 你要的就是 tmux ,也不用什么配置 学会三个用法
    新建会话
    退出回话保留后台
    回到会话

    就可以了
    princelai
        13
    princelai  
    OP
       Mar 24, 2022
    @levinit #12 是的是的,我要的就是这三个功能,没想到是靠软件实现,我以为 linux 有什么用法可以做到呢,晚上回去试试了
    haoliang
        14
    haoliang  
       Mar 24, 2022
    我觉得这个需求单纯让 python 程序输出到特定文件就够了,在其他 tty\pty 执行 tail -f ;如果需要让程序执行特定操作,通过 signal 也很容易。

    基于此,这个需求完全可以使用 systemd 来做:(不过可能需要适时给用户开启 linger )
    * systemd-run --user --unit myprogram python xxx.py
    * journalctl --user --unit myprogram -f

    (我是重度 tmux 用户,只是提供一个新思路哈)
    james122333
        15
    james122333  
       Mar 24, 2022
    有方法阿 只是不说了
    ik
        16
    ik  
       Mar 24, 2022 via iPhone
    screen 就一条命令,不用配置吧?
    itechify
        17
    itechify  
    PRO
       Mar 24, 2022
    systemd 一把梭
    fuis
        18
    fuis  
       Mar 24, 2022
    输入 tmux ,运行你的命令
    ctrl+b 按一下 d ,退出
    tmux a ,attach 回去。用起来很简单
    ClericPy
        19
    ClericPy  
       Mar 24, 2022
    如果是个稍微正经点的方式, 肯定是 systemd

    所以我选 tmux
    cev2
        20
    cev2  
       Mar 24, 2022   ❤️ 1
    Byobu 、GNU Screen 、termux 选哪个都行,因为前者只是后两者的前端,你在用 Byobu 时本质上还是在使用 GNU Screen 或 termux 的某一个( Byobu 可以自定义后端为哪个)。
    Byobu 一开始是 Ubuntu 的员工为 Ubuntu Server 开发的,后来被移植到其它发行版上。安装完 Ubuntu Server 默认是预装 Byobu 的,Ubuntu 桌面版则不会强制依赖。
    前者比后两者的资源占用要高一些,我个人比较习惯 GNU Screen ,用来开机自动启动一些交互类型的软件。
    findex
        21
    findex  
       Mar 25, 2022 via iPhone
    复杂的有 zdaemon, supervisord
    系统内置的有 systemctl 我曾在 2016/2017 抨击过 systemd 这种管天管地管空气的做法,但是现在看来已经流行了,毕竟开源社区里面被混进了很多能对 feature 打对号的大公司的人,例如 redhat 公司。
    还有原生 screen
    还有 tmux
    julyclyde
        22
    julyclyde  
       Mar 25, 2022
    @oneisall8955 systemd 没办法“调到前台来”啊
    julyclyde
        23
    julyclyde  
       Mar 25, 2022
    @findex systemd 接管了“登录”之后,screen 、tmux 这类,在用户退出的时候有可能会被干掉
    是通过 systemd user linger 参数来控制的
    这是不是进一步增加了你讨厌它的点啊?
    itechify
        24
    itechify  
    PRO
       Mar 25, 2022 via Android
    @julyclyde tail 日志文件不行吗
    julyclyde
        25
    julyclyde  
       Mar 25, 2022
    @oneisall8955 我感觉 lz 的需求似乎是“还打算再互动操作一下”
    itechify
        26
    itechify  
    PRO
       Mar 25, 2022 via Android
    @julyclyde 了解,类似 htop ,还可以继续发送指令,进行交互
    billgreen1
        27
    billgreen1  
       Apr 7, 2023 via iPhone
    ssh -t user@serverA ‘tmux -CC new-session -As session’
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3942 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 10:28 · PVG 18:28 · LAX 03:28 · JFK 06:28
    ♥ Do have faith in what you're doing.