
我有三台 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 过来是要退出的。
请问各位有什么办法能够实现吗?
1 newaccount 2022-03-24 14:05:08 +08:00 tmux |
2 CallMeReznov 2022-03-24 14:06:29 +08:00 screen |
3 princelai OP @newaccount @CallMeReznov 好的我去搜搜怎么用 |
4 brucedone 2022-03-24 14:33:20 +08:00 pm2 |
5 wps353 2022-03-24 14:34:55 +08:00 我喜欢用 screen |
6 princelai OP 感谢楼上各位,我简单看了下 screen 和 tmux 还要配置 ,而且和我当前配置好的 zsh 不太兼容,我找到一个 Byobu,F2 新建窗口,F3,F4 切换,F6 Detach ,1 分钟就上手,和我的配置也能兼容,这几个功能就够我用了,谢谢! |
9 SenLief 2022-03-24 17:33:24 +08:00 screen 就一个-R |
10 njzjz 2022-03-24 17:38:40 +08:00 via iPhone $ conda install tmux -c conda-forge $ tmux |
11 zyq2280539 2022-03-24 17:41:00 +08:00 tmux +1 |
12 levinit 2022-03-24 17:55:45 +08:00 via iPhone 不用怀疑 你要的就是 tmux ,也不用什么配置 学会三个用法 新建会话 退出回话保留后台 回到会话 就可以了 |
13 princelai OP @levinit #12 是的是的,我要的就是这三个功能,没想到是靠软件实现,我以为 linux 有什么用法可以做到呢,晚上回去试试了 |
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 用户,只是提供一个新思路哈) |
15 james122333 2022-03-24 19:29:12 +08:00 有方法阿 只是不说了 |
16 ik 2022-03-24 19:32:12 +08:00 via iPhone screen 就一条命令,不用配置吧? |
17 itechify PRO systemd 一把梭 |
18 fuis 2022-03-24 20:21:09 +08:00 输入 tmux ,运行你的命令 ctrl+b 按一下 d ,退出 tmux a ,attach 回去。用起来很简单 |
19 ClericPy 2022-03-24 20:41:14 +08:00 如果是个稍微正经点的方式, 肯定是 systemd 所以我选 tmux |
20 cev2 2022-03-24 21:15:46 +08:00 Byobu 、GNU Screen 、termux 选哪个都行,因为前者只是后两者的前端,你在用 Byobu 时本质上还是在使用 GNU Screen 或 termux 的某一个( Byobu 可以自定义后端为哪个)。 Byobu 一开始是 Ubuntu 的员工为 Ubuntu Server 开发的,后来被移植到其它发行版上。安装完 Ubuntu Server 默认是预装 Byobu 的,Ubuntu 桌面版则不会强制依赖。 前者比后两者的资源占用要高一些,我个人比较习惯 GNU Screen ,用来开机自动启动一些交互类型的软件。 |
21 findex 2022-03-25 06:24:40 +08:00 via iPhone 复杂的有 zdaeon, supervisord 系统内置的有 systemctl 我曾在 2016/2017 抨击过 systemd 这种管天管地管空气的做法,但是现在看来已经流行了,毕竟开源社区里面被混进了很多能对 feature 打对号的大公司的人,例如 redhat 公司。 还有原生 screen 还有 tmux |
22 julyclyde 2022-03-25 11:52:10 +08:00 @oneisall8955 systemd 没办法“调到前台来”啊 |
23 julyclyde 2022-03-25 11:52:59 +08:00 @findex systemd 接管了“登录”之后,screen 、tmux 这类,在用户退出的时候有可能会被干掉 是通过 systemd user linger 参数来控制的 这是不是进一步增加了你讨厌它的点啊? |
25 julyclyde 2022-03-25 12:22:36 +08:00 @oneisall8955 我感觉 lz 的需求似乎是“还打算再互动操作一下” |
27 billgreen1 2023-04-07 12:45:43 +08:00 via iPhone ssh -t user@serverA ‘tmux -CC new-session -As session’ |