linux ------ 使用 screen 后 SSH 断开后程序依旧能在后台运行
为什么ssh断开后你运行的进程会退出呢?
因为所有进程都得有个父进程。当你ssh到一个服务器上时,打开的shell就是你所有执行命令的父进程。
当你断开ssh连接时,你的命令的父进程就没了。如果处理不当,这些进程就会收到SIGTERM信号,全被干掉了。
- 让你运行的进程的父进程变成PID=1的init进程,这样你的shell退出后不影响这些命令的继续执行。方法有很多:第一种,命令执行时按ctrl+z将进程暂停,然后输入bg将进程放到后台(相当于执行命令时加上&)。bg输入完成后会有提示该命令的job ID,然后用disown命令将其父进程ID设置为1。(其实这个时候不需要disown,直接exit退出当前shell,默认此时就会将当前shell所有子进程的父进程设置为1)
- 找个父进程为1的进程,做为你要后台持续运行进程的父进程。最简单就是nohup。但是如果你的进程需要tty交互,那最好是拿screen、tmux之类的执行。这样你运行命令的父进程(或祖先进程)是screen、tmux、nohup,你的ssh中的shell退出就不影响命令继续运行了
1、运行.sh文件
直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。
(1)&命令
加在一个命令的最后,可以把这个命令放在后台执行
./abc &
(2)nohup命令
功能:不挂断的运行命令
nohup ./abc &
(3)screen命令
功能:不挂断的运行命令
screen ./bac &
查看有哪些 screen 在运行
screen -ls 打印:
There is a screen on:
.pts-.cloud (// ::) (Attached)
socket in /run/screen/s-username
进入某个screen
screen -r 13054 进入某个screen后,ctrl+c关闭screen
要关闭某个 screen,可以用如下:
kill ps_ID
在shell中只输入 screen,会创建一个新的 screen session,session 里面是一个新的 shell。
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始(这些命令可以判断是否在screen session里面)
C-a c :创建一个新的运行shell的窗口并切换到该窗口,输入exit回到原来的screen session
C-a d :detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a t :time,显示当前时间,和系统的 load
C-a k :kill window,强行关闭当前的 window
2、查看当前后台运行的命令
有两个命令可以用,jobs和ps,区别是jobs用于查看当前终端后台运行的任务,换了终端就看不到了。而ps命令用于查看瞬间进程的动态,可以看到别的终端运行的后台进程。
(1)jobs命令
功能:查看当前终端后台运行的任务
jobs -l选项可显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。
(2)ps命令
功能:查看当前的所有进程
ps -aux | grep "test.sh" #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
3、关闭当前后台运行的命令
kill命令:结束进程
(1)通过jobs命令查看jobnum,然后执行 kill %jobnum
(2)通过ps命令查看进程号PID,然后执行 kill %PID
如果是前台进程的话,直接执行 Ctrl+c 就可以终止了
4、前后台进程的切换与控制
(1)fg命令
功能:将后台中的命令调至前台继续运行
如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。
(2)Ctrl + z 命令
功能:将一个正在前台执行的命令放到后台,并且处于暂停状态
(3)bg命令
功能:将一个在后台暂停的命令,变成在后台继续执行
如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。
linux ------ 使用 screen 后 SSH 断开后程序依旧能在后台运行的更多相关文章
- Linux nohup 关闭终端的时候,程序依然能在后台运行( linux重定向及nohup不输出的方法)
先说一下linux重定向: 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出.在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号 ...
- Linux下使命令不受终端断开的影响,保持在后台运行的几种方法及原理
摘自https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 记录一下Linux下使命令不受终端断开的影响,保持在后台运行的几个方法及其原理.当用 ...
- PHP 在 Nginx 下主动断开连接 Connection Close 与 ignore_user_abort 后台运行
这两天弄个PHP调用 SVN 同步 update 多台服务器更新的程序,为了避免 commit 的时候不会被阻塞卡半天得想个办法只请求触发,而不需要等待程序 update 完成返回结果这样耗时太长,所 ...
- Linux云服务器下Redis安装与部署以及设置redis后台运行
Redis下载: http://redis.io/download 我下载的4.0.11 上传到服务器 注: 官方的建议是直接在linux下载并解压编译 这里不建议先解压再上传到服务器,之前我这样做, ...
- ssh断开后保持程序运行
https://blog.csdn.net/gatieme/article/details/52777721 https://blog.51cto.com/zjking/1117828 https:/ ...
- 如何实现SSH断开后 进程仍然在后台运行
1.nohup命令功能:不挂断地运行命令,忽略HUP信号.语法:nohup command & 实例:nohup ping www.google.com & 转自: http://bl ...
- linux 命令行远程登录 后台运行命令的方法
linux 命令行远程登录 后台运行命令的方法 http://blog.csdn.net/isuker/article/details/55061595 Linux 技巧:让进程在后台可靠运行的几种方 ...
- linux nohup命令实现退出终端后程序继续后台运行
Unix/Linux下一般想让某个程序在后台运行,很多都是使用&在程序结尾来让程序自动运行:但如果要想在退出终端后,程序依然还在后台运行,则要用nohup与&组合来实现. nohup ...
- nohup+命令+& 【退出终端后,程序依然在后台运行】
[ 如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令. 该命令可以忽略所有挂断(SIGHUP)信号,在你退出帐户/关闭终端之后继续运行相应的进程. nohup ...
随机推荐
- OfficeToHtmlHelper
public class Office2HtmlHelper { /// <summary> /// Word转成Html /// </summary> /// <par ...
- ES6字符串操作
讨论字符串操作之前,我们先来了解一下Unicode 编码的由来,因为Js中的字符串就是一系列Unicode码的集合. 我们都知道,世界上存在着各种各样的语言,汉语,英语,日语等,相对应的,也就存在各种 ...
- 了解AutoCAD对象层次结构 —— 5 —— 块表
为了清楚的了解块表的组成内容,让我们利用MgdDbg工具查看一下块表中的块表记录.在开始页面,以无样板模式新建一个.dwg文件(图 4‑7(1)),这样的话,默认的块表记录只有3条(图 4‑7(2)) ...
- Druid简单使用
一.添加maven依赖 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <depende ...
- 进程间的通讯————IPC
""" IPC 指的是进程间通讯 之所以开启子进程 肯定需要它帮我们完成任务 很多情况下 需要将数据返回给父进程 然而 进程内存是物理隔离的 解决方案: 1.将共享数据放 ...
- Java将Excel中科学计数法解析成数字
需要注意的是一般的科学表达式是1.8E12 1.8E-12 而在Excel中的科学表达式是1.8E+12 1.8E-12 我写的科学计数法的正则表达式是(-?\d+\.?\d*)[Ee]{1}[\+- ...
- synchronized 关键字解析
synchronized 关键字解析 同步锁依赖于对象,每个对象都有一个同步锁. 现有一成员变量 Test,当线程 A 调用 Test 的 synchronized 方法,线程 A 获得 Test 的 ...
- Google Apps的单点登录-谷歌使用的单点登录
简述: Customer :客户 Google:谷歌 Identity Provider:身份提供者安全断言标记语言(英语:Security Assertion Markup Language,简称S ...
- HDOJ5540 Secrete Master Plan
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5540 题目大意:给一个两个2*2的矩阵,第二个矩阵能不能通过旋转得到第一个矩阵 题目思路:模拟 #in ...
- 【模板】可持久化文艺平衡树-可持久化treap
题目链接 题意 对于各个以往的历史版本实现以下操作: 在第 p 个数后插入数 x . 删除第 p 个数. 翻转区间 [l,r],例如原序列是 \(\{5,4,3,2,1\}\),翻转区间 [2,4] ...