Linux学习笔记:进程管理

一、什么是进程

    在Linux系统中:触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,成为PID,同时依据启动这个进程的用户与相关属性关系,给予这个PID一组有效的权限设定

    如何产生进程:执行一个程序或指令

    Linux学习笔记:进程管理_第1张图片

     程序放在实体磁盘当中,然后透过使用者的执行来触发,触发后会加载到内存中成为一个个体,那就是进程,为了操作系统可管理这个进程,因此进程有给予执行者的权限、属性参数,并包括程序所需要的脚本与数据或文件数据等,最后在给予一个PID

    关于子进程与父进程

    在bash中再调用bash

    Linux学习笔记:进程管理_第2张图片

    注意:当父进程存在消灭子进程,父进程会主动再生成一支,要找出父进程并消灭

    fork and exec进程呼叫流程

        进程会有父进程以复制的方式产生一个一模一样的子进程,然后被复制出来的子进程再以exec的方式来执行实际要进行的程序,最终成为了一个子进程的存在

    常驻在内存中的进程通常是负责一些系统所提供的功能以服务用户各项工作,这些常驻程序被称为:服务(daemon)

    一般daemon类型的程序都会加上d在文件名后头

    在单一bash接口下进行多个工作:

        命令后加& 表示将命令放置于背景中执行

二、工作管理

    工作管理(job control)当我们登入系统取得bash shell之后,在单一终端机接口下同时进行多个工作的行为管理

    进行工作管理的行为中,其实每个工作都是当前bash的子进程,彼此之间是有相关性的,无法以job control 的方式由tty1的环境管理tty2的bash

    bash进行job control的限制

    Linux学习笔记:进程管理_第3张图片

    & 用法

[root@localhost ~]#  tar -zpcf /tmp/etc.tar.gz /etc &
[1] 19983
[root@localhost ~]# tar: Removing leading `/' from member names

    这样就将打包指令放入了后台运行

    完成后会提示

[1]+  Done                    tar -zpcf /tmp/etc.tar.gz /etc
root@localhost tmp]# ll -h
total 27M
-rw-rw-r-- 1 gyy  gyy  27M Feb 10 11:12 etc.tar.gz

    消除输出信息

[root@localhost tmp]# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
[1] 19994
[root@localhost tmp]# ls
etc.tar.gz  log.txt     
[1]+  Done                    tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1

         这样所有的输出信息就被重定向到了log.txt

    1表示工作号码,搭配的还有一个PID

    将目前工作丢到背景中暂停:Ctrl+Z

[root@localhost tmp]# vim ~/.bashrc
			
[1]+  Stopped                 vim ~/.bashrc

        将vim放到了背景中,不需要关闭就能查看bash

    jobs:观察目前的背景工作状态

[root@localhost tmp]# jobs -l

[1]- 19999 Stopped                 vim ~/.bashrc

[2]+ 20002 Stopped                 find / -print

        +号表示最近一个被丢进背景的工作,且目前在背景下预设会被取用的那个工作,stopped代表工作状态

    fg:将背景工作拿到前景来处理

        无参数取用最近被丢到背景的工作(带+号的)

        fg %jobnumber取用指定工作号码的工作

    bg:让工作在背景中的状态变成运作中

[root@localhost tmp]# find / -prem /7000 > /tmp/text.txt

find: unknown predicate `-prem'

[root@localhost tmp]# find / -perm /7000 > /tmp/text.txt

find: ‘/proc/23068/task/23068/fd/6’: No such file or directory

find: ‘/proc/23068/task/23068/fdinfo/6’: No such file or directory

find: ‘/proc/23068/fd/5’: No such file or directory

find: ‘/proc/23068/fdinfo/5’: No such file or directory

^Z

[1]+  Stopped                 find / -perm /7000 > /tmp/text.txt

[root@localhost tmp]# jobs ; bg %1 ; jobs

[1]+  Stopped                 find / -perm /7000 > /tmp/text.txt

[1]+ find / -perm /7000 > /tmp/text.txt &

[1]+  Running                 find / -perm /7000 > /tmp/text.txt &

    kill:管理背景当中的工作

    Linux学习笔记:进程管理_第4张图片

    Linux学习笔记:进程管理_第5张图片

        man 7 signal 可以查看signal的详细介绍

        -9这个signal通常是用在强制删除一个不正常的工作时使用,-15则是以正常步骤结束一项工作

    脱机管理问题

        在工作管理中提到的背景指的是在终端机模式下可以避免Ctrl+C中断的一个情景,若退出终端机工作不会继续

        有两种脱机运行的办法,at和nohup

        

        例子:nohup ./sleep500.sh &

            将这个脚本运行在终端机背景中

三、进程管理

    ps:观察某个时刻进程运作状态

        只查阅自己bash进程的:ps -l

        

        F:代表这个进程旗标(process flags)说明这个进程的总结权限

            4表示此进程的权限为root

            1表示此子进程仅进行复制(fork)而没有实际执行(exce)

        S:代表这个进程的状态

            Linux学习笔记:进程管理_第6张图片

        UID、PID、PPID:拥有者ID、进程ID、父进程ID

        C:CPU使用率,单位为百分比

        PRI、NI:priority、nice的缩写,代表被CPU执行的优先级,数值越小代表该进程越快被CPU执行

        ADDR、SZ、WCHAN:都与内存有关,ADDR是kernel function,指出该进程在内存的哪个部分,如果是个running的进程,一般显示 - ;SZ表示此进程用掉了多少内存,WCHAN表示目前进程是否在运作中, - 表示正在运作

        TTY:登入者的终端机位置,若为远程登录则使用动态终端接口(pts/n);

        TIME:使用掉的COU时间

        CMD:造成此进程触发的指令

        查阅所有系统运作的进程:ps aux                                                                                                                                                    Linux学习笔记:进程管理_第7张图片

      Linux学习笔记:进程管理_第8张图片

         ps -lA 也比较常用

        ps axjf列出类似进程树的进程显示,也可以使用pstree

    僵尸进程

              该进程应该已经执行完毕,或者因故应该要终止了,但是该进程的父进程却无法完整的将该进程结束掉,而造成那个进程一直存在内存当中

             当CMD后面还接上代表该进程是僵尸进程

    top:动态观察进程的变化

         

         Linux学习笔记:进程管理_第9张图片

        

        Linux学习笔记:进程管理_第10张图片

        Linux学习笔记:进程管理_第11张图片

        

        Linux学习笔记:进程管理_第12张图片

            将top的输出重定向到文件:top -b -n 2 > /tmp/top.txt

    pstree:进程树

           -A,-U是用ASCII码或者Unicode

          -u,-p输出UID和PID

   系统资源的观察

          free:观察内存使用情况

         uname:查阅系统与核心相关信息

        uptime:观察系统启动时间与工作负载

        netstat:追踪网络和插槽文件

        netstat -tulnp 找出目前系统上已在监听的网络联机及其PID

        dmesg:分析核心产生的讯息

        vmstat:侦测系统资源变化

      

你可能感兴趣的:(Linux学习,Linux学习)