前台后台进程转换问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前台后台进程转换问题相关的知识,希望对你有一定的参考价值。
进程的前台和后台
在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 进程号)就是把后台运行调到后台休眠。其他数字什么含义这里就不再讲解了。
本文出自 “mlon客” 博客,请务必保留此出处http://13154101.blog.51cto.com/13144101/1964095
以上是关于前台后台进程转换问题的主要内容,如果未能解决你的问题,请参考以下文章
Android 应用开发Android 杀进程总结 ( 杀后台进程 | 杀前台进程 | 杀其它进程 )