一、前言

我们通过shell窗口运行程序时,由于有的程序长时间运行,直到下班了都还没有返回运行结果。这个时候,我们又不能直接关闭shell窗口,不然前面的时间就白白运行了。

那有什么办法可以先暂停程序,明天再继续运行呢?(不可行,关闭shell窗口后,后台暂停的程序就终止了)

有!

二、分析方案

方案一:后台运行(有效方案,强烈推荐)。使用 nohup 或者 at

方案二:背景环境运行(无效方案)。使用ctrl+z、bg等

三、方案对比:

方式一:后台运行。使用 nohup 或者 at

特点是可以关闭shell窗口,但是没有暂停功能,适用于明天查看类型。用pstree或者ps -ef | grep xxx查看,kill 来杀死。

方式二:背景环境运行。使用ctrl+z、bg等

特点是不可以关闭shell窗口,具有暂停功能,适用于短暂的放入背景工作。用jobs -l 查看,关闭shell窗口或者kill来杀死。

ctrl+Z 将现在前景的、运行的程序,变成背景的、暂停的工作。
jobs 查看背景中的工作编号。 jobs -l可以查看工作进程编号。
fg %1 调回前景环境运行。将方括号编号为[1]的背景的、暂停的程序,变成前景的、运行的程序。
bg %2 将背景环境中暂停的工作运行起来。将方括号编号为[2]的背景的、暂停的程序,变成背景的、运行的程序。
ping 127.0.0.1 > ping.log & 将现在xxx命令程序,变成背景的、运行的程序。在背景当中执行的指令,如果有 stdout 及 stderr 时,他的数据依旧是输出到屏幕上面的, 所以,最佳的状况就是利用数据流重导向, 将输出数据传送至某个文件中。
注意:
1、后台运行和背景运行不一样。在背景中的、运行的程序不能被ctrl+C 终止掉,但是可以关闭shell终端或者kill来终止掉。后台运行的程序,关闭shell也不能终止掉,需用kill来终止掉。
2、背景环境中的程序依赖当前shell窗口存活。背景环境中的进程叫工作。一个shell中的背景环境中的工作,可以用jobs查看,当前shell窗口关闭了背景中的工作也就关闭了。所以在其他shell窗口中,jobs查不到背景环境中的工作。
3、查看背景环境中的工作用jobs,查看后台环境中的进程用pstree。
4、开启背景环境中的工作用①先书写命令,再输出重定向和& 或者②先执行命令,再ctrl+Z和bg %1

附图说明:

如何暂停和继续运行Linux程序的更多相关文章

  1. 如何实现在Windows上运行Linux程序,附示例代码

    微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On Windows的原理, 而今天的这篇文章将会讲解如何自己 ...

  2. # 如何在Windows下运行Linux程序

    如何在Windows下运行Linux程序 一.搭建 Linux 环境 1.1 安装 VMware Workstation https://www.aliyundrive.com/s/TvuMyFdTs ...

  3. 在Windows上远程运行Linux程序

    1.在Windows主机上安装X Server软件,如Cygwin带的XWin Server 2.在Windows主机上启动X服务器,并将Linux主机设为允许访问该Windows主机上的X服务器. ...

  4. 如何运行linux shell程序

    原文地址:http://www.sohu.com/a/138822796_610671 首先,我们从一个十分简单的例子test.sh开始吧: #!/bin/sh #this is a test. cd ...

  5. 解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止【后台运行程序】

    问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)之后,发现该服务中断,导致网页无法访问.   解决方法:使用nohup命 ...

  6. 使程序在Linux下后台运行,程序运行前后台切换

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...

  7. linux安装nodejs运行vue程序

    linux安装nodejs运行vue程序 1.与node官网下载安装包 https://nodejs.org/zh-cn/download/ 6.上传到服务器,并解压 tar -xvf node-v1 ...

  8. 在Linux直接运行安卓程序

    Linux上的软件少得可怜,要是能够直接运行安卓程序,那将是意见很酷的事情. 方法原理:首先这个方法不需要开启安卓虚拟机,是直接在Linux上运行的. 谷歌在很早之前提出了archon的方案,能够直接 ...

  9. 如何在Linux中使用Firejail运行应用程序

    有时您可能希望使用在不同环境中未经过良好测试的应用程序,但您必须使用它们.在这种情况下,关注系统的安全性是正常的.在Linux中可以做的一件事是在沙箱中使用应用程序. “沙盒”是在有限环境中运行应用程 ...

随机推荐

  1. [原]pomelo基础知识(一)

    1.pomelo基本介绍 http://blog.gfdsa.net/2013/06/04/pomelo/pomelo_study_two/ 2.如何配置一个gate服务器 (1)首先 需要在game ...

  2. [Artoolkit] Marker Training

    Link: Documentation About the Traditional Template Square Marker Limitations (重要) Traditional Templa ...

  3. 转自ruby迷: 使用Net::SSH和Net::SCP编写Linux服务器管理脚本

    试了一下perl下安装ssh模块,整了半天linux/window上都装不上,各依赖模块的版本总是匹配不上,后改了一下思路,用ruby吧 Net::SSH和Net::SCP是两个Ruby操作SSH的g ...

  4. File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplication (=1).

    File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplication (=1). 这 ...

  5. Android Selinux

    https://blog.csdn.net/rikeyone/article/details/84337115   如何快速定位SElinux问题并修复? https://blog.csdn.net/ ...

  6. int main(int argc,char *argv[])与int main(int argc,char **argv)区别?

    int main(int argc,char *argv[])与int main(int argc,char **argv)区别? 这两种是一个等价的写法 而int main(int argc,cha ...

  7. 多线程 ForkJoinPool

    阅读目录 使用 背景:ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行:当多个“小任务”执行完成 ...

  8. Docker容器与容器云之Docker单机集群部署案例

    准备工作: CentOS 7安装docker: #yum -y install docker 1.获取节点所需镜像 --主机执行 #docker pull django #docker pull ha ...

  9. shell脚本之流程控制语句

    一.分支控制语句 1.if .. fi条件 if condition; then action fi 2.if .. else .. fi条件 if condition;then action; el ...

  10. angular4 辅助路由

    1.辅助路由 2. 创建chat组件 ng g component chat 3. 组件html css: 1 2 3 4 5 6 7 .chat{   background:green;   hei ...