在Linux中SSH注销后如何保持进程运行
我们尝试访问应用程序或者内容的时间很多,但是它要求重新登录或者弹出窗口,提示会话已超时。
当内容保持空闲并且不执行任何事务时,会话通常会超时。
多次设置了“ 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