前言:

当使用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:
  1. http://blog.csdn.net/zxh2075/article/details/52932885
  2. http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
  3. http://nanxiao.me/kill-detached-screen-session/

关于Linux前后台进程切换的更多相关文章

  1. Linux学习笔记(16)Linux前后台进程切换(fg/bg/jobs/ctrl+z)

    关键词:Linux前后台进程切换,linux进程切换 fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& ...

  2. Linux前后台进程切换

    (1).Linux前台进程与后台进程的区别 前台进程:是在终端中运行的命令,那么该终端就为进程的控制终端,一旦这个终端关闭,这个进程也随之消失. 后台进程:也叫守护进程(Daemon),是运行在后台的 ...

  3. linux内核——进程切换宏switch_to

    该宏有三个参数:prev, next, last.它们都是局部变量. prev:输入参数,变量值为旧进程描述符的地址. next:输入参数,变量值为新进程描述符的地址. last:输出参数,用来记录该 ...

  4. linux前后台任务切换管理

    liuyuan@ebuinfo:/var/www/projects/PHPExcel/Examples$ vi 33chartcreate-line.php & [] liuyuan@ebui ...

  5. Linux进程切换代码分析

    朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这次我们来分析L ...

  6. linux进程解析--进程切换

    为了控制进程的执行,linux内核必须有能力挂起正在cpu上运行的进程,换入想要切换的进程,也就是恢复以前某个挂起的进程,这就是linux的进程切换.  1进程切换的时机 一般来说,进程切换都是发生在 ...

  7. Linux任务前后台的切换(转)

    Linux任务前后台的切换   Shell支持作用控制,有以下命令实现前后台切换: 1. command& 让进程在后台运行 2. jobs 查看后台运行的进程 3. fg %n 让后台运行的 ...

  8. 前后台 工作切换---------------Linux 任务管理器(一)

    继续下一章... 发现了一个好东东.就是前后台的切换.例如我们现在要vim一个文件.然后又要查找一些命令的时候,以前不知道,都是退出后,查完了,在vim进入.现在我们可以将该vim拿到后台,然后查完了 ...

  9. Linux内核分析——理解进程调度时机跟踪分析进程调度与进程切换的过程

    20135125陈智威 +原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验 ...

随机推荐

  1. 【转】JS常用函数整合库 lutils

    lutils 此工具包是在 outils 的基础上,加上个人平时收集的代码片段进行的二次整合 outils的GitHub:https://github.com/proYang/outils/blob/ ...

  2. OpenJDK换为JDK(CentOS)

    说明:应该来说没必要非把OpenJDK卸载掉,只要让$PATH中我们安装的jdk的目录较OpenJDK所在的/usr/bin先出现就好了:简言之跳过下边的第一步直接从第二步开始更科学一些. 1.卸载O ...

  3. maven运行时的配置及命令详解

      上面是指定端口运行程序的,也可以先指定好,直接在上面的地方写jettty:run           当然,如果你是在控制台运行且安装了maven,直接可以进入项目的文件中:mvn jetty:r ...

  4. vertical-align属性测试实验面板 文字 图片对齐

    转自:http://www.zhangxinxu.com/study/201005/verticle-align-test-demo.html

  5. jQuery封装 写的的确不错 转载

    扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱. 入门 编写一个jQuery插件开始于给jQuery.fn加入 ...

  6. POJ 1837 Balance 水题, DP 难度:0

    题目 http://poj.org/problem?id=1837 题意 单组数据,有一根杠杆,有R个钩子,其位置hi为整数且属于[-15,15],有C个重物,其质量wi为整数且属于[1,25],重物 ...

  7. 自定义xadmin后台首页

    登陆xadmin后台,首页默认是空白,可以自己添加小组件,xadmin一切都是那么美好,但是添加小组件遇到了个大坑,快整了2个礼拜,最终实现想要的界面.初始的页面如图: 本机后台显示这个页面正常,do ...

  8. Yii2.0 数据库查询 [ 2.0 版本 ]

    下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...

  9. URL组成成分及各部分作用简介及urllib.parse / uri

    URL的一般格式为(带方括号[]的为可选项): protocol :// hostname[:port] / path / [;parameters][?query]#fragment urllib. ...

  10. HUSTOJ配置文件

    转载:http://blog.csdn.net/zhblue/article/details/7366194 经常有用户询问如何开发一些功能,实际上这些功能都已经有,或者部分实现了,只需要修改配置文件 ...