关于Linux前后台进程切换
前言:
当使用SSH远程登录服务器时,对于运行时间较长的程序(如Caffe的训练可能需要十几个小时),
SSH可能会在很长时间后断掉,导致程序没运行完就中断了。
为了解决这个问题,需要将在服务器运行的程序由“前台”转移到“后台”去。
经过几番探索,最终发现screen方法TMUX方法是最成熟最好用的(没有之一,不接受反驳):
相当于在远程服务器上开设了一个盒子,盒子里还是你的服务器。
在盒子里运行的程序不会收到SSH连接中断的影响。
随时连上服务器后只要进入盒子里,盒子的状态还和离开时一样,
这也方便了开展工作
TMUX方法:
https://gist.github.com/ryerh/14b7c24dfd623ef8edc7
对执行的命令后面加上&,直接放在后台执行
如python main.py --image_size 96 --output_size 48 --dataset faces --is_crop True --is_train True --epoch 300 --input_fname_pattern *.jpg &
用jobs可以查看当前正在运行的任务,
jobs -l是查看所有正在运行的任务
对于正在运行的程序,如果之前没有使用&,
则首先ctrl+z将其暂停,然后
bg %1可以把第一个任务放在后台运行
使用fg %1则可以把后台的进程变成前台的
以上都是在终端(XFTP)没有关闭过的前提下,
如果关闭过了又打开,则jobs没有用了,因为jobs只能查看在当前命令行窗口后台运行的程序
这时候可以使用ps命令查看所有运行的程序
使用ps -ef | grep python
查看正在运行的python程序
会显示程序的编号
如果想要关掉它
使用kill -9 2363
假设编号为2363,就可以关掉了
nohup ./test.sh & 或者
setsid ./test.sh & 然后输入exit,关闭终端,关闭XSHELL,再打开,使用ps -ef | grep python查看,还在 就搞定了 ============================== 发现一个更高级的方法[2]:screen 说几个实用的: screen -ls
列出当前正在运行的会话 screen -S bert
创建一个独立会话,名字叫做Bert 先按下Ctrl+a,然后输入w,列出所有已经创建的会话,其中*表示当前在哪个会话中
先按下Ctrl+a,然后输入d,可以将当前会话挂起,这时候可以关闭xshell,关闭电脑,然而在那边还在正常运行着 怎么回来呢?
先用screen -ls,看到

然后输入
screen -r 36763.bert
就能回去了
如果想要干掉已经detached的会话[3] (session),需要输入
screen -X -S 36763 quit 然后就好了 如果不小心关了电脑,但是screen会话还是attached的状态,这时候是进不去的,想关闭他的话,用下面的:
screen -X -S 36763 kill
就可以了 Reference:
- http://blog.csdn.net/zxh2075/article/details/52932885
- http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
- http://nanxiao.me/kill-detached-screen-session/
关于Linux前后台进程切换的更多相关文章
- Linux学习笔记(16)Linux前后台进程切换(fg/bg/jobs/ctrl+z)
关键词:Linux前后台进程切换,linux进程切换 fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& ...
- Linux前后台进程切换
(1).Linux前台进程与后台进程的区别 前台进程:是在终端中运行的命令,那么该终端就为进程的控制终端,一旦这个终端关闭,这个进程也随之消失. 后台进程:也叫守护进程(Daemon),是运行在后台的 ...
- linux内核——进程切换宏switch_to
该宏有三个参数:prev, next, last.它们都是局部变量. prev:输入参数,变量值为旧进程描述符的地址. next:输入参数,变量值为新进程描述符的地址. last:输出参数,用来记录该 ...
- linux前后台任务切换管理
liuyuan@ebuinfo:/var/www/projects/PHPExcel/Examples$ vi 33chartcreate-line.php & [] liuyuan@ebui ...
- Linux进程切换代码分析
朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这次我们来分析L ...
- linux进程解析--进程切换
为了控制进程的执行,linux内核必须有能力挂起正在cpu上运行的进程,换入想要切换的进程,也就是恢复以前某个挂起的进程,这就是linux的进程切换. 1进程切换的时机 一般来说,进程切换都是发生在 ...
- Linux任务前后台的切换(转)
Linux任务前后台的切换 Shell支持作用控制,有以下命令实现前后台切换: 1. command& 让进程在后台运行 2. jobs 查看后台运行的进程 3. fg %n 让后台运行的 ...
- 前后台 工作切换---------------Linux 任务管理器(一)
继续下一章... 发现了一个好东东.就是前后台的切换.例如我们现在要vim一个文件.然后又要查找一些命令的时候,以前不知道,都是退出后,查完了,在vim进入.现在我们可以将该vim拿到后台,然后查完了 ...
- Linux内核分析——理解进程调度时机跟踪分析进程调度与进程切换的过程
20135125陈智威 +原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验 ...
随机推荐
- openssh安装/更新教程(CentOS)
由于rpm包版本总落后于tar包,对于想安装新版本或由于漏洞需要更新到新版本那只能选择源代方式编译安装. 更新执行和安装一样的步骤就行了. 1.下载 官方网址:http://www.openssh.c ...
- ElasticSearch安装部署(Windows)
测试版本:elasticsearch-5.1.1 1.解压elasticsearch-5.1.1.zip. 2.执行elasticsearch.bat启动服务,启动画面如下: 3.访问ElasticS ...
- BPTT for multiple layers
单层rnn的bptt: 每一个时间点的误差进行反向传播,然后将delta求和,更新本层weight. 多层时: 1.时间1:T 分层计算activation. 2.时间T:1 利用本时间点的误差,分层 ...
- matlab中高维数组怎么做PCA?
PCA需要先求数据的散布矩阵x*x',再求其特征向量,那么随便一个400*450的图像,就是180000维,矩阵就是180000*180000,matlab无法容纳,那么通常的PCA对图像的降维,比如 ...
- laravel本地开发的项目部署到服务器上
不建议用ftp,建议用git.svn等工具从你的开发服务器上拉取.或者使用一些自动构建发布的工具.如果非要用ftp上传,建议用以下步骤: 服务器上安装composer,并使用`composer sel ...
- xml常用操作(js、sql、vb)
我们经常会用到xml操作,如下介绍了js.sql.vb等对xml的操作. JS创建xml对象 //创建对象 function getDataXML() { var objTds = $(&qu ...
- linux 定时任务 日志记录
1 不记录日志 > /dev/null 2>&1 2 日志记录追加到指定文件 >> /path/mylog.log 2>&1
- java 实现简单的顺序队列
package com.my; import java.util.Arrays; /** * 顺序队列 * @author wanjn * */ public class ArrayQueue { p ...
- angular4-常用指令
ngIf 指令(它与 AngularJS 1.x 中的 ng-if 指令的功能是等价) <div *ngIf="condition">...</div> n ...
- C++基础知识:继承
1.继承的概念 面向对象中的继承指类之间的父子关系子类拥有父类的所有成员变量和成员函数子类就是一种特殊的父类子类对象可以当作父类对象使用子类可以拥有父类没有的方法和属性 2.C++中的访问级别与继承p ...