Ps进程和作业管理

1.查看进程ps

1.格式

ps   ---查看当前终端下的进程

3种格式:

  SYSV格式   带 - 符号

  BSD格式  不带 - 符号

  GNU格式   长选项

2.ps -aux命令的显示

ps命令

  ps -aux

分为11列

 

第一列:用户名,即该进程由哪个用户启用

第二列:PID:进程编号  越靠近核心编号越小

第三列:占CPU的比例

第四列:占内存的比例

第五列:VSZ 虚拟内存大小大部分指swap空间

第六列:RSS 驻留内存空间大小  驻留内存指程序不能交换到交换分区的部分占据内存大小

第七列:TTY 终端编号:?代表系统自己运行的进程,tty1表示虚拟机上桌面控制台

第八列:进程的状态

  R 正在运行或可以运行(运行的程序多CPU少,先运行一部分,另一部分是可以运行)

  S 休眠

  D 不可中断的休眠,一般是在IO操作结束

  Z 僵尸进程

  T 停止,进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号

  跟随字母的含义:

  < 高优先级

  N 低优先级

  L 有页锁定在内存中。用于实时的或者用户定义IO

  s 父进程,其有子进程

  l 多线程

  + 表示前台运行进程组中的进程

第九列:启动时间:当天启动显示时间,隔天或更早以前显示日期

第十列:启动进程是运行的时长

第十一列:进程名:带[]的是核心进程

3.ps-aux案例

ps  -aux  |  grep  httpd |grep -v grep           --筛选带有httpd名字的进程,一般是所有web服务进程

ps  -aux  |  grep  httpd  | wc  -l          --统计进程数

ps   -aux |  sort  -rn  -k  3  |  head  -n  10     --显示占CPU最高的前10个进程

 

4.ps -ef 查看所有进程

ps  -ef  ---查看本机所有进程,可见到父进程ID,即PPID

-e  所有进程

-f  全部格式输出

5.ps tree  查看进程树

ps -ejH

ps axjf

pstree   ---查看进程树,即完整的父子进程调用关系表

 

 

ps -ef

kill  -9   PID   ---杀死进程

killall  -9   进程名    ---同时杀死多个同名进程

注:pstree 和 killall命令 要提前安装psmisc 软件包才可使用

2.进程分类:前后台 挂起交互守护进程

前台运行:在显示界面运行,运行过程可见争抢cpu、内存资源

后台运行:不再界面显示,运行过程不可见,仅会在进程结束时,把结果显示到前台,不争抢系统前台资源

后台挂起(暂停):进程由条件需要满足,未满足前,处于挂起状态

交互进程:人为手动输入命令启动的进程,属于前台进程

批处理进程:shell脚本。把多个命令,按照一定的逻辑顺序写入到一个文件中,组成程序,一次性运行文件,即可运行程序。根据命令运行,可能是前台进程,也可能是后台进程。

守护进程(daemon):监控、监听本机某项服务或端口的进程(运行的服务)

3.进程调度:

1.进程的优先级和修改nice

级别范围:-20  --  19    数字越小,优先级越高,进程默认优先级都是0

nice  --20  find  /  -name  f1   ---启动进程,并设定优先级为-20

ps  -l  ---查看进程,显示优先级(NI列)

ps  -efl  ---查看所有进程,可见优先级

renice  19   PID   ---更改指定PID的进程的优先级

注:优先级具备继承性,即父进程调用子进程后,子进程会遵守父进程的优先级

 

2.前后台改变: fg  bg  jobs   ctrl +z

直接前台运行:输入命令启用的进程,默认都直接在前台运行

直接后台运行:命令 &  ---命令进程放入后台运行

前台=>挂起: ctrl + z 组合键

jobs  ---查看本会话的后台进程

后台=>前台:fg  X   ---X表示jobs看到的编号,不写编号,默认调度最后进程进入前台

挂起=>后台:bg  X

后台=>前后:fg  X

前台=>强制停止: ctrl + c 组合键

4.杀死进程kill

kill  -9  PID   ---杀死进程

killall  -9  进程名   ---杀死多个同名进程

kill   -l   ---显示所有杀死级别

说明:其实kill命令并不只是杀死进程的功能,实质上是给进程增加一个标记信号,cpu会根据标记信号对进程做出相应的处理

5.进程在用户注销后不关闭

nohup  /mnt/cpuMonitor.sh  &   ---以nohup命令调用的后台进程,在用户注销后,不会关闭

6.定点运行at

1.at  -- 需要at软件包

at  14:46   ---设定定点运行的进程,回车后,进入命令的编辑界面,格式2:at  now+30min

 

echo  hello >> /mnt/f1

ls  -l  /var/  >> /mnt/f1

ctrl + d 组合键,停止、退出编辑

注:定点运行的进程,在后台执行,且执行结果不显示到前台,所以一般会把结果导入到文档中以便查看

atq   ---查看本机未执行的定点进程,显示结果中,第一列是该进程的编号

at  -c  编号   ---查看定点进程的具体命令

at  -r  编号   ---删除定点进程

设定了定点进程后,实际系统会在/var/spool/at/下创建对应的进 程文件,执行at中设定的命令

at -c 编号实质是cat的这个进程文件,at -r 编号,实质是删除的这个进程文件

2.用户管理文件

/etc/at.deny中指定拒绝使用at功能用户,默认存在,并为空

/etc/at.allow指定仅允许谁使用at功能,该文件中未写的用户是拒绝的,默认不存在

二者关系:若二者都存在,则at.deny失效,只遵守的at.allow的设置

7.进程故障:

1.僵尸进程 抓取 杀死僵尸进程

一个进程,卡死在内存中,不执行,但也不退出

父子进程调用,一方异常关闭,造成另一个方无法正常完成,从而成为僵尸进程

 

方式一:

ps  -aux   ---显示的第八列,进程状态列,显示有Z字母的,表示为僵尸进程

ps  -aux  |  awk  '$8 ~ /[Zz]/  {print  $1,$2,$4,$8,$11}'    ---抓取显示僵尸进程

方式二:

ps  -ef  |  grep  defunct    ---抓取显示僵尸进程

说明: -ef 查看时,僵尸进程会在进程名后面加 <defunct> 标记

抓取到后,kill  -9   PID  杀死僵尸进程

2.内存泄漏

一个进程运行完毕,不释放内存,下次运行再次占用新的内存空间,造成进程持续占用新的内存空间,内存被越占越大。

解决:当系统运行慢,查cpu不太高、查内存高,查进程数、连接数不高,查看占内存最高的进程,占内存10%+的进程为怀疑对象

写脚本,每10分钟记录一次进程占内存的比例,持续2-3个小时,查看记录日志,若进程每隔几次就会增长,说明泄漏了

申请业务集群制服务,轮流做重启,同时让开发部门做bug调试;或者版本降级

linux的PS进程和作业管理(进程调度,杀死进程和进程故障-僵尸进程-内存泄漏)的更多相关文章

  1. Linux查找并杀死僵尸进程

    1.查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程. 2.定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |gre ...

  2. Linux查找并杀死僵尸进程(转)

    1.查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程. 2.定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |gre ...

  3. Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...

  4. 僵尸进程的产生和避免,如何kill杀掉linux系统中的僵尸defunct进程

    在 Unix系统管理中,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为defunct,这就是所谓的"僵尸"进程."僵尸"进程是一个早已 死亡的进程 ...

  5. linux 如何清理僵尸进程

    今天在维护服务器的时候,发现有5个nova-novncproxy的僵尸进程. 26327 ?        S      0:05  \_ /usr/bin/python /usr/bin/nova- ...

  6. linux僵尸进程

    什么是僵尸进程?    在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程.  在fork()/execve()过程中,假设子 ...

  7. Linux 僵尸进程

    Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...

  8. linux系统清理僵尸进程记录

    在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程.  在fork()/execve()过程中,假设子进程结束时父进程仍存在, ...

  9. Linux 僵尸进程如何处理

    Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...

随机推荐

  1. SaaS 系统架构,Spring Boot 动态数据源实现!

    这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会. 在网上找了很多关于SaaS的资料 ...

  2. day42 io模型

    目录 一.io模型简介 二.阻塞io阻塞IO模型图.png 三.非阻塞io 四.io多路复用 五.异步io 一.io模型简介 Stevens在文章中一共比较了五种IO Model: blocking ...

  3. linux常用命令 总结

    最最常用的快捷键,Tab 键 ,自动补全功能, / 根目录 man 帮助手册:man cd ,查看cd的用法! cd 进入目录:ls -l 列表查看文件详细信息:pwd 当前路径: cp 复制 .rm ...

  4. spring-boot 应用 报错 No qualifying bean of type XXXXX.***Mapper

    报错类型 NoSuchBeanDefinitionException.No qualifying bean of type  XXXXX.***Mapper 报错信息详情 Caused by: org ...

  5. JVM 专题十九:垃圾回收(三)垃圾回收相关概念

    1. System.gc()的理解 在默认情況下,通过System.gc()或者Runtime. getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试 ...

  6. Django框架08 /聚合查询、分组、F/Q查询、原生sql相关

    Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...

  7. matlab中的静态变量与全局变量

    matlab中的静态变量和全局变量 1.静态变量 在matlab中,和其他语言一样,函数中的变量一把都是局部变量,也就是说,在函数调用完毕后,变量就会被释放.但是有些时候回希望上次改变的变量在下一次调 ...

  8. 使用位运算、值交换等方式反转java字符串-共四种方法

    在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法. StringBuilder(str).reverse() char[]循环与值交换 byte循环与值交换 apa ...

  9. 1731: [Usaco2005 dec]Layout 排队布局*

    1731: [Usaco2005 dec]Layout 排队布局 题意: n头奶牛在数轴上,不同奶牛可以在同个位置处,编号小的奶牛必须在前面.m条关系,一种是两头奶牛距离必须超过d,一种是两头奶牛距离 ...

  10. 图文详解在Windows系统中安装JDK

    本文以在Windows10中安装JDK8为例进行安装,其他系统和版本都是大同小异的. 下载 进入Oracle官方网站的下载页面:https://www.oracle.com/technetwork/j ...