MENU

如何在关闭ssh连接的情况下,让程序继续运行?

May 26, 2019 • Read: 2623 • 碎碎念

对Unix,Linux类服务器维护经常是通过ssh完成的,而有些操作比较费时,如更新程序、运行维护脚本等。此时如果断开ssh连接的话,程序就会随之被中断。如何保证断开ssh后仍能保持进程的运行呢?

网上的方法有很多种,但是经过一一检验之后发现还是 Screen 最好用。

首先安装 Screen:

# yum install screen

使用 Screen 很简单:

# screen

输入命令回车后进入 Screen 子界面,此时终端标题栏会指示处于子界面状态,然后运行你的程序:

# 应用程序名

就跟平时的终端使用一样,输入指令运行程序即可。例如:

# python /tmp/test.py

程序正常运行后按下 Ctrl+A ,然后再按下 D 键,此时切换回主界面,终端的窗口标题栏也会指示。

此时程序已经在后台运行了,现在你可以进行其他的操作,或者断开 SSH 连接。

(如果同时按下 Ctrl+A+D, 会直接断开 SSH 连接回到本地 bash,此时程序也是在运行的。)

以后 SSH 重新连接后输入:

# screen -ls

查看在运行程序的子界面代号,然后输入:

# screen -r 子界面代号

此时就会切换到该程序运行的子界面,就可以查看程序运行的状态了。

Last login: Thu Oct  3 16:46:45 2019 from 118.88.88.88
[root@VM_188_188_centos ~]# screen -ls
There is a screen on:
    13314.pts-0.VM_188_188_centos    (Detached)
1 Socket in /var/run/screen/S-root.

[root@VM_188_188_centos ~]# screen -r 1
[detached from 13314.pts-0.VM_188_188_centos]     // Ctrl+A 再 +D
[root@VM_188_188_centos ~]# 

[root@VM_188_188_centos ~]# screen -r 1
[detached from 13314.pts-0.VM_188_188_centos]
[root@VM_188_188_centos ~]# 登出                  // Ctrl+A+D
Connection to 118.88.88.88 closed.
Tesperas-MacBook-Pro:~ tespera$

OK,Enjoy!

Last Modified: October 12, 2020
文章海报
QR Code for this page
Tipping QR Code
Leave a Comment