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

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

  •  
  •   princelai · 2022-03-24 14:00:41 +08:00 · 4170 次点击
    这是一个创建于 966 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    就可以了
    princelai
        13
    princelai  
    OP
       2022-03-24 18:09:54 +08:00
    @levinit #12 是的是的,我要的就是这三个功能,没想到是靠软件实现,我以为 linux 有什么用法可以做到呢,晚上回去试试了
    haoliang
        14
    haoliang  
       2022-03-24 18:35:33 +08:00
    我觉得这个需求单纯让 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  
       2022-03-24 19:29:12 +08:00
    有方法阿 只是不说了
    ik
        16
    ik  
       2022-03-24 19:32:12 +08:00 via iPhone
    screen 就一条命令,不用配置吧?
    oneisall8955
        17
    oneisall8955  
       2022-03-24 19:33:52 +08:00
    systemd 一把梭
    fuis
        18
    fuis  
       2022-03-24 20:21:09 +08:00
    输入 tmux ,运行你的命令
    ctrl+b 按一下 d ,退出
    tmux a ,attach 回去。用起来很简单
    ClericPy
        19
    ClericPy  
       2022-03-24 20:41:14 +08:00
    如果是个稍微正经点的方式, 肯定是 systemd

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