linux程序已经在后台运行冻结了_如何使程序在Linux后台运行

经常在Linux上面运行程序都有这样的体验:

某个程序运行的时候,会产生大量的log(提示)信息,但实际上我们只想让它跑一下而已,log暂时不需要或者后面才有需要。

同时run多个相同或者不同程序的时候,占了好多的命令行界面,作为一个强迫症患者,就想要一个清爽的界面!

电脑不小心休眠了或者关机了,又或者wifi断开了,没网了,导致运行老久的程序直接中断了,又得重头开始!

◆◆◆  ◆◆

先来解决第一个问题,如何放到后台

很简单,就是在所有命令后面都加个空格和“&”符号就可以了:

./test &

这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:

./test > out.txt 2>&1 &

2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的out.txt文件中,从此终端彻底清静了。

如果程序已经在运行了,其实也是有办法加入后台的,只需使用快捷键 ctrl-z就能立马放到后台中了,不过这种方法其实是暂停了程序的运行,所以想要让程序继续运行还得输入 “fg” 命令让程序返回前台来。

那现在程序在后台运行了,我们怎么找到它呢?很简单,有两种方法:

1.jobs命令

jobs命令可以查看当前有多少在后台运行。

jobs -l

此命令可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

2.ps命令

ps -ef | grep test

用grep查询ps -ef的结果,就可以显示所有正在运行的任务中含有test关键词的程序具体信息了。

◆◆◆  ◆◆

nohup命令来避免程序中断

在命令的末尾加个&符号后,程序可以在后台运行,但是一旦当前终端关闭(即退出当前帐户),该程序就会停止运行。那假如说我们想要退出当前终端,但又想让程序在后台运行,该如何处理呢?

实际上,这种需求在十分很常见,比如想远程到服务器编译软件或者需要长时间的运行一个程序,但网络不稳定,一旦掉线就中止了,很浪费时间。

在这种情况下,我们就可以使用nohup命令。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:

nohup ./test &

如果仅仅如此使用nohup命令的话,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:

nohup ./test > out.txt 2>&1 &

这样一来,多管齐下,既使用了nohup命令,也使用了&符号,同时把标准输出/错误重定向到指定文件中。

PS:

还有一种也很常见的避免中断的方法,就是使用screen命令,它能够在一个真实终端下运行伪终端,我们可以在这个伪终端里面为所欲为,再也不用担心网络中断会对我们的进程造成影响,也不用给每个命令前都加上“nohup”。

但是screen的缺点是开很多screen进程的时候,会生成多个伪终端,比较占用系统资源,另外批量生成screen的同时并在screen里面运行程序有些困难,不如nohup + &批量处理的方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字时代的精益组织

精益IT应该帮助简化和改善我们为客户创造价值的方式,并提出面向未来的更好的解决方案。未来的组织将专注于同行业的产品或业务流——其他的一切,包括专家和管理者在内,都是为了让一线工作人员可以第一时间就做好,而又不会遇到任何…

9th week blog

1、第一个计算机语言:Fortran Fortran I诞生于1957年,由IBM设计,是世界上第一个真正的计算机语言。 Fortran I运行于IBM 704计算机上。 Fortran I支持:变量(变量名最多6个字符)、If和do语句、格式化IO。 不…

cas单点登录系统:客户端(client)详细配置(包含统一单点注销配置)

最近一直在研究cas登录中心这一块的应用,分享一下记录的一些笔记和心得。后面会把cas-server端的配置和重构,另外还有这几天再搞nginxcas的https反向代理配置,以及cas的证书相关的知识分享出来。 Cas由两部分组成,Cas Server和Cas…

open 端口打开Linux,linux – nmap显示打开的端口,但netstat没有

如果我使用nmap扫描我的服务器,则表明已打开21端口.但是当我登录到这个服务器并运行netstat时,我什么也看不见.$nmap -sT serverStarting Nmap 4.76 ( http://nmap.org ) at 2009-06-24 11:54 MSDInteresting ports on server (x.x.x.x):Not shown: 994 filtered portsPORT STA…

技能学习重要的古语_学习方法:最重要的开发人员技能

技能学习重要的古语by Preethi Kasireddy通过Preethi Kasireddy 学习方法:最重要的开发人员技能 (Learning How to Learn: The Most Important Developer Skill) Being an efficient learner is at least as important as being an efficient coder.成为高效的学习…

Git submodule 的笔记

这次不造轮子,写写文章。file最近想把自己的 blog 整理到 github 上,但由于其中依赖了一些主题以及插件,这时候 git submodule 就能很好的处理这种情况了。 submodule 是什么? submodule 顾名思义,子模块。在一个项目依…

Leetcode690.Employee Importance员工的重要性

给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。 比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是…

linux进程管理类命令大全,Linux进程管理类命令

一、htop命令选项-d #:指定延迟时间间隔;-u UserName:仅显示指定用户的进程;-s COLUME:以指定字段进行排序;子命令:l:显示选定的进程打开的文件列表;s:跟踪选…

C#操作Excel

1.System.Data.DataTable连接数据库 ExcelFile 是excel的完整路径//OleDbConnection conExcel new OleDbConnection("ProviderMicrosoft.Jet.OLEDB.4.0;Data Source" ExcelFile ";Extended PropertiesExcel 8.0");//if (conExcel.State ConnectionStat…

android抓包工具——使用fiddler4在安卓手机抓包

Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包工具要好用的多。不仅如此,它还可以支持…

rust风化速度_反驳《Golang、Rust的执行速度的对照,让人大吃一惊。》——不会别瞎说...

首先我无意引战,但是今天看到某位同学的文章里有某些错误,不得不指正一下。1. 测量时间的时候我们使用 std::time::SystemTime::elapsed 即可,不必蹩脚的使用两个 system 输出出来还得手动算一下。(当然你说对Rust不熟也就无所谓了)2. 最重要…

css flexbox模型_代码简介:CSS Flexbox有点像旅行

css flexbox模型Here are three stories we published this week that are worth your time:这是我们本周发布的三个值得您关注的故事: CSS Flexbox explained by road tripping across the country: 7 minute read CSS Flexbox在全国各地的旅途中进行了解释&#…

Sharepoint 2013设置customErrors

原文地址:http://www.cnblogs.com/renzh/archive/2013/03/05/2944309.html#3407239 一、首先设置IIS中的Web.config文件 找到对应的IIS应用程序目录,如:C:\inetpub\wwwroot\wss\VirtualDirectories\3000 在此文件夹下包含一个web.config文件&…

ddt数据驱动

数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰ddt.ddt 3.case前加修饰ddt.data() 4.运行后用例会自动加载成三个单独的用例 5.测试结果: Testing started at 21:51 ...start!{username: selenium\xe7\xbe\xa4, psw: 232607095}end!start!{username…

http协议报文体_HTTP报文基本概念学习

HTTP是什么HTTP是HyperText Transfer Protocol的缩写,中文就是超文本传输协议,所谓的超,是个学术用语,是基于某种事物增加了更多的信息维度,比如超像素xxx之类的.协议是什么,协议说白了就是约定,约定就是模板,就是表格,就和你去银行办手续一样,客户不知道要提供什么信息,银行又…

yeoman_使用yeoman轻松创建Yeoman生成器

yeomanby Krist Wongsuphasawat克里斯特旺苏帕萨瓦(Krist Wongsuphasawat) 使用yeoman轻松创建Yeoman生成器 (Creating Yeoman generators easily with yeoman-easily) I’ve used Yeoman to start many of my projects. It’s an amazing web scaffolding tool.我已经用Yeoma…

linux 轻量化图形界面,YOXIOS 入门教程--基于Linux的 轻量化GUI图形系统和硬件平台(41页)-原创力文档...

YOXIOS --基于 Linux 的轻量化 GUI图形系统和硬件平台YOXIOS 入门教程基于 Linux 的 轻量化 GUI图形系统和硬件平台(V1.0 2020-05)提示:阅读此文档需要有一定的单片机开发、C/C编程语言、和使用 IDE开发工具的基础YOXIOS (C) 2020 游芯科技第 1 页 共 41 页YOXIOS -…

第一阶段 XHTML.定位样式

一位初学php的随堂笔记,记录自己的成长! 1.清除浮动 (1)格式 clear:both清除两边|left清除左边 right清除右边 高度塌陷:父元素中的子元素都浮动,而父元素 没有设置高,那父元素的高为0 (2)万能清除(在父元素…

Canvas入门06-线段与像素边界

我们知道,使用以下2个API可以绘制一条线段: moveTo(x, y) 向当前路径中增加一条子路径,该子路径只包含一个点,此为线段的起始点lineTo(x, y) 将线段的下一个点加入子路径中context.strokeStyle rgb(200, 200, 0); context.lineWi…