一、前言

我们通过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. idea java 非web程序打包

    以下打包非常暴力.O(∩_∩)O哈哈~ 方法一: 第一步:选择需要打包的程序 第二步:选择需要打包的文件 第三步:artifacts->jar->from modules with... ...

  2. Springboot学习笔记(二)-定时任务

    springboot中要使用定时任务需要在配置类或启动类上标注注解@EnableScheduling,并在定时执行的无参方法上标注注解@Scheduled,程序启动后会根据@Scheduled所提供的 ...

  3. [JS] Topic - why "strict mode" here

    Ref: Javascript 严格模式详解 使得Javascript在更严格的条件下运行: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全 ...

  4. [React] 09 - Tutorial: components

    jsx变为js的过程:http://babeljs.io/repl/ youtube: https://www.youtube.com/channel/UCA-Jkgr40A9kl5vsIqg-BIg ...

  5. [Android] 基于 Linux 命令行构建 Android 应用(一):关于 Android 项目

    关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 ...

  6. php-fpm开机自动启动脚本其实源码包里边就有

    网上有各种版本的php-fpm开机自动启动脚本, 其实你编译后源目录已经生成自动脚本.不用做任何修改即用.cp {php-5.5.x-source-dir}/sapi/fpm/init.d.php-f ...

  7. distri.lua线程间通信的设计

    首先简单介绍下distri.lua中的线程设计方案. distri.lua提供一个API函数fork用于创建新的C线程,这个C线程运行独立的lua虚拟机,为了在各线程之间通信 每个线程都会创建一个ch ...

  8. 试一下Markdown

    Markdown 没想到博客园居然能够有markdown这样的写法了,以前觉得有自定义CSS已经非常不错了,现在居然加入Markdown,太值得称赞了.国内的博客系统,应该首屈一指了. 强调 你要走, ...

  9. iOS - 标准时间与时间戳相互转换

    做倒计时后台传的不是时间戳,是时间然后需要与系统时间对比得出时间戳进行倒计时显示 #pragma mark -- 倒计时 // 倒计时时间 NSString* timeStr = task.recei ...

  10. get_or_create函数

    get_or_create函数比较好用. 如果查询到就返回,如果没查询到就向数据库加入新的对象. e.g. size = Size.objects.get_or_create(sizeName=siz ...