进程简介

进程是已启动的可执行程序的运行实例,进程有以下组成部分:

  • 已分配内存的地址空间;
  • 安全属性,包括所有权凭据和特权;
  • 程序代码的一个或多个执行线程;
  • 进程状态。

程序: 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd

进程: 是程序运行的过程, 动态,有生命周期及运行状态。

进程的生命周期

Linux系统基础知识(5)进程管理_进程管理

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

Centos5/6系统进程: init

Centos7系统进程: systemd

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

Linux系统基础知识(5)进程管理_进程管理_02

进程管理 process

静态查看进程 ps
[root@localhost ~]# ps aux |head  -2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128096 6708 ? Ss 16:20 0:01 /usr/lib/systemd/systemd
  • ps a  显示现行终端机下的所有程序
  • ps u   以用户为主的格式来显示程序状况。
  • ps x   不以终端机来区分。
ps aux 输出的字段含义
  • USER: 运行进程的用户
  • PID: 进程ID
  • %CPU: CPU占用率
  • %MEM: 内存占用率
  • VSZ: 占用虚拟内存
  • RSS: 占用实际内存
  • TTY: 进程运行的终端
  • STAT: 进程状态 (R 运行/S 睡眠 Sleep/T 停止的进程 /Z 僵尸进程/X 死掉的进程)
  • START: 进程的启动时间
  • TIME: 进程占用CPU的总时间
  • COMMAND: 进程文件,进程名
动态查看进程 top
top - 11:45:08 up 18:54,  4 users,  load average: 0.05, 0.05, 0.05
Tasks: 176 total, 1 running, 175 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3865520 total, 1100000 free, 580268 used, 2185252 buff/cache
KiB Swap: 4063228 total, 4063228 free, 0 used. 2917828 avail Mem

说明

Linux系统基础知识(5)进程管理_系统进程_03

top常用内部指令
  • h|?帮助
  • M 按内存的使用排序
  • P 按CPU使用排序
  • N 以PID的大小排序
  • < 向前
  • > 向后
  • z 彩色,Z设置彩色,使用数字调整
动态查看进程 top,像windows的任务管理器
[root@localhost ~]# top        //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[root@localhost ~]# top -d 1 //每1秒刷新。
[root@localhost ~]# top -d 1 -p 10126 //查看指定进程的动态信息
[root@localhost ~]# top -d 1 -p 10126,1 //查看10126和1号进程

控制进程kill

给进程发送信号(kill -l列出所有支持的信号)

[root@localhost ~]# kill -1

编号 信号名

  • 1) SIGHUP 重新加载配置
  • 2) SIGINT 键盘中断Ctrl+C
  • 3) SIGQUIT 键盘退出Ctrl+\,类似SIGINT
  • 9) SIGKILL 强制终止,无条件
  • 15) SIGTERM 终止(正常结束),缺省信号
  • 18) SIGCONT 继续
  • 19) SIGSTOP 暂停
  • 20)SIGTSTP 键盘暂停Ctrl+Z

信号9,15一个正常终止,一个非法杀死

进程优先级nice

  • Linux 进程调度及多任务
  • 每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。

Linux系统基础知识(5)进程管理_centos7_04

  • 在top中显示的优先级有两个,PR值和nice值
  • NI: 实际nice值
  • PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39

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

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

查看进程的nice级别
[root@localhost ~]# ps axo pid,command,nice --sort=-nice //--sort排序
手动启动不同nice
[root@localhost ~]# nice -n -5 sleep 6000 &
[1] 2220
[root@localhost ~]# nice -n -10 sleep 7000 &
[2] 2229
[root@localhost ~]# ps axo command,pid,nice | grep sleep
sleep 6000 2220 -5
sleep 7000 2229 -10
grep --color=auto sleep 2233 0
修改nice值
[root@localhost ~]# renice -20 2669 //2669 (进程 ID)

作业控制 jobs

  • 作业控制是一个命令行功能,也叫后台运行。
  • foreground:fg 前台进程:是在终端中运行的命令,占领终端。
  • background:bg 后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
[root@localhost ~]# sleep 2000  //当前终端无法输入,占领前台
ctrl + c 终止进程
[root@localhost ~]# sleep 3000 &  //运行后台程序
[root@localhost ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000
jobs后台进程管理
[root@localhost ~]# jobs
[1]+ Running sleep 3000 & //+,-代表,使用fg时,默认调动至前台的进程。先是+,后是-
[root@localhost ~]# fg 1 //将作业1调回到前台
[root@localhost ~]# kill  %1  //消灭后台进程

虚拟文件系统 proc

  • 虚拟文件系统:采集服务器自身 内核、进程运行的状态信息
  • CPU:/proc/cpuinfo
  • 内存:/proc/meminfo
  • 内核:/proc/cmdline