在Linux中SSH注销后如何保持进程运行

时间:2020-03-05 15:28:21  来源:igfitidea点击:

我们尝试访问应用程序或者内容的时间很多,但是它要求重新登录或者弹出窗口,提示会话已超时。
当内容保持空闲并且不执行任何事务时,会话通常会超时。
多次设置了“ session_time”变量,该变量暂时保持活动连接。
但是,当会话超时时会发生什么,“ SIGNUP”信号将发送到在后台运行的进程以及作为主进程的子进程的进程,这些进程被迫终止而与任务的完成或者部分完成无关。
那么,即使在SSH注销后,我们如何保持进程运行呢?
在本文中,我将说明即使在SSH与Linux终端(Ubuntu 18.04和CentOS 7)断开连接后,如何保持进程运行。

1)Screen命令

Screen实用程序提供了一种在Linux系统上运行命令,分离并随后重新连接的方法。
如果我们有一个耗时的过程即使退出后仍要继续运行,并且仍然可以选择以后再从其他位置重新连接到屏幕,则该屏幕特别方便。

使用单个屏幕会话

提示:我们在这里使用“ top”命令,我们可以在屏幕会话中运行命令。
立即按“ ctrl + a”和“ d”以从屏幕会话中分离;它将在后台继续运行。

进入独立屏幕会话

$screen -r

在屏幕上时;使用“退出”完全结束屏幕会话。

$exit
[screen is terminating]

我们在父bashshell中;通过“ screen -r”检查是否有任何屏幕会话

$screen -r

没有要恢复的屏幕。

添加多个屏幕

添加更多的屏幕会话,然后简单地从一个切换到另一个。
我们已经在上面看到了如何使用单屏幕会话。
让我们尝试多个。
添加第一个屏幕:

$screen
(run 'top' from screen session; And "ctrl+a" + "d")
$top	
[detached from 15603.pts-1.centos7]

现在,添加第二个屏幕:

$screen

根据意愿,在此新屏幕会话中运行任何命令。
让我们尝试'df'来检查已安装的磁盘。
(从屏幕会话中运行'df -hT';以及“ ctrl + a” +“ d”)

$df -hT 
[detached from 15652.pts-1.centos7]

奖金:屏幕名称太长?
让我们命名该会话;名称将替换tty.host。

这将根据意愿命名会话;让我们将会话命名为“ ping”。

$screen -S 	
$screen -S ping

然后分离会话。
我们会在pid之后看到会话名称;而不是tty.host

$ping -c5 www.theitroad.com		
[detached from 15929.ping]
$screen -r
There are several suitable screens on:
        15929.ping      (Detached)				
        15652.pts-1.centos7     (Detached)
        15603.pts-1.centos7     (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

2)放弃命令

顶部命令就像在Windows任务管理器中查看“进程”选项卡。
最高命令告诉所有有关当前运行,死机,僵尸等进程的信息。
还提供了1分钟,5分钟,15分钟时间戳的CPU使用率和平均CPU负载。

$top > sys_summary &
$jobs -l
[1]+ 10832 Stopped (signal) top > sys_summary
$disown -h %1
$ps -ef | grep top
root 2416 1979 0 13:40 ? 00:00:03 nautilus-desktop --force
root 10832 10724 0 19:36 pts/2 00:00:00 top
root 10915 10724 0 19:37 pts/2 00:00:00 grep --color=auto top

3)nohup命令

让我们使用nohup运行yum安装软件包

$nohup yum install -y httpd* > ApacheInstall 2>&1 &

现在,让我们看看在后台运行的作业

$jobs -l
[1]+  3646 Running                 nohup yum install -y httpd* > ApacheInstall 2>&1 &

4)setsid命令

setsid创建一个会话并设置进程组ID

如果调用进程不是进程组领导者,则setid()将创建一个新会话。
将调用进程的PID设置为进程会话ID和调用进程的相应组ID。

$setsid iostat
$ps -ef | grep iostat

要终止命令,请使用CLT + C

5)Tmux命令

Tmux是终端多路复用器。
一个终端中的多个程序之间的切换变得很容易,将它们分离(它们始终在后台运行),然后将它们重新连接到另一个终端。

添加和分离tmux会话

$tmux attach
$tmux detach

退出/终止tmux

$exit

在创建会话时命名会话

$tmux new -s

使用名称添加

$tmux attach

使用名称在会话之间切换

$tmux switch -t

会话对于分离各种工作环境很有用。
我通常有一个“办公室”会话和一个“家庭”会话;在“办公室”中,我保持日常开发中需要的所有内容,而在“家庭”中,我保留当前的开放源代码宝藏,以便在家中使用。

6)byobu命令

许多发行版不支持bayou,请按照以下命令在CentOS,Ubuntu或者Fedora上安装byobu。

$sudo apt-get install byobu (Ubuntu)
$sudo yum install byobu (CentOS)

在为各自环境安装后,请使用以下简单命令,

$byobu

现在,我们将启动长期运行的过程并退出。

$tar -xvzf community_images.tar.gz

按“ F6”以后台执行过程。

登录到远程系统后,只需键入byobu即可重新连接会话。

$byobu