泰州网站建设优化,手机百度2020,西安单位网站建设,食品行业网站建设方案SSH或安全Shell简单来说就是一个人可以远程访问其他用户的其他系统#xff0c;但仅在命令行即非GUI模式的方法。 在更多的技术术语中#xff0c;当我们ssh到其他用户在某些其他系统上并在该机器上运行命令时#xff0c;它实际上创建一个伪终端并将其附加到登录用户的登录she…SSH或安全Shell简单来说就是一个人可以远程访问其他用户的其他系统但仅在命令行即非GUI模式的方法。 在更多的技术术语中当我们ssh到其他用户在某些其他系统上并在该机器上运行命令时它实际上创建一个伪终端并将其附加到登录用户的登录shell。断开连接后SSH会话运行的5种方法当我们退出会话或会话超时闲置一段时间后将SIGHUP信号发送到伪终端以及所有已在该终端上运行的作业甚至有自己的父作业的作业在伪终端上发起的也被发送SIGHUP信号并被强制终止。只有配置为忽略此信号的作业才能在会话终止后生存。 在Linux系统上我们可以有许多方法使这些作业在远程服务器或任何计算机上运行即使在用户注销和会话终止之后。了解Linux上的进程正常过程正常过程是具有会话的寿命的过程。 它们在会话期间作为前台进程启动并在特定时间跨度或在会话注销时结束。 这些进程的所有者是系统的任何有效用户包括root用户。孤立进程孤立进程是最初有父进程创建进程的进程但在一段时间后父进程无意中死亡或崩溃使init成为该进程的父进程。 这样的进程使init作为其直接父进程等待这些进程直到它们死亡或结束。守护进程这些是一些有意孤立的进程这些有意在系统上运行的进程称为守护程序或有意孤立的进程。 它们通常是长时间运行的进程它们一旦启动然后从任何控制终端分离以便它们可以在后台运行直到它们没有完成或者最终引发错误。 这种过程的父母故意使孩子在后台执行。断开连接后保持SSH会话运行的技术在断开连接后可以有多种方法使ssh会话运行如下所述1.使用屏幕命令保持SSH会话运行屏幕是Linux的一个文本窗口管理器它允许用户管理在同一时间多个终端会话会话之间切换会话日志记录在屏幕上运行会议甚至可以恢复届我们无需担心会话所需的任何时间被记录输出或端子闭合。屏幕会话可以开始然后从控制终端分离使它们在后台运行然后在任何时间甚至在任何地方恢复。 只需要在屏幕上启动会话并在需要时将其从伪终端(或控制终端)分离并注销。 当你感觉到你可以重新登录并恢复会话。启动屏幕会话键入“屏幕”命令后你将在一个新的屏幕会话本次会议中您可以创建新的窗口遍历窗口之间锁定屏幕并做更多的东西你可以正常的终端上做的。$ screen在Linux中启动屏幕会话一旦屏幕会话启动您可以运行任何命令并通过分离会话来保持会话运行。在屏幕会话中运行命令分离屏幕只是当你想退出远程会话但你想保持在该机器上创建的会话活着那么你只需要做的是将屏幕从终端分离以便它没有控制终端。 这样做后您可以安全地注销。从远程终端分离屏幕只要按下“Ctrla”后面紧跟着“d”您将回到码头看到屏幕上是分离的消息。 现在您可以安全地注销您的会话将保持活动状态。分离Linux屏幕会话恢复分离屏幕会话如果你想恢复您注销前留下了分离屏幕会话只需再次重新登录到远程终端输入“screen -r”如果只有一个屏幕打开的情况下如果多屏会被打开运行“screen -r ”$ screen -r$ screen -r 恢复分离屏幕会话要了解更多关于屏幕的命令以及如何使用它只是按照链接 使用屏幕命令管理Linux终端会话2.使用Tmux(终端复用器)保持SSH会话运行TMUX是创建的是用于屏幕更换另一个软件。 它拥有的大部分屏幕的能力很少有额外的功能这使得它比屏幕上更强大。除了屏幕提供的所有选项之外它允许在多个窗口之间水平或垂直分割窗格调整窗口窗格大小会话活动监视使用命令行模式的脚本等。由于tmux的这些特性它已被近乎所有的Unix发行版甚至已经包含在OpenBSD的基本系统中。启动Tmux会话在远程主机并输入TMUX做SSH之后你将进入一个新的会话使用一个新窗口打开在你的面前其中你可以做任何你一个正常的终端上完成。$ tmux启动tmux终端会话在终端上执行操作后您可以从控制终端分离该会话使其进入后台您可以安全地注销。在Tmux会话中执行Linux命令从终端分离Tmux会话要么你可以运行“tmux detach”运行TMUX会话也可以使用快捷键(Ctrlb then d) 之后您当前的会话将分离您将回到您的终端从那里你可以安全地注销。$ tmux detach在Linux中分离Tmux会话恢复关闭的Tmux会话要重新打开会话你超脱保持不变当你退出系统只需重新登录到远程计算机然后键入“TMUX重视”重新连接到关闭会话它将会依然存在并运行。$ tmux attach恢复Tmux关闭会话要了解更多关于TMUX以及如何使用它只是按照链接 使用TMUX终端复用器管理多个Linux的终端 。3.使用nohup命令保持运行SSH会话如果您不熟悉的屏幕或TMUX你可以使用的nohup和发送你的长期运行的命令的背景这样就可以继续而该命令将继续在后台执行。 之后您可以安全地注销。随着nohup命令我们告诉这个过程要忽略的是通过SSH会话发送终端上从而使该命令的SIGHUP信号坚持即使会话注销后。 在会话注销时命令从控制终端中被取消并作为守护进程在后台继续运行。在后台使用nohup执行命令在这里是一个简单的场景其中我们已经运行find命令来搜索文件使用的nohup上的SSH会话背景在此之后任务被送到背景提示返回立即给PID和过程作业ID ([JOBID] PID) 。# nohup find / -type f $gt; files_in_system.out 21 在后台运行Linux命令恢复会话以查看作业是否仍在运行当您再次重新登录您可以检查命令的状态通过将其带回前台fg %JOBID来监测其进展情况等。 下面输出显示作业已完成因为它在重新登录时不显示并已给出显示的输出。# fg %JOBID在后台运行Linux命令4.使用disown命令保持SSH会话运行即使会话注销后让你的命令或者在后台单任务运行和另一种优雅的方式仍然存活或断开是使用不认 。不认 从系统中删除的处理作业列表中的作业所以这个过程是从会话断开时被杀害当您注销它不会被shell收到SIGHUP屏蔽。这种方法的缺点是它应该只对那些不需要从标准输入既不需要任何输入写入到标准输出的作业中使用的除非你专门重定向作业的输入和输出因为当作业将尝试使用标准输入交互或标准输出 这将暂停。使用后台禁用执行命令下面我们发送ping命令来背景使UT不断运行并会从任务列表中删除。 可以看出这项工作首先暂停后它仍然在工作清单进程ID15368。$ ping howtoing.com pingout $ jobs -l$ diswon -h %1$ ps -ef | grep ping使用Disown运行Linux命令之后拒绝信号传递到作业并从作业列表中删除虽然仍然在后台运行。 当您重新登录到远程服务器时作业仍将运行如下所示。$ ps -ef | grep ping验证作业状态5.使用setsid命令使SSH会话运行另一个实用程序来实现所要求的行为setsid。NOHUP具有意义上的缺点即该过程的进程组保持相同以便与nohup的运行过程是易受发送到的整个过程组的任何信号(例如Ctrl C ) 。在另一方面setsid分配正在执行一个新的进程组的进程因此创建的过程完全是在一个新分配的进程组可以不用担心甚至会注销后被杀安全地执行。使用setsid执行任何命令这里它示出了该过程sleep 10m已经从控制终端拆下由于时间已经创建。$ setsid sleep 10m$ ps -ef | grep sleep使用Setsid运行Linux命令现在当您重新登录会话时您仍然会发现此进程正在运行。$ ps -ef | grep [s]leepLinux进程运行背景结论你可以想到什么方法来保持你的进程运行即使你从SSH会话注销 如果有任何其他和有效的方式你可以想到请在你的评论中提及。