Linux 前台运行中的脚本,有没有办法转到后台(会话断开也不影响那种)

2021-03-22 20:23:48 +08:00
 css3

crtl +z 挂起后 bg 也只是当前会话"后台", 且会自动刷新显示, 会话中断也还是退出了

能不能中途转成像 nohup 那种真后台执行的?

5022 次点击
所在节点    程序员
55 条回复
dilu
2021-03-22 20:25:03 +08:00
1.nohup
2.screen
3.tmux
xing2387
2021-03-22 20:28:51 +08:00
xxx > /dev/null &
sadfQED2
2021-03-22 20:33:02 +08:00
插眼等答案
Osk
2021-03-22 20:34:16 +08:00
disown 试试,zsh 和 bash 支持
PUBG98k
2021-03-22 20:37:48 +08:00
pm2 了解下
wusheng0
2021-03-22 20:39:11 +08:00
楼主的需求是 运行中=>转后台
yitingbai
2021-03-22 20:48:26 +08:00
tmux 你值得拥有
flineqaq
2021-03-22 20:53:23 +08:00
纯命令行有点难吧,装个 GNOME/KDE 然后把操作习惯改成 VNC 过去打开终端,需要转后台的时候直接最小化 /doge
csdreamdong
2021-03-22 21:13:49 +08:00
(xxx 1>/dev/null 2>&1 &)
jasonkayzk
2021-03-22 21:28:50 +08:00
xxx 1>/dev/null 2>&1 & [Enter]
longbow0
2021-03-22 21:29:50 +08:00
(1) 运行命令
(2) 按 Ctrl-Z 挂起这个命令
(3) 运行 jobs 命令,查看作业号。例如:
[1]+ Running myscript.sh
(4) 将需要的作业放到后台运行:
bg 1
longbow0
2021-03-22 21:30:31 +08:00
@longbow0
不过最好还是用 screen 或者 tmux 。
saytesnake
2021-03-22 21:40:40 +08:00
11 楼正解,就是一个 job 么。
CEBBCAT
2021-03-22 21:53:20 +08:00
为什么不读题的人有这么多
z775781
2021-03-22 22:07:43 +08:00
跟你有过同样的需求,然后用 screen 做到了,运行命令前,提前创建 screen 会话
skadi
2021-03-22 22:09:31 +08:00
screen
lance6716
2021-03-22 22:25:56 +08:00
记得 disown 可以,但是 stdout 会丢
carlclone
2021-03-22 22:32:43 +08:00
@longbow0 你这退出 shell 就没了
Kasumi20
2021-03-22 22:37:33 +08:00
拿到进程号,一切都好办,无非就是脱离终端,脱离进程组之类的
Osk
2021-03-22 22:50:43 +08:00
ping fooo.bar >> test.log
Ctrl + Z
bg
disown


关闭 ssh 会话,若没有 disown, ping 会被杀掉。若执行了 disown, ssh 断开后,ping 的 ppid 会变成 1 (init)。

再次连上一个新的 ssh 会话,tail -f test.log ,ping 仍然正常运行。

要重新连接,可以用 reptyr,不过我没成功。。。

话说,ssh 登陆上去的第一个命令不应该是 screen 吗 /doge/

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

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

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

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

© 2021 V2EX