Linux:进程管理和I/O重定向与管道

发布时间 2023-11-27 20:26:24作者: Huan&

1.进程管理

一、进程管理

1.进程简介
首先我们要了解,什么是进程?

进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd
进程: 是程序运行的过程, 动态,有生命周期及运行状态。

 

进程的含义为正在运行的程序,包括这个运行的程序所占用的系统资源。进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。同一个程序,同一时刻被两次运行了,它们就是两个独立的进程。

进程的生命周期是指父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需。任何进程都可以创建子进程。所有进程都是第一个系统进程的后代。

进程的状态:1.就绪态:进程已经具备运行的条件,但是CPU还没分配过来。

                      2.运行态:进程占用CPU,并在CPU上运行。

                      3.阻塞态:进程因等某件事发生而暂时不能运行。

不同的进程对系统资源的需求是不一样的,有些进程属于IO密集型,有些进程属于CPU密集型,等等。

进程状态产生的原因:

在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。

 

二、查看进程

2.1 静态查看进程

  • PS,相当于windows系统里的进程管理
  • ps aux 输出的字段含义 如下图所示:

动态查看进程top  、使用信号控制进程kill 、进程优先级nice

 

  • 进程排序

语法:

ps aux – sort %cpu 以CPU占比升序排列

​ps aux – sort -%cpu 以CPU占比降序排列

 

  • 进程的父子关系

通过 ps -ef 查看进程的父子关系。 观察PID和PPID

动态查看精彩Top

常用内部指令

h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序

< 向前 >向后 z 彩色,Z设置彩色,使用数字调整

在top中显示的优先级有两个,PR值和nice值

NI: 实际nice值
PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39

nice 值越大: 表示优先级越低,例如+19
nice 值越小: 表示优先级越高,例如-20

3.作业控制jobs

3.1简介

作业控制是一个命令行功能,也叫后台运行。

关键词介绍:

  • foreground fg 前台进程:是在终端中运行的命令,占领终端。

  • background bg 后台进程:没有控制终端,它不需要终端的交互。看不到,但是在运行

4.管理远程主机

Screen是一款用于会话终端切换的多重视视窗管理软件。用户可以通过该软件同时连接多个本地或远程主机。当远程连接一台主机时,如果出现连接非正常中断,只要Screen没有终止运行,再次登录到主机上执行“screen-r”命令,就可以恢复此前在其内部运行的会话。使用yum 安装 Screen,显示完毕即成功安安装,具体如下所示。 

 

 

2.I/O重定向与管道

一、标准输入和标准输出

    1.程序:指令+数据;

        数据:

            读入数据:Input

            输出数据:Output

    2.打开的文件都有一个fd:file descriptor(文件描述符)

    3.Linux给程序提供的三种I/O设备:

        标准输入:0,默认接受来自键盘的输入;

        标准输出:1,显示器(默认输出到终端窗口)

        标准错误输出:2,显示器(默认输出到终端窗口)

 

二、把标准输出和标准错误输出重定向到文件

    1.标准输出和标准错误输出可以被重定向到文件:

        格式:命令 操作符号 文件名;

        支持的操作符号:

            >:把标准输出重定向到文件;

            2>:把标准错误输出重定向到文件;

            &>:把标准输出和标准错误输出重定向到文件;

    2.输出重定向:COMMAND > NEW_POS,COMMAND >> NEW_POS;

        >:覆盖重定向:文件不存在,则会自动创建;文件如果有内容,则会覆盖;

        >>:追加重定向,在原有内容基础上,追加内容;新内容会追加至目标文件尾部;

        set -C:禁止将内容覆盖已有文件,但可追加;强制覆盖:>|;

        set +C:允许覆盖;

        2>:覆盖重定向标错误输出数据流;

        2>>:追加重定向错误输出数据流;

        标准输出和错误输出各自定向至不同位置:

            COMMAND > /path/to/somfile 2> /path/to/err.out

            eg:ls /boot /ddddd /testdir/f1 2> /testdir/f2

                

        合并标准输出和错误输出为同一个数据流进行重定向:

            &>:覆盖重定向;

            &>>:追加重定向;

    3.():合并多个程序的标准输出

          eg:(pwd;ls) > /testdir/all.log

三、输入重定向:<

    1.tr命令

        tr:转换或删除字符;

        语法:tr [OPTION]...SET1 [SET2]

        字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;

         字符集2:指定要转换成的目标字符集。

    OPTION:

        -c:取字符集的补集(也就是取反);

        -d:删除所有属于第一字符集的字集;

        -s:把连续重复的字符以单独一个字符表示;也可以用-s来转换字符(等同于tr [a-z] [A-Z] < /etc/issue);

        -t:将第一个字符集对应字符转化为第二字符集对应的字符;

    字符集表示方法:

        [:lower:]:任意小写字母;

        [:upper:]:任意大写字母;

        [:alpha:]:任意大小写字母(不区分大小写);

        [:alnum:]:任意数字和字母;

        [:blank:]:水平空白字符;

        [:space:]:水平或垂直空白字符;

        [:punct:]:标点符号;

        [:print:]:可打印字符;

        [:cntrl:]:控制(非打印)字符;

        [:graph:]:图形字符;

        [:xdigit:]:十六进制字符;   

    速记符含义八进制方式

        \b Ctrl-H 退格符\010

        \f Ctrl-L 走行换页\014

        \n Ctrl-J 新行\012

        \r Ctrl-M 回车\015

        \t Ctrl-I tab键\011

四、多行标准输入重定向

    1.使用“<<终止词”命令从键盘把重导向给标准输入;

五、管道

    1.管道(使用符号“|”表示)用来连接命令;

        命令1 | 命令2 | 命令3 | ...

六、重定向到多个目标(tee)

    tee命令:从标准输入读取并写入标准输出和文件

    1.命令1 | tee 文件名 | 命令2

        把命令1的标准输出保存在文件名中,然后管道输入给命令2;

    2.使用:

        2.1.保存不同阶段的输出;

        2.2.同时查看和记录输出;