进程管理

简介:

进程管理:pstree、ps、Top、nice 修改进程优先级 、Kill、前台后台进程切换 、free 查看内存、screen

程序与进程:
程序是静态的(文件),进程是动态的(运行的程序)。

进程和线程:
一个程序至少有一个进程,一个进程至少有一个线程. 
进程之间内存是独立
线程之间内存共享 ,高并发好一些 。 安全性差一些。

[root@localhost ~]# pstree ##查看进程树
systemd─┬─NetworkManager───2[{NetworkManager}]
├─agetty
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───5
[{polkitd}]
├─rhnsd
├─rhsmcertd
├─rsyslogd───2[{rsyslogd}]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4
[{tuned}]
└─wpa_supplicant
[root@localhost ~]# pstree -p ##显示进程号
systemd(1)─┬─NetworkManager(1023)─┬─{NetworkManager}(1037)
│ └─{NetworkManager}(1042)
├─agetty(971)
├─auditd(930)───{auditd}(938)
├─crond(968)
├─dbus-daemon(958)───{dbus-daemon}(964)
├─firewalld(954)───{firewalld}(1334)
├─lvmetad(825)
├─master(1856)─┬─pickup(16851)
│ └─qmgr(1866)
├─polkitd(1047)─┬─{polkitd}(1054)
│ ├─{polkitd}(1055)
│ ├─{polkitd}(1058)
│ ├─{polkitd}(1060)
│ └─{polkitd}(1064)
├─rhnsd(1547)
├─rhsmcertd(1540)
├─rsyslogd(952)─┬─{rsyslogd}(961)
│ └─{rsyslogd}(962)
├─sshd(1533)───sshd(16884)───bash(16888)───pstree(16922)
├─systemd-journal(805)
├─systemd-logind(955)
├─systemd-udevd(835)
├─tuned(1534)─┬─{tuned}(1677)
│ ├─{tuned}(1680)
│ ├─{tuned}(1682)
│ └─{tuned}(1687)
└─wpa_supplicant(1050)

列出目前所有的正在内存当中的进程
ps -aux 
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 188928 4000 ? Ss 06:57 0:02 /usr/lib/systemd/systemd --switched-root --system --deseri
root 2 0.0 0.0 0 0 ? S 06:57 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 06:57 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 06:57 0:00 [kworker/0:0H]
USER:运行此进程的用户名
• PID :该 process 的号码。
• %CPU:该 process 使用掉的 CPU 资源百分比;
• %MEM:该 process 所占用的物理内存百分比;
• VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
• RSS :该 process 占用的固定的内存量 (Kbytes)
• TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

• STAT:该程序目前的状态,Linux进程有5种基本状态:
R :(正在运行或在运行队列中等待) ;
S :该程序目前正在睡眠当中 ,但可被某些讯号 (signal) 唤醒。
T :该程序目前暂停了
例: vim a.txt 按下: ctrl+z 
[root@localhost ~]# ps -aux |grep vim
root 16924 0.1 0.2 151716 5292 pts/0 T 07:50 0:00 vim a.txt
root 16926 0.0 0.0 112660 968 pts/0 R+ 07:51 0:00 grep --color=auto vim

ctrl-c 是发送 SIGINT 信号,终止一个进程 停止
ctrl-z 是发送 SIGSTOP信号,挂起一个进程 暂停

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
D: 不可中断状态.
< 高优先级的 
N 低优先级的
s 包含子进程
l 多线程

  • 前台程序

START:该 process 被触发启动的时间;
• TIME :该 process 实际使用 CPU 运作的时间。
• COMMAND:该程序的实际指令

了解:
ps -ef
ps -aux 是用BSD的格式来显示进程。
ps -ef 是用标准的格式显示进程。

top 动态查看进程
统计信息区前五行是系统整体的统计信息。

1、第一行是任务队列信息
同 uptime  命令的执行结果:

[root@localhost ~]# uptime 
21:13:25 up 52 min, 4 users, load average: 0.06, 0.03, 0.05

其内容如下:
21:13:25 当前时间
up 52 min 系统运行时间,格式为时:分
4 users, 当前登录用户数
load average: 0.06, 0.03, 0.05 系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于4*3=12即表示系统负载不是很严重.

2. 第二、三行为进程和CPU的信息
当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
1 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 
0.3% us 系统用户进程使用CPU百分比。 不包括调高优先级的进程。 CPU%是由每个核的CPU占用律之和算出来的。如果你是4核CPU,核1,CPU使用率为100%,核2,CPU使用率为100%。 则会出会CPU 高于100%的现象,最终为200%
1.0% sy 内核中的进程占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比

第四五行为内存信息。内容如下:
Mem: 191272k total 物理内存总量

173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buff/cache 用作内核缓存的内存量。
和free –k 一个意思

Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
3123008 avail Mem 总的可利用内存是多少

二.  进程信息
列名 含义
PID 进程id
USER 进程所有者的用户名
NI 进程优先级。 nice值。负值表示高优先级,正值表示低优先级
RES 实际使用内存大小。
S 进程状态。
            D=不可中断的睡眠状态
            R=运行
            S=睡眠
            T=跟踪/停止
            Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行

top快捷键:
默认3s刷新一次
空格 :立即刷新。
q退出
M按内存排序
P按CPU排序
<> 翻页

控制(关闭)进程:
kill 给进程发送信号(停止进程)
常用信号:
1 HUP 重新加载配置文件。类似重启。
2 INT 和ctrl+c一样 一般用于通知前台进程组终止进程
9 KILL 强行中断
19 STOP 和ctrl+z一样

例:
语法:kill -9 pid
[root@localhost ~]# ps -aux | grep top
root 39747 0.4 0.0 146512 2428 pts/0 S+ 08:21 0:04 top
[root@localhost ~]# kill -9 39747

killall 通过程序的名称,直接杀死所有进程
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# ps -aux | grep httpd
root 39962 0.0 0.1 226128 5052 ? Ss 08:38 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39974 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39975 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39976 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39977 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39978 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
root 39985 0.0 0.0 112644 956 pts/1 S+ 08:39 0:00 grep --color=auto httpd
[root@localhost ~]# killall httpd
或者
pkill httpd

扩展:
vim a.txt #出现以下情况
E325: ATTENTION
Found a swap file by the name ".a.txt.swp"
owned by: root dated: Fri Dec 4 20:59:24 2015

解决思路:
1)查看一下有没有对应的进程,有的话杀死
[root@localhost ~]# ps -aux | grep vim
root 39395 0.0 0.1 151452 5136 pts/0 T 07:50 0:00 vim a.txt
root 40034 0.0 0.0 112644 956 pts/0 S+ 08:43 0:00 grep --color=auto vim
[root@localhost ~]# kill -9 39395

2)如果还不能解决
[root@localhost ~]# rm -rf .a.txt.swp

优先级控制:
nice值 -20 ~ 19 越小优先级越高 普通用户0-19
nice 
作用:以什么优先级运行进程 。默认优先级是0
语法: nice -n 优先级数字

[root@localhost ~]# nice -n -5 vim a.txt

[root@localhost ~]# ps -aux | grep vim
root 40128 0.0 0.1 151452 5152 pts/0 S<+ 08:48 0:00 vim a.txt
root 40149 0.0 0.0 112644 956 pts/1 S+ 08:49 0:00 grep --color=auto vim

[root@localhost ~]# top -p 40128
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
40128 root 15 -5 151452 5152 2528 S 0.0 0.1 0:00.05 vim

renice #修改正在运行的进程的优先级
[root@localhost ~]# renice -n 5 40168
35281 (process ID) old priority 0, new priority 5

了解:
前后台进程切换:
任务:nohup 如何创建一个后台指令
jobs 列出所有的后台进程
[root@localhost ~]# vim b.txt &
[2] 40281
[root@localhost ~]# jobs
[1]- Stopped nice -n -5 vim a.txt
[2]+ Stopped vim b.txt

fg把后台进程调到前台
[root@localhost ~]# fg 2

free 查看系统内存使用状况
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 3937 613 2606 10 717 2999
Swap: 2047 0 2047

buffers #缓存从磁盘读出的内容
cached #缓存需要写入磁盘的内容
[root@localhost ~]# dd if=/dev/zero of=/a.txt count=10 bs=100M

清空缓存
reboot

[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 3937 561 3194 10 181 3174
Swap: 2047 0 2047








本文转自信自己belive51CTO博客,原文链接:http://blog.51cto.com/11638205/2048799 ,如需转载请自行联系原作者


相关文章
|
2月前
|
算法 调度
深入理解操作系统之进程管理
【5月更文挑战第29天】 本文旨在探讨操作系统中的进程管理机制。通过对进程的概念、状态转换、调度算法以及进程同步与互斥的深入分析,揭示操作系统如何高效、有序地管理并发执行的任务。文章将详细讨论进程管理中的关键概念,并通过实例解释这些概念在现代操作系统中的应用。
|
12月前
|
调度
操作系统概论学习(进程管理)
操作系统概论学习(进程管理)
41 0
|
2月前
|
存储 算法 安全
|
9月前
|
消息中间件 算法 安全
进程管理
一、进程管理 进程管理是操作系统的重要功能之一,它负责管理和控制计算机系统中的各个进程。进程是指正在执行的程序的实例,它包括程序代码、数据、执行状态等信息。 进程管理主要包括以下几个方面: 1. 进程创建:操作系统负责创建新的进程。当用户或应用程序发起创建进程的请求时,操作系统会为新进程分配资源,并初始化进程的执行环境。 2. 进程调度:操作系统负责调度和分配CPU时间片给各个进程。它根据调度算法和优先级策略,决定哪个进程可以获得CPU的执行权,以实现多任务并发执行。 3. 进程同步:操作系统提供了各种机制来实现进程之间的同步和协作。例如,信号量、互斥锁、条件变量等,可以用来解决进程间的互斥访
98 0
|
9月前
|
存储 算法 安全
操作系统之进程管理
进程的定义、特征、组成、组织 进程的定义 PCB 是进程控制块(Process Control Block)的缩写,它是操作系统中用于管理进程的重要数据结构。 进程的组成 进程的组织 链接方式: 索引方式: 进程的特征 本章内容小结: 进程的状态与转换 进程的状态 三种基本状态: 另外两种状态: 创建态: 结束态: 进程状态的转换 本章小结: 进程控制 什么是进程控制 进程控制过程 如何实现进程控制 进程控制相关的原语 本章回顾: 进程通信 什么是系统资源? 系统资源包括: CPU: 中央处理器,
40 0
|
资源调度 调度 索引
操作系统进程管理描述
操作系统进程管理描述
|
存储 算法 调度
操作系统(2)进程管理(上)进程与线程
2.1.概述 2.2.CPU的管理 CPU本质上就是一个去内存中根据地址取指令,然后执行指令的硬件。CPU的完整取址执行流程如下: CPU要执行的指令的地址存在寄存器中,指令存放在内存中。 例如PC寄存器中存放50,CPU读到存放的50,发出一条取址指令,经由地址总线去取出地址为50的内存单元中的指令。最后CPU解释执行该指令,CPU工作的过程就是不断的取址执行。
120 0
|
安全 算法 测试技术
进程管理和死锁避免
进程管理和死锁避免
91 0
进程管理和死锁避免
|
存储 缓存 算法
【7. 进程管理】
进程管理 进程(Process)描述 进程状态(State) 线程(Thread) 进程间通信(Inter-Process Communication) 进程互斥与同步 死锁(Deadlock) 1. 进程描述 进程定义 进程的组成 进程的特点 进程控制结构
84 0
【7. 进程管理】
|
存储 消息中间件 算法
进程管理与进程通信
进程管理与进程通信
331 0