青蛙学Linux—进程管理

摘要:
在Linux中,进程ID是区分不同进程的唯一标识,它的大小是有限制的,最大ID为32768。用UID和GID分别表示启动这个进程的用户和用户组;PPID表示进程的父进程。

进程,Process,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

进程是线程的容器,进程中包含一组线程,线程运行在进程中。

1、Linux中进程的分类

1.系统进程:可以执行内存资源分配和进程切换等管理工作的进程,由操作系统启动并管理,这类进程的运行不受用户的干预,即使是root用户也无法干预系统进程的运行。

2.用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,这类进程可以在用户的控制下运行或关闭,用户进程可分为以下三种

  • 交互进程:由一个shell终端启动的进程,在执行过程中需要与用户进行交互
  • 批处理进程:该进程是一些进程的集合,负责按顺序启动其他进程
  • 守护进程:该进程是一种一直运行的进程,用于执行特定的任务。

在Linux中,进程ID(PID)是区分不同进程的唯一标识,它的大小是有限制的,最大ID为32768。用UID和GID分别表示启动这个进程的用户和用户组;PPID表示进程的父进程。

2、查看进程

2.1、ps

显示进程在瞬间的运行状态。命令语法如下:

ps [选项]

常用选项:

  • -a:显示所有用户的进程,包含每个程序的完整路径
  • -x:显示所有系统进程,包括那些没有终端的程序
  • -u:显示使用者的名称和起始时间
  • -f:详细显示程序执行的路径
  • -e:将除内核以外所有进程的信息显示在标准输出

常用命令组合有ps -ef和ps -aux,这里来看下两个组合的详解:

ps –ef

1

各列详解:

  • UID:启动进程的用户ID
  • PID:进程ID
  • PPID:进程的父进程ID
  • C:进程的CPU占用率
  • STIME:进程启动的时间
  • TTY:启动进程的终端
  • TIME:进程使用CPU时间
  • CMD:带启动参数的进程路径及名称

ps –aux

2

各列详解:

  • USER:启动进程的用户
  • PID:进程ID
  • %CPU:进程CPU使用率
  • %MEM:进程内存使用率
  • VSZ:进程完全驻留内存需要的大小
  • RSS:进程实际使用内存大小
  • TTY:启动进程的终端
  • STAT:进程的状态。可能的值有以下几种,D - 不可中断;R - 正在运行或在队列中;S - 休眠;T - 停止或被追踪;I - 空闲;Z - 僵尸;P - 等待交换页;X - 死掉;< – 高优先级;N - 低优先级;s - 包含子进程;+ - 位于后台的进程组
  • START:进程启动的时间
  • TIME:进程使用CPU时间
  • COMMAND:进程名称及完整路径

额外的:显示中使用[]括起来的进程为系统进程。

2.2、top

用于实时查看进程的系统占用状态,同时可以显示当前系统负载和CPU内存等状况。命令语法如下:

top

top命令的回显可以分为以下两部分:

3

第一部分主要是系统当前的负载、各种状态的进程数量、CPU和内存负载,每行具体内容如下:

  • top:运行top命令时的时间 系统启动时间 当前登录系统的用户数量 系统一分钟、五分钟和十五分钟负载
  • Tasks:各种状态的进程数量,分别为total - 进程总数;running - 正在运行;sleeping - 睡眠;stopped - 停止;zombie - 僵尸
  • %CPU(s):CPU占用时间,分别为us - 用户占用;sy - 内核占用;ni - 用户进程提升优先级后占用;id - 空闲;wa - 等待磁盘写入;hi - 处理硬中断时间;si - 处理软中断时间;st - 虚拟机占用。如果是多核CPU,可以按1展开查看每个CPU核心的信息
  • KiB Mem:物理内存使用
  • KiB Swap:交换分区使用。内存的使用在下一篇查看系统负载中详细描述(free命令)。

第二部分显示的是系统中进程的实时信息,各列含义如下:

  • PID:进程ID
  • USER:启动进程的用户
  • PR:进程优先级
  • NI:nice值
  • VIRT:进程完全驻留内存需要的大小
  • RES:进程实际使用内存大小
  • SHR:共享内存使用大小
  • S:进程状态
  • %CPU:CPU使用
  • %MEM:内存使用
  • TIME+:累计CPU使用时间
  • COMMAND:执行的命令

额外的:在top界面下按f键可以修改显示的列。

2.3、lsof

用于列出进程打开的文件。若系统中没有安装,使用yum install lsof安装即可。命令语法如下:

lsof [选项] [参数]

常用选项:

  • -p:显示进程打开的所有文件,参数为PID
  • -c:显示进程打开的所有文件,参数为进程名
  • -i:通过监听指定的协议、端口号,显示符合条件的进程,参数为[tcp|udp]:port
  • -u:列出指定UID的进程详情,参数为UID
  • -g:列出指定GID的进程详情,参数为GID

lsof -c显示详解:

1

列详解

  • COMMAND:进程名
  • PID:进程ID
  • USER:启动进程的用户
  • FD:文件描述符
  • TYPE:文件类型
  • DEVICE:指定磁盘的名称
  • SIZE/OFF:文件大小
  • NODE:文件inode号
  • NAME:文件路径及文件名

2.4、pgrep

通过程序名查询PID。命令语法如下:

pgrep [选项] 程序名

常用选项:

  • -o:仅显示找到的最小(起始)PID
  • -n:仅显示找到的最大(结束)PID
  • -l:显示进程名称
  • -f:使用完全的进程名匹配

3、杀死进程

3.1、kill

根据指定的PID杀死进程。命令语法如下:

kill [信号类型] PID

信号类型决定了kill如何结束一个进程,通过kill –l可以查看所有的信号类型。常用的信号类型有:

  • SIGKILL,9,强制结束进程
  • SIGTERM,15,正常结束进程,kill的缺省选项
  • SIGINT,2,结束进程,但并不是强制性的,通过Ctrl+c发出的就是一个kill -2信号

额外的:我们通常使用以下的kill选项来检测一个进程是否存在

kill -0 PID
# 当进程存在时,命令正常执行,返回值为0;进程不存在时,命令执行失败,返回值非0

3.2、killall

根据指定的进程名杀死一个或一组进程。命令语法如下:

killall [信号类型] 进程名

免责声明:文章转载自《青蛙学Linux—进程管理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何使用JDK自带工具JConsoleUI 自动化中如何处理上传文件事件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

多线程和CPU的关系

什么是CPU (1)         Central  Progressing  Unit 中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。 (2)         CPU包括 运算器,高速缓冲存储器,总线。 (3)         它的工作,主要是解释计算机中的指令,和处理计算机软件中的数据。它在计算机中起着最重要的作用,构成了系...

Linux:centos 7 下载、安装、卸载.run文件

Linux:centos下载、安装、卸载.run文件(centos7安装xampp) 1、下载wget https://www.apachefriends.org/xampp-files/7.3.6/xampp-linux-x64-7.3.6-0-installer.run2、安装2.1、设置权限chmod 777 xampp-linux-x64-7.3....

Linux定时任务

1. 定时任务服务名称 crond 默认开机自动运行 自动启动 默认有系统的定时任务 2. 定时任务的相关文件 两个 用户的定时任务文件 /var/spool/cron/用户名 # 普通用户定义定时任务的配置文件 管理员的定时任务文件 /etc/crontab 3. 定时任务书写方式 格式 使用的/etc/crontab 管理员定时任务...

SQLite安装 以及 SQLite header and source version mismatch错误解决 (In debian)

小项目 需要sqlite3数据库支持 官网下载 http://www.sqlite.org/download.html 解压,进入目录执行 ./configure make make install 运行后出错 哈哈麻烦让人成长 关键词搜索到了 http://blog.csdn.net/gebitan505/article/details/19982...

Linux中/usr与/var目录详解

Linux中/usr与/var目录详解 /usr文件系统  /usr 文件系统经常很大,因为所有程序安装在这里. /usr 里的所有文件一般来自Linux distribution;本地安装的程序和其他东西在/usr/local 下.这样可能在升级新版系统或新distribution时无须重新安装全部程序./usr/X11R6X Window系统的所有文件...

修改Kali Linux终端主题

修改KaliLinux背景图片在KaliLinux中,默认XFCE桌面背景图片保存在/usr/share/backgrounds/xfce目录。大学霸IT达人默认Undercover桌面背景图片保存在/usr/share/kali-undercover/backgrounds目录。如果用户不希望使用默认桌面,则可以将修改的背景图片保存到对应的目录。然后,依...