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

2022-03-24 14:00:41 +08:00
 princelai

我有三台 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 过来是要退出的。

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

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

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

所以我选 tmux
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 ,用来开机自动启动一些交互类型的软件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842600

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX