前台后台进程转换问题

进程的前台和后台

在linux中有程序在前台和后台切换的问题,前台执行的会占用终端,不能释放比如ping命令。这样的命令就可以放在后台执行,前台还能继续执行其他操作。

看这个ping命令

[[email protected] ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.181 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.091 ms
ls           
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.088 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.094 ms

上面我在执行ping命令的过程中输入ls,但什么都没有输出所以这就是前台执行ping过程中在占用前台资源,ls是什么都不会输出的。而在命令后加个&,该命令就会在后台执行,但是会在前台显示。

[[email protected] ~]# PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.274 ms
pwd
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.087 ms

/root

上面我在ping的过程中执行pwd 这次却执行了。但是ping命令也在执行,看着很不舒服但不影响输入的命令换行也无影响。说了这么多,不知道发现问题没有。。。这个影响不到ping命令怎么发送取消指令呢?

这下问题来了,想要终止ping我的方法是ps -ef|grep “ping”之后再用kill -9 跟上进程号杀死该进程就行了

[[email protected] ~]# ps -ef |grep ping
root      27389  26574  0 13:20 pts/3    00:00:00 ping 127.0.0.1
root      27391  27317  0 13:20 pts/5    00:00:00 grep --color=auto ping
[[email protected] ~]# kill -9 27389

在后台运行的进程也有进程号,查看用jobs

[[email protected] ~]# PING 127.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.073 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.084 ms
jo64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.065 ms
bs
[1]+  Running                 ping 127.1 &

上面代码因为后台进程运行不停止,所以标准输入会错行。当我输入jobs是出现running一行那个中括号里面就是进程号。现在就要提及另一个命令了,fg空格跟上进程号可以吧后台调回前台,之后ctrl+c也可以终止该ping命令。

[[email protected] ~]# ping 127.0.0.1 &
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.085 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.094 ms
jobs64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.093 ms                                                     64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.09664 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.095 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.094 ms
[1]+  Running                 ping 127.0.0.1 &
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.089 ms
fg 1
ping 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.086 ms
^C
--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9000ms
rtt min/avg/max/mdev = 0.085/0.100/0.189/0.032 ms
[[email protected] ~]#

上面虽然执行后台运行,但是仍可以调回前台。



下面搞了一张图,如有雷同。好吧是我搜的

看图说话,前台运行直接快捷键就可以后台休眠。

想要直接后台,就是命令后跟     &

后台休眠bg 加上进程号直接激活,后台运行(命令中间有个空格)

后台两种情况都可以用fg来调到前台。

还有!jobs查看后台的进程号(可能不只有一种进程)

怎么让后台运行的进程进入休眠呢?

在kill命令中有发信号这种用法,对应数字加进程可以修改状态或杀死进程,这里(kill -19 进程号)就是把后台运行调到后台休眠。其他数字什么含义这里就不再讲解了。

时间: 2025-01-02 08:18:42

前台后台进程转换问题的相关文章

Linux Shell下的后台运行及其前台的转换

当用bash启动一个程序,你可以用在程序后加&,实现程序在后台运行: 例如: emacs & 但如果你忘了输入&;但你又不想把程序停止后重新启动: 你可以这么做: 按Ctrl + Z暂停前台工作,比如前面提到的Emacs: 然后用jobs命令查看当前bash一共启动了多少程序,你可以看到你的emacs在其中,它的状态是Stoped的; 并且它的jobID也可以看,比如是2 然后用命令bg 2 这样你就可以达到和emacs &一样的效果了. 当你有些工作比如updatedb,

js 简繁体字转换

有些项目需要用到简体和繁体两种字体,在js前台进行转换比较方便而且显示速度没有延时 是一个比较好的解决方案. var _isFT_CS = 0// 简体 var _isFT_CT = 1// 繁体 var Default_isFT = 0// 默认是否繁体,0-简体,1-繁体 var StranIt_Delay = 50 // 翻译延时毫秒(设这个的目的是让网页先流畅的显现出来) // -------代码开始,以下别改------- // 转换文本 function StranText(txt,

为什么安卓没IOS快——iOS和安卓技术角度的深度对比

首先说明一下,这里面的解释并非我自己写的,而是我找到相关资料整理出来的,也算是为坛子做出点贡献,文末也分析了谷歌三个儿子和三星 i9100,希望这篇文章能在技术层面上提供一个科学的评判 android 和 ios. 如果能解决大家心中的困惑的话, 不妨给小弟加几分, 在此先谢谢大家了. Andorid 更新了一个版本又一个版本,硬件从单核到双核到四核,系统流畅度总算基本能和 iOS 持平了. 不过人们不禁会问,为什么都是基于 Linux, 两个系统会差别如此大?为什么 iPhone 4 用单核处

【学神-RHEL7】1-10-RHEL7进程管理

本节所讲内容: Linux进程管理 screen 实战后台实时执行命令备份命令   进程管理: pstree ps top nice 修改进程优先级 kill 前台后台进程切换 free  查看内存 screen   程序与进程: 程序是静态的(文件),进程是动态的(运行的程序).   进程和线程: 一个程序至少有一个进程,一个进程至少有一个线程. 进程之间内存是独立 线程之前内存共享   ,高并发好一些 .   安全性差一些.    查看进程树 显示进程号 -p [[email protect

一个简单企业信息网站架构

前段时间做了一个简单的企业信息网站,主要用到一些开源的框架和插件,网站开发完了,把用到的东西写出来分享一下 网站功能分析 (1)网站信息维护:网站信息分为很多种类型,有自己网站发布的新闻.知识,也有从其他网站上转载的相关内容,从功能上看都类似,内容主要是富文本,都已经抽象为信息维护功能,包括企业简介之类的,都抽象为网站的信息,只是属于特殊的类型,因此也延伸出另一个需求,网站信息类型维护: (2)网站链接管理:网站链接,主要是为了丰富网站内容,方便用户使用,提升用户体验,由于该网站属于特定行业的企

ajax传递参数给springmvc总结[转]

通过ajax传递参数给springmvc,经常会因为 参数类型太复杂,或者根本不知道springmvc都支持哪些类型转换,导致后台接收出现各种问题.如果书写格式没有问题仍然接受参数报错,大部分是因为springmvc默认无法支持该种格式的json转换导致的 现在一句话解决,就是用@RequestBody注解接收 下面看一些传参的例子,基本涵盖了大部分的参数传递类型 案例1:简单数组 idList[] ajax $("#test1").on("click",funct

软件开发中部分代码的注解

初次接触软件开发,先是阅读别人的代码.学习别人的一些经验!下面是遇到的一些代码及注解! @ParentPackage("basePackage")    // 默认继承struts.xml文件的<package name="basePackage" extends="struts-default"> /* * 函数功能:将对象转换成Json字符串,并响应回前台. * 转换的原因:页面使用的数据格式为JSON * 一般我们在服务端中使用

Java WEB 之页面间传递特殊字符

本文是学习网络上的文章时的总结以及自己的一点实践.感谢大家无私的分享. 昨天在做项目的时候,有一个页面间传递特殊字符的需求,查了一些资料.如今将自己的经验写出来. 首先.在前台编码 var fckPurpose=encodeURIComponent($.trim(jQuery("#fckPurpose").val())); encodeURIComponent.encodeURI和escape三个函数区别在于个别字符是否编码的问题. 參考: escape().encodeURI().e

Linux下的文件压缩归档与系统进程管理

Linux下的文件压缩归档与系统进程管理   一:实验环境 1):在虚拟机下配置好linux系统 2):了解文件压缩归档的含义 二:实验目标 1):理解并会用文件的压缩归档 2):熟练掌握文件压缩归档的命令 3):理解各种压缩形式的使用环境 4):理解个文件的压缩区别 三:实验步骤 一:压缩的常用形式及命令 1):常用形式 grub.tar grub.tar.bz2 grub.tar.gz grub.tar.zip 2):压缩命令分析 [[email protected] test]#tar -