linux 远程命令执行 断掉,五种方法维持远程服务器的session在断开链接后不被中断(详细解释)...

简介

简单来讲,SSH或Secure Shell是一种远程访问其余系统上的另外一个用户的方法,但只能在命令行即非GUI模式下进行。当咱们在远程计算机上运行命令时,它实际上会建立一个伪终端,并将其附加到登陆用户的登陆shell中。

当咱们退出会话或会话闲置一段时间后超时时,SIGHUP信号将发送到伪终端,而且中止在该终端上运行的全部任务。

但有时候咱们须要程序保持在服务器上运行,此时就须要断开链接后保持程序运行这一技巧了。

一个经常使用的命令ps -ef | grep xxx,用于查询当前进程。如查询python执行的程序$ ps -ef | grep python

python

linux进程

Normal Proces

正常进程是指具备会话寿命的过程。它们在会话期间做为前台进程启动,并在特定时间段内或会话注销后结束。这些进程的全部者是系统的任何有效用户,包括root。linux

Orphan Process

父进程建立进城后,父进程意外终止,从而使init成为该进程的父进程。这样的进程将init做为其直接父级,init等待这些进程死亡或结束。shell

Daemon Process

此类进程是一些故意孤立的进程,这些故意留在系统上运行的进程称为守护程序或故意孤立的进程。

此类进程一般是长时间运行的进程,一旦启动,便会与任何控制终端分离,以便它们能够在后台运行,直到没法完成,不然最终会引起错误。这些进程的父进程有意终止,以便子进程在后台执行。

bash

保持ssh session在断开链接后保持运行的五种方法

1. 使用screen session

screen是 Linux 的文本窗口管理器,它容许用户服务器

同时管理多个终端会话

在会话之间切换

记录会话运行的输出结果

随时恢复会话,而没必要担忧会话被注销或终端关闭。

screen sessions能够在启动后从控制终端分离,从而在后台运行,并能够随时在任何地点恢复。启动screen session后可将其从伪终端(或控制终端)中分离出来。以后从新登陆时恢复会话查看运行结果。

步骤

session

启动screen session:(链接服务器,)bash键入screen

此时bash的命令已经不会由于关闭bash而中断

键入Ctrl+a then d来分离这一段输入的命令。

此时你能够安心关闭远程链接了

(从新登陆服务器)使用screen -r从新打开你的screen session

几个screen经常使用命令ssh

命令

说明

screen

建立一个screen session

screen -ls

列举当前screen session

screen -list

同上

screen -r [session]

恢复screen session并显示期间输出

ctrl+ a+ d

退出当前screen session

screen -X -S [session] kill

kill某个screen session

screen -X -S [session] quit

完全kill某个screen session

screen -S session -X quit

同上

2. 使用Tmux(Terminal Multiplexer)

详细了解Tmux用法移步here

Tmux 做为screen的替代品而生,它具备screen的大部分功能且进行了必要而少许的功能增添,这使得它轻便而强大。

除了screen提供的全部选项,Tmux容许在多个窗口之间水平或垂直拆分窗格、调整窗口窗格的大小、会话活动监视、使用命令行模式编写脚本等。因为 Tmux 的这些功能十分好用,几乎全部 Unix 发行版普遍内嵌了Tmux。

步骤

ide

启动Tmux session:(链接服务器,)bash键入tmux

此时bash的命令已经不会由于关闭bash而中断

使用tmux detach或Ctrl+b then d来分离这一段输入的命令。

此时你能够安心关闭远程链接了

(从新登陆服务器)使用tmux attach从新打开你的screen session

3. 使用nohup命令

使用 nohup 命令,咱们告诉进程忽略 ssh 会话在终止时发送的 SIGHUP 信号,从而使命令即便在会话注销后仍会保留。在会话注销时,该命令从控制终端中分行,并做为守护进程在后台继续运行。

语法:

ui

nohup your_command &

回车后会给出一个id,重登陆时使用fg %your_id来进入以前的sessionspa

4. 使用disown命令

disdown从系统的流程session列表中删除当前session,所以进程在bash关闭后不会被终止,由于它不会收到 shell 的 SIGHUP。

此方法的缺点是程序不能与stdin和 stdout交互(固然你能够重定向输入和输出),当session尝试与 stdin 或 stdout 交互时,进程就会中止。

语法:

diswon your_command

4. 使用setsid命令

能够认为setsid时nohup命令的改良版本。nohup 有一个缺点——执行命令的进程组不变,所以使用 nohup 执行的命令容易受到影响,而setsid命令的进程组时能够变化的,规避了nohup的缺点。

语法与nohup相似。

语法:

setsid your_command

须要说明的是,nohup, disdown, setsid均可以重定向输入输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值