文章目录
简介
简单来讲,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均可以重定向输入输出。