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

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

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

    我有三台 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 自某本,可考:
    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 就一条命令,不用配置吧?
    itechify
        17
    itechify  
    PRO
       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
    复杂的有 zdaeon, 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 参数来控制的
    这是不是进一步增加了你讨厌它的点啊?
    itechify
        24
    itechify  
    PRO
       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 的需求似乎是“还打算再互动操作一下”
    itechify
        26
    itechify  
    PRO
       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’
    关于     帮助文档     自助推广系统 &nbs;   博客     API     FAQ     Solana     816 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:22 PVG 05:22 LAX 13:22 JFK 16:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86