注意:

全称 含义 举例
fg foreground 前景、前台 foreground process 前台进程
bg background 背景、后台 background process 后台进程

fg、bg后面跟的都是后台进程的序号,不是PID进程号

fg 后台进程的序号——后台进程拉到前台 、将后台的进程调(读法:四声)到前台——也就是说,改变的只是进程所处的环境,即:从后台变成前台 

bg 后台进程的序号——把后台挂起(即:Stopped、暂停)的进程,变成在后台继续执行、激活被挂起的进程、把后台Stopped状态的进程变成Running状态——也就是说,bg命令只是用来改变进程的状态,而进程所处的环境依然是在后台当然,也可以使用fg把它放到前台。

jobs——查看后台进程的状态

后台进程的几种状态:Stopped(挂起)、Running(运行中)、Killed(杀死)、Done(完成)

ctrl+c——强制中断程序的执行,强制中断任务,即:程序会退出

ctrl+z——中断程序的执行,但不会退出,而是在后台被挂起,即:不会退出,而是处于stopped状态。

一、查看进程

ps ——查看当前用户,当前这一个终端上的进程,即:在哪个终端上敲ps,就只能看见那一个终端上的进程。

ps -ef——查看系统上所有的进程

其中,-e——显示所有进程;-f——全格式,所有的格式,即:显示全部的列(字段)

参数说明:

[root@localhost~]#ps -ef
UID        PID    PPID   C    STIME    TTY        TIME    CMD
root         1       0   0    18:00    ?      00:00:01    /sbin/init
root         2       0   0    18:00    ?      00:00:00    [kthreadd]
root         3       0   2    18:00    ?      00:00:00    [migration/0]

UID——启动该进程的用户,即:谁启动了这个进程。

PID——进程号,进程的一个代号,是根据每个进程在系统中启动的时间顺序,系统自动编排的。

PPID——父进程的进程号

C——CPU的使用率,形式是百分数(%)

STIME——进程启动时的系统时间

TTY——进程启动时的终端设备,如果显示?表示该进程不是由终端发起

TIME——进程的执行时间

CMD——进程的名称或对应的路径或命令

常见的组合命令:

ps -ef | grep 进程名称

ps -ef | grep 要查找的内容

二、进程的前后台运行、切换

1、含义

首先,要先搞清楚什么是前台进程什么是后台进程,所谓前台进程就是能看得见程序执行界面的进程后台进程就是看不见程序执行界面的进程。一般来说,后台进程都是为了给前台进程提供服务的。但也有可能是,有些命令执行的时间较长,如果一直在前台运行会占用屏幕资源,不方便其它工作的展开,这时候就比较适合把它放到后台去执行,比如,大文件的备份。

2、二者区别

视觉上:前台进程,人眼在屏幕上能直接看得到。后台进程,因为是在后台运行,所以我们无法在屏幕上看到。

命令上:前台进程执行时候,就按照平常的命令执行即可,而后台进程,需要在末尾加&符号。

例如:执行一个a.sh文件

前台命令:./a.sh

后台命令:./a.sh&

3、前后台进程的切换——fg

(1)前切后:即:前台进程切换成后台进程。

做法:按照正常的前台执行命令,末尾加&即可。

(2)后切前:即:后台进程切换成前台进程。   ——fg

做法:

第一步:首先,作为后台进程,都会有一个序号,这个序号是根据后台进程个数的增加而逐个排下来的。比如,我现在将./a.sh&作为第一个后台进程,那么它的序号就是1,再将./b.sh&作为后台进程,那么它的序号就是2,后面以此类推。当然,如果忘记了这个后台进程的序号,也可以通过jobs进行查看,将会列出所有的后台进程

第二步:终端上输入  fg 后台进程序号  即可。

4、常见问题

1、前台进程如何被挂起?  挂起的进程如何重新激活?    激活后如何拉回前台?

思路:先要明确一点:提到挂起就是放到了后台;挂起后再激活就是说改变了状态;拉回前台那就是前后台的转化。

解答:

首先,挂起可以理解为暂停,jobs中显示的状态是Stopped先在前台上正常执行该文件,然后立马按ctrl+z,此时,该前台进程就被挂起到后台了(因为ctrl+z的作用就是将一个正在前台运行的任务放到后台暂停起来,即:挂起进程)。

至于挂起后怎么重新激活,先要搞清楚什么是激活?所谓激活就是说把原来Stopped状态的进程,变成Running状态即:从暂停状态变为运行状态。直接终端上输入bg 后台进程的序号 回车 即可。然后通过jobs可以看到该后台进程的状态已经改成Running了。

最后怎么拉回前台,就是直接使用fg 进程后台序号 回车即可。

小结:具体过程:以执行a.sh文件为例进行说明。

[root@localhost~]#./a.sh   # 前台进程 ctrl+z——进程被挂起到后台
^Z
[1]+   Stopped          ./a.sh[root@localhost~]#jobs
[1]+   Stopped          ./a.sh[root@localhost~]#bg 1    # bg 进程序号————激活1号后台进程
[1]+  ./a.sh &[root@localhost~]#jobs    # 变成Running则激活成功,开始在后台运行
[1]+   Running          ./a.sh &  [root@localhost~]#fg 1   #拉回前台
./a.sh 

2、任务放在后台执行,但被挂起,如何拉到前台?

思路:大致和问题1一样,问题1是先将任务在前台执行,然后按ctrl+z强制挂到后台,而这里是直接把任务放到后台执行,但后台执行不了,所以才被挂起。

但总的来说,最终的结果都是一样的,进程都在后台被挂起,即:用jobs查看,都是Stopped状态。

解答:

首先,先要知道什么是任务在后台执行?就是把一个正常执行的命令末尾加&,此时它就变成了一个后台进程,然后用jobs查看状态是否是Stopped,如果是,则说明,它是一个后台被挂起的进程。

其次,确定了后台进程哪个被挂起了,现在怎么把它拉回前台。很简单,fg 序号  回车  即可。

下面以一个实例进行说明。

比如,利用touch d.sh新建一个d.sh文件,然后vi d.sh让它作为前台进程进行编辑。里面输入,hello word,然后:wq退出。这个过程就是一个前台进程的正确执行过程。

而现在,我们想要把打开d.sh并进行编辑的这个过程,放到后台,让这个动作变成一个后台进程来完成,怎么做?很简单,就是在终端上输入vi d.sh&   即可。此时,回车之后就会输出一行两列数字。

[root@localhost~]#vi d.sh&
[1]  2335

[1]——后台进程的序号。即:它是第几个后台进程。也就是使用fg bg命令时候后面所跟的内容。

2335——进程号,即 PID

现在用jobs进行查看,发现成了Stopped,为什么会变成Stopped?因为,vi命令本身就是用来编辑文件内容的,也就意味着需要界面,需要人机交互的一个界面,通过这个界面我才可以往这个文件里面写东西;也就意味着它是个前台进程;但是你却要给它加个&,让它变成后台进程,显然在后台它是没办法运行的,所以最终只能被挂起。此时怎么拉到前台进行激活?

[root@localhost~]#jobs
[1]+  Stopped    vi d.sh 

fg 序号回车即可,即:fg 1 这样就能拉到前台了。此时,就会呈现出之前用vi d.sh一样的效果了。再次jobs,就可以看到后台没进程了。

[root@localhost~]#jobs
[root@localhost~]#

3、终止进程的两种方法

自动终止:(1)任务执行完了,进程自动终止。(2)关闭终端窗口。(3)执行过程中遇到异常或者bug,导致进程终止。

手动终止:(1)ctrl+C  (2)kill -9 PID

三、重定向

顾名思义就是重新定义一个方向。比如,对于一个程序的输出,如果不想把它输到终端上去,就可以利用重定向把它输到(保存到)一个文件上去。

> 表示重定向,其中,一个>是覆盖的意思,即:下一行覆盖上一行。两个>>是末尾追加,而不是覆盖。

在Linux系统中可以进行三个方面的重定向,分别是:对标准输出的重定向、对标准错误的重定向、对标准输入的重定向。对于这三者,重定向时候有各自的代号,0代表输入,1表示输出,2表示错误。

1、标准输出的重定向

所谓标准输出,其实就是我们敲完什么命令之后,结果就会打在屏幕上。而标准输出的重定向,就是说把结果不打在屏幕上了,而是存到某个地方。

例如,把执行的ps -ef的结果重定向到result.1111文件上去。

[root@localhost~]#ps -ef >result .1111 

把执行的a.sh文件的结果保存到a22上去。注意:为了避免结果的覆盖,如果是要对一个可执行文件的的结果进行重定向,那么在可执行文件中,最好不要再有重定向。

[root@localhost~]#./a.sh >a22 

2、标准错误的重定向

所谓标准错误,其实就是我们敲完什么命令之后,如果出现什么错误,报错的内容就会显示在屏幕上。而标准错误的重定向,就是说把错误的内容不打在屏幕上了,而是存到某个地方。

通常情况下,它与输出一起做重定向。可以重定向到同一个文件,也可以重定向到不同文件。

(1)重定向到同一文件:

格式:所执行的操作 >文件名 2>&1       其中,&表示取地址的意思

例如:./a.sh >out 2>&1————把执行a.sh文件的输出结果和错误都保存到out这个文件上。

(2)重定向到不同文件:即:错误的和正确的进行分开

格式:所执行的操作 >a 2>b     即:标准的输出存a文件里,错误的存b文件里。   

例如:./a.sh >zz 2>xx————把输出的结果放到zz里,把错误放到xx这个文件里。

3、标准输入的重定向

所谓标准输入,就是我们平时要执行什么操作/命令的时候,直接就在终端上输,然后回车运行。而标准输入的重定向,就是不从终端上输了,而是从一个文件上去读取。

四、管道

就是把前面那个命令的输出,作为后面那个命令的输入,类似把两行命令合并成一行了。通常使用一个竖杠表示管道。即: |  

格式:命令1 |命令2 |.......

例如:执行完a.sh文件后,想知道里面有没有出现error报错信息。

法1:没用管道

[root@localhost~]#./a.sh >out.log
[root@localhost~]#grep error out.log

法2:利用管道

[root@localhost~]#./a.sh |grep error 

当然,管道还可以进行多层的使用,就在后面加|加命令即可,例如想要统计error的行数。

[root@localhost~]#./a.sh |grep error |wc -l

Linux之查看进程ps -ef、进程的前后台切换fg、挂起后的激活bg、标准输入/输出/错误三者的重定向、管道相关推荐

  1. linux如何查看端口被哪个进程占用

    亲测可用,若有疑问请私信 本文介绍linux如何查看端口被哪个进程占用的方法: 1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 都可以查看指定端口被哪个进程占用的情况 ...

  2. Linux查看进程ps -ef、杀进程kill

    查看某个服务的进程 例如mysql: ps -ef|grep mysql (ps aux 是用BSD的格式来显示Java进程 显示的项目有: USER        PID %CPU %MEM    ...

  3. linux 如何查看端口被哪个进程占用,如何查看linux端口被哪个进程占用

    查看linux端口被哪个进程占用的方法:首先查看被占用的端口的进程,并查询进程id:然后根据集成id查询进程,并查看进程详情信息:最后查看进行所在目录,操作进程即可. 本教程操作环境:red hat ...

  4. Linux | UID/PID/PPID | ps -ef/netstat/kill

    常用的名词解释: UID是用户ID,PID是进程ID,PPID是父进程ID. UID 用户身份证明(User Identification)的缩写.UID用户在注册会员后,系统会自动的给你一个UID的 ...

  5. Linux shell随手记——ps -ef

    ps是Process Status的缩写 用来列出当前运行进程的快照 附加选项 -f 表示更为完整的输出 -e表示列出所有的进程 经常用 ps -ef | grep xxx 来查找某个进程是否在运行

  6. linux 系统日志 查看被杀掉的进程(占用内存过大)

    基本概念: Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉. ...

  7. linux查看某端口进程占用,Linux下查看某端口占用进程

    文章分类:操作系统 在Linux操作系统中 查看占用某一端口的进程是什么:#lsof -i:端口号 或者 netstat -apn | grep redis [root@192_168_56_28 ~ ...

  8. linux如何查看端口被哪个进程占用?

    1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 都可以查看指定端口被哪个进程占用的情况 工具/原料 linux,windows xshell 方法/步骤 [步骤一]ls ...

  9. linux下查看网络连接、进程、服务

    实验环境:ubuntu2020,centos,以下命令适用不限于ubuntu和centos 一.查看网络连接 netstat netstat 是一个告诉我们系统中所有 tcp/udp/unix soc ...

最新文章

  1. python hist函数_虎哥的python小技巧放送之绘制统计图(2)
  2. id选择器、标签选择器、类选择器、交集选择器、并集选择器
  3. 《简明 PHP 教程》00 开篇
  4. nginx下只能通过域名,禁止使用ip访问
  5. EasyExcel项目使用
  6. html5超高分辨率,在这里,让你看懂超高分辨率FT-ICR MS
  7. usionCharts 技术文档-Jsp画图
  8. 云MAS中CMPP3.0协议封装与移动短信状态报告状态码说明
  9. leaflet地图原理_leaflet在线地图简介
  10. 傅里叶级数的通俗理解
  11. sysbench和lua的简单研究
  12. Visual Studio 2013 旗舰版正式版密钥
  13. 廊坊金彩教育:如何进行选品
  14. git memery 后 push到远程,如何回滚
  15. 消息推送技术干货:美团实时消息推送服务的技术演进之路
  16. 解读:小比尔 · 福特认为特斯拉的成功并非因为马斯克
  17. IBM ILOG CPLEX Optimization Studio V12.9.0官方文档
  18. 陪审团(01背包, 难)
  19. 90后创业者自述:不性感没逼格不能活
  20. 中国超级计算机首次跻身全球五强

热门文章

  1. 小仙女化身女侠!Cocos官方的下一款DEMO曝光!
  2. html5发送信息给微信朋友圈,微信朋友圈怎么发纯文字信息 怎样在朋友圈发纯文字。...
  3. instance的用法
  4. navicat for mysql 连接 mysql 出现1251错误
  5. AlexNet结构参数详解
  6. TinyJPEG源码剖析
  7. 操作系统中的大头小头字节序
  8. html 面包屑 模板,Emlog模板制作之面包屑导航(参考教程)
  9. 2010年最牛逼的50条QQ签名!
  10. Django 讲解