天天看点

Linux系统入门之进程管理

1.什么是进程?

程序(program)放置在储存媒体中(如硬盘/光盘/软盘/磁带等),为实体文件的形态存在

进程:程序被触发后,执行者的权限与属性,程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存内的单元一个识别码(PID),可以说,进程就是一个正在运行中的程序。

进程状态:

R(Running):该程序正在运行中

S(sleeping) :该程序目前在睡眠状态(idle)但可以被唤醒(signal) 

D不可被唤醒的睡眠状态,通常进程可能在等待I/O的情况

T停止状态(stop)可能是在工作控制(背景暂停)或除错(traced)状态 可以通过命令强制唤醒

Z(Zombie):僵尸状态,程序已经终止但却无法被移除至内存外

2.查看进程:

(1)图形方式查看

  gnome-system-monitor

Linux系统入门之进程管理

(2)在命令行里查看系统进程  ps

ps -a 在shell中运行的所有进程,不包含环境信息
ps a 在shell中运行的所有进程, 包含环境信息
ps -A  所有进程,包括环境
ps -d  所有进程但不包括shell信息
ps e  显示进程的扩展信息
ps x  显示左右有输出设备(有tty终端)的进程
ps -u  显示用户信息
ps f  显示从属关系

ps -a         shell下的所有进程不包含环境信息

Linux系统入门之进程管理

pa  a        同上 包含环境信息

Linux系统入门之进程管理

ps -A /-e   所有进程

Linux系统入门之进程管理

ps -d        所有进程但不包括shell信息

Linux系统入门之进程管理

ps ae       显示进程的扩展信息

Linux系统入门之进程管理

ps x         显示左右有输出设备(有tty终端)的进程

Linux系统入门之进程管理

ps -u       显示用户信息

Linux系统入门之进程管理

ps f         显示从属关系

Linux系统入门之进程管理

ps e        显示进程的详细信息(系统资源的调用)

Linux系统入门之进程管理

ps常用组合

ps af 显示进程的从属关系(父进程停止 子进程自动结束,但有例外,孤儿进程不受父进程控管,只受系统初始化进程控管)

Linux系统入门之进程管理

ps aux 显示系统中所有进程并显示进程用户

Linux系统入门之进程管理

ps ef  显示进程详细信息并显示进程父子关系

Linux系统入门之进程管理

ps ax  显示当前系统中

Linux系统入门之进程管理

pstree 显示系统树

Linux系统入门之进程管理

##显示进程指定信息

ps -o xxx ##显示进程的指定信息

      comm##进程名称

      user##进程所有人

      group##进程所有组

      %cpu ##进程cpu使用率

      %mem ##进程内存使用率

      pid  ##进程id

      nice ##进程优先级

Linux系统入门之进程管理

可以一次显示所有想看的进程信息

Linux系统入门之进程管理

##  进程排序

   ps ax --sort=

             +%cpu|-%cpu

             +%mem|-%mem

其中,+表示升序排列,-表示降序排列

对cpu升序排序查看进程

Linux系统入门之进程管理

对mem降序排序查看进程

Linux系统入门之进程管理

实验:获得系统中内存使用量排在前5的进程id(第一行中为pid的名称,结果中不需要显示)

Linux系统入门之进程管理

##stat中显示的信息##

S 进程状态
I 内存中有锁定空间
N 优先级低
< 优先级高
+ 前台运行
s 顶级进程

3.进程优先级

(1)进程的优先级范围

-20~19

(2)优先级查看

pa ax -o pid,nice,comm

Linux系统入门之进程管理

(3)指定某个优先级开启进程

nice -n 优先级数字   进程名称

nice -n  5  gedit    ##开启gedit并且指定程序优先级为5

Linux系统入门之进程管理

低优先级 5 多个N

高优先级 -5 <

命令行中

renice -n 10 pid

将进程号为31618的vim进程优先级重新设定为-6

Linux系统入门之进程管理

4.环境中前后台的调用

jobs               ##查看被打入环境后台的进程

Linux系统入门之进程管理

ctrl+z             ##把占用终端的进程打入后台

bg jobsnum    ##把后台暂停的进程运行

fg jobsnum     ##把后台进程调回前台

Linux系统入门之进程管理

注意:当不写jobsnum时,默认调回优先级高的进程。

comm &         ##让命令直接在后台运行

5.进程信号

1.常用信号等级

1 进程重新加载配置
2 删除进程在内存中的数据
3 删除鼠标在内存中的数据
9 强行结束单个进程(不能被阻塞)
15 正常关闭进程(可能会被阻塞)
18 运行暂停的进程
19 暂停某个进程(不能被阻塞)
20 把进程打入后台(可以被阻塞)
man 7 signal 查看信号详细信息

kill    -信号  进程pid

killall -信号  进程名称

pkill   -u student -信号

+  正在接受服务的

-  次优先当+调回前台-->+

实验为:

删除pid为2372的进程在内存中的数据

Linux系统入门之进程管理

6.进程的动态监控

top

Linux系统入门之进程管理

   不同按键的作用

1 显示cpu每个核的负载
s 调整刷新的频率
c cpu负载排序
m 内存使用量排序
h 查看帮助
u 查看指定用户进程
k 对指定进程发起信号
q 退出

1.  ##显示cpu每个核的负载

Linux系统入门之进程管理

    s   ##调整刷新频率

Linux系统入门之进程管理

    c   ##CPU负载排序

    m   ##内存使用量排序

    h   ##查看帮助

Linux系统入门之进程管理

    u   ##查看指定用户进程

    k   ##对指定进程发起信号

    q   ##退出

7.控制服务

1.什么是服务?

系统中运行的对于系统本身没有意义,但对客户主机有重大意义的程序叫服务性软件,简称服务。

服务器:安装了服务性软件的系统

2.用什么控制服务

      系统初始化进程可以对服务进行相应的控制

3.当前系统初始化进程是什么

    systemd   ###系统初始化进程

    pstree      ###显示系统中的进程树

4.进程控制命令

    ssh----->shhd

    client   server

  systemctl                       ##服务控制命令

  systemctl  status sshd     ##查看服务状态,inactive(不可用)active(可用)

  systemctl  start  sshd      ##开启服务

  systemctl  stop   sshd     ##关闭服务

  systemctl  restart sshd    ##重启服务

  systemctl  reload sshd    ##重新加载服务配置

  systemctl  enable sshd   ##设定服务开机启动

  systemctl  disable sshd   ##设定服务开机不启动

  systemctl  list-units         ##列出已经开启服务当前状态

  systemctl  list-unit-files    ##列出所有服务开机启动的状态

  systemctl  list-dependencies ##列出服务的依赖

  systemctl  set-default multi-user.target  ##设定系统启动级别为多用户模式(无图形)

  systemctl  set-default graphical.target   ##设定系统启动级别为图形模式

继续阅读