鸟哥私房菜第17章——程序管理

1,有的时候会发现,明明将进程关闭了,怎么过一阵子它又自动产生?而且新产生的那个进程的PID与原先的还不一样,这是怎么回事呢?如果不是crontab工作调度的影响,肯定有一个父进程存在,所以你杀掉进程后,父进程会主动再生成一个。所以“擒贼先擒王”,找出那个父进程,然后直接将它删除就对啦。
2,CPU切换进程的工作与CPU运行的调度会影响到系统的整体性能。但是Linux使用的多任务切换行为是一个非常棒的机制,会让用户感觉到整台主机好像就有用户自己一样。
3,要进行bash的job control必须要注意到的限制是:
1)这些工作所触发的进程必须来于你shell的子进程(只管理自己的bash)
2)前台:你可以控制与执行命令的这个环境称为前台的工作
3)后台:可以自行运行的工作,无法使用ctrl + c终止它,可使用bg/fg调用该工作
4)后台中“执行”的进程不能等待terminal/shell的输入
4,可以使用&直接将命令丢到后台去执行,但是这个时候当后台执行的额命令出现提示信息的时候仍然会显示到前台,会造成前台混乱。这个时候可以把提示的信息进行重定向到文件中。
ctrl+z表示将目前的工作丢到后台“暂停”,这个之前使用过。按下ctrl+z后,屏幕上会出现[1]+,这个+代表最近一个被丢进后台的工作,且目前在后台下默认被取用的那个工作。
fg %jobnumber这个命令可以把后台中的job拿到前台,需要注意的是%是可有可无的。
查看目前后台的工作状态,jobs [-l],其中-l表示除了列出job number与命令串之外,同时列出PID的号码。
让工作在后台下的状态变成运行中,bg %jobnumber
删除后台工作,kill -signal %jobnumber,-9通常是在强制删除一个不正常的工作时所用到的,-15则是以正常步骤结束一项工作(默认情况),两者并不相同。
5,工作管理的后台依旧与终端机有关。如果将工作以&的方式放到后台去,请问,在工作尚未结束的情况下你脱机了,该工作还会继续进行吗?不会继续进行,而是被终端掉。**之前讲过的命令at是将工作放置到系统后台,这样一来就与终端机无关联了。**或者使用命令nohup。
6,进程的管理

  • ps
    将某个时间点的进程运行情况选取下来,主要记下面两个命令:
    ps -l,仅查看自己的bash相关进程。使用这个命令查出来的数据有下面几列:
    F:代表这个进程的标志,说明这个进程的权限,常见号码有:
    若为4表示此进程的权限为root;若为1则表示此子进程仅可进行复制而无法实际执行
    S:代表这个进程的状态(STAT),主要的状态有:
    R(Running):该进程正在运行中;S(Sleep):该进程正在休眠 D:不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况 T:停止状态 Z:“僵尸状态”
    C:代表CPU的利用率
    PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被CPU执行。
    TTY:登陆者的终端机位置,若为远程登录则使用动态终端接口
    TIME:使用掉的CPU时间,注意,是此进程实际花费CPU运行的时间。
    CMD:造成该程序触发的命令是什么?
    ps aux,查看系统所有进程,下面列出一些不熟悉的字段的含义:
    VSZ:该进程使用掉的虚拟内存量(KB)
    RSS:该进程占用的固定的内存量(KB)
    TTY:该进程是在哪个终端机上面运行
    TIME:该进程实际使用CPU运行的时间
  • top
    top则可以持续检测进程运行的状态。top [-d 数字],这个数字代表几秒更新一次进程资源,默认是5秒,可以通过-d加数字进行修改。-p指定某个PID来进行查看
  • pstree
    这个命令可以生成进程树,来找到进程之间的相关性。
  • renice
    可以使用这个命令将已存在进程的nice重新调整,命令格式renice [number] PID,这样做可以调整进程的优先级。因为优先级是由Pri和Nice共同决定的。不可以改变pri的值,只能通过改变nice的值来改变进程的优先级。
    7,系统自愿查看
    • free
      查看内存使用情况:free [-b] 【-t】
      -b:直接输入free时,显示的单位是KB我们可以使用b(bytes),k(KB),m(MB),g(GB)来显示单位。
    • uname
      uname可以列出目前系统的内核版本
    • uptime
      查看系统启动时间和工作负载
    • netstat 在这里插入图片描述 Proto:网络的数据包协议
      Recv-Q:非由用户进程连接到此scoket的复制的总字节数
      Send-Q:非由远程主机传送过来的acknowledgeted总字节数
      LocalAddress:本地的IP端口情况
      ForeignAddress:远程主机的IP端口情况
      State:连接状态,主要有建立(ESTABLISHED)及监听(LISTEN)
    • dmesg
      分析内核产生的信息
    • vmstat
      检测系统资源的变化
      8,主机上面的每个进程的PID都是以目录的类型存在于/proc当中,这里面有两个文件是重要的,一个是cmdline:这个进程被启动的命令串;另一个是environ,这个进程的环境变量的内容。
      9,fuser:通过文件(或文件系统)找出正在使用该文件的程序
      lsof:列出被进程所打开的文件名
      pidof:找出某个正在执行的进程的PID

猜你喜欢

转载自blog.csdn.net/xiaoan08133192/article/details/115009533
今日推荐