Linux 系统管理之进程管理:目的、方法、命令
来源:互联网 发布:淘宝高仿鞋哪些店铺 编辑:程序博客网 时间:2024/05/29 17:59
文章概要
本文主要介绍了Linux 系统管理的目的,还有常见系统信息查看的命令,ps 、pstree和top命令,还介绍了如何杀死异常进程,其方式有杀死单个进程、杀死一组进程、以及如何将用户踢出终端(杀掉终端),文末还介绍了进程优先级的概念和修改进程优先级的两个命令 nice 和 renice。
一、简介
进程是正在执行的一个程序或命令,每一个进程都有自己的地址空间,并占用一定的系统资源。而操作系统为我们提供各种各样的服务,自然后台就会有许多进程在运行。有时候我们也会运行自己所写的程序。操作系统是通过进程控制块来管理进程的,那么我们用户该如何来管理这些进程呢?这就是进程管理要做的事情。
二、 进程管理的作用
- 判断服务器的状态是否正常运行(比如查看内存和CPU情况,看服务器是否负载过重)
- 查看系统中的进程信息(比如查看进程是否在运行以及某项服务是否已启动或占用很多资源)
- 杀死进程(杀死一些失去控制的进程)
三、进程查看 ps 命令和 pstree 命令
ps 命令
1. ps 命令简介与常用选项
ps - report a snapshot of the current processes.
报告当前进程信息的快照,主要用来查看进程信息。
[Jack@ www ~]$ ps aux# 查看系统中所有进程,BSD操作系统分格[Jack@ www ~]$ ps -le#查看系统中所有进程,使用Linux标准命令格式
选项说明:
- a:显示一个终端的所有进程,除了会话首进程和与终端无关联的进程
- u:显示进程的所属用户及内存的使用情况
- x:显示没有控制终端的进程
- -l:长格式显示。显示更详细的信息
- -e:显示所有进程与 -A一致
2. ps 命令输出信息说明
- USER :该进程由那个用户产生的
- PID:该进程的进程号
- %CPU:该进程占用的CPU 资源百分比,越高表示越耗费资源
- %MEM:该进程占用物理内存的百分比,越高表示越耗费资源
- VSZ:该进程占用虚拟内存的大小,单位KB
RSS:该进程占用实际物理内存的大小,单位KB
TTY:该进程是在哪个终端中运行的。tty1-tty7 是本地控制终端,其中tty-tty6是本地的字符界面终端,tty7是图像终端。pts/0-255代表虚拟终端(远程登录的)(内核2.6以后可以达到65535个)。问号表示该进程不受终端控制。
STAT:进程状态。常见状态:
- R:运行
- S:睡眠
- T:停止状态
- Z:僵尸进程
- s:包含子进程
- +:位于后台的进程组
其余状态: - D:无法中断的休眠状态(I/O进程)
- <:优先级高的进程
- l:多进程的
- START:该进程的启动时间
- TIME:进程占用CPU的运算时间
- COMMAND:产生此进程的命令名
pstree 命令
pstree - display a tree of processes# 显示进程树
选项:
- -p:显示进程的PID
- -u:显示进程所属用户
示例:
[Jack@www ~]$ pstreeinit─┬─NetworkManager─┬─dhclient │ └─{NetworkManager} ├─VGAuthService ├─abrtd ├─acpid ├─atd ├─auditd───{auditd} ├─console-kit-dae───63*[{console-kit-da}] ├─crond ├─cupsd ├─dbus-daemon───{dbus-daemon} ├─hald─┬─hald-runner─┬─hald-addon-acpi │ │ └─hald-addon-inpu │ └─{hald} ├─httpd───8*[httpd] ├─login───bash ├─master─┬─pickup │ └─qmgr ├─5*[mingetty] ├─modem-manager ├─mysqld_safe───mysqld───9*[{mysqld}] ├─rsyslogd───3*[{rsyslogd}] ├─sshd─┬─sshd───sshd───bash │ └─sshd───sshd───bash───pstree ├─udevd───2*[udevd] ├─vmtoolsd───{vmtoolsd} ├─vmware-vmblock-───2*[{vmware-vmblock}] └─wpa_supplicant
四、进程查看 top 命令
1. 简介
top - display Linux tasks#显示系统任务,类似Windows 中的任务管理器,判断服务器的状态是否正常运行
演示:
2. 选项及命令
在命令行执行时的选项:
- -d 秒数:指定 top命令刷新间隔,默认是3秒,如输入 top -d 1 表示每隔一秒刷新一次
- -b:使用批处理模式输出。默认是动态更新,指定此选出后会一屏一屏连续打印。
- -n:指定top命令的执行次数。一般与-b选项合用。如输入 top -b -n 3 ,将会执行三次top 命令。
在没有指定-b选项时,top命令将动态更新,在此模式下有如下交互命令:
- ?或h:显示帮助信息,按任意键返回
- P:以CPU使用率排序,默认就是该选项
- M:以内存使用率排序
- N:以PID排序
- q:退出top
3. top命令上半部分显示的信息分析
一共有五行信息,分别表示:
第一行信息为任务队列信息:
第二行为进程信息:
第三行为CPU信息:
第四行为物理内存信息:
第五行为交换分区(swap)信息:
五、杀死进程(kill,killall,pkill)
在杀死进程之前,一定要记得,你不是一个“杀手”,不能逮谁杀谁,进程大都有自己的退出方式,只有在失去控制或者无法正常终止进程的时候,才采取此终极手段,此时像一个杀手一样为“操作系统”除害。在Liuux中对进程的控制,是基于信号来实现的,可以使用kill -l
来列出系统中的信号列表:
下面列出一些常见的与进程“性命攸关”的信号:
注:如果想深入一些了解信号可阅读:【Linux】信号的理解以及信号集处理函数的使用
kill命令 :用来杀死单一进程
[Jack@www ~]$ kill -9z 3487[Jack@www ~]$ kill -SIGKILL 3478//都表示杀死 PID 为3478 的进程,可将-9和SIGKILL 换为其余信号
killall命令:用来杀死一组进程
[Jack@www ~]$ killall -9 httpd# 表示杀死名为httpd的所有进程killall [选项][信号] 进程名#按·`照进程名字杀死进程#选项:# -i :交互式,询问是否要杀死# -I :忽略进程名的大小写
pkill 命令:可用来杀死进程或者强制将某个用户踢出系统
[Jack@www ~]$ pkill -9 -t pts/0 # 表示将重点pts/0 上的用户踢出 # -t 表示按照终端号踢出用户# 可使用w命令查看当前系统中用户和终端[Jack@www ~]$ w 23:23:34 up 4:11, 4 users, load average: 0.03, 0.03, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 - 19:10 3:29m 0.18s 0.18s -bashhuozhiga pts/0 192.168.43.157 22:44 38:55 0.01s 0.01s -bashJack pts/1 192.168.43.157 19:17 9:54 0.44s 0.44s -bashJack pts/2 192.168.43.157 21:11 0.00s 0.37s 0.00s w[Jack@www ~]$ who am i # 使用 who am i 命令 查看自己所在终端Jack pts/2 2017-07-07 21:11 (192.168.43.157)[Jack@www ~]$
六、修改进程优先级
进程优先级简述
由于 Linux是多用户多任务的操作系统,每时每刻都运行着众多的系统,而cpu 核心数是少数的,那么操作系统在分配CPU资源给进程时,就要考虑应该先分配给谁,以及分配的顺序,也就是我们常说的进程的调度,确保一些重要的进程可以第一时间得到响应。
查看进程的优先级信息:
PRI 代表 Priority, NI 代表 Nice,都表示优先级,数值越小,优先级越高,还有以下需要注意的地方:
- 用户不能直接修改 Priority 值,只能修改 NI 值,优先级最终值是 PRI 和 NI 的和。
- PRI(最终结果) = PRI(原来值) + NI
- NI 的范围是 [-20 到 19]
- 普通用户调整 NI 值的范围被限制到 [0 到 19],且只能调整属于自己的进程的 NI 值
- root 可以设值 NI 为负值,还可以调整任意用户的 NI 值
优先级的修改方式:
通过 nice 命令:
使用命令之前需要知道:nice命令可以给新执行的程序 赋予NI 值,不能修改已经执行进程的NI 值。
#例如需要将程序 a.out 的优先级从默认PRI 值 为80执行改为85执行[Jack@www code]$ nice -n 5 ./a.out[Jack@www ~]$ ps -el | grep -E 'PID | a.out' F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD0 R 502 4013 2448 98 85 5 - 466 - pts/1 00:02:36 ./a.out# 可以看到此时已经是85
那么如何修改已经在运行进程的有效级呢?
renice 命令:修改已经运行进程的NI值
注意:改renice命令修改时,是基于默认值80 来做运算的。
# 比如要将刚才运行的 a.out 优先级从85 修改为 81,可用下面的命令[root@www Jack]# renice 1 40134013: old priority 5, new priority 1[root@www Jack]# ps -el | grep -E 'PID | zombie' F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD0 R 502 4013 2448 99 81 1 - 466 - pts/1 00:13:00 zombie# 可以看到此时并不是直接在 85 的基础上加1,而是在80 的基础上加1
优先级一般不需要修改,因为系统比我们更清楚应该如何调度进程。
- Linux 系统管理之进程管理:目的、方法、命令
- linux系统管理命令-进程与作业管理
- Linux系统管理-进程管理
- Linux系统管理-进程管理
- Linux 系统管理-进程管理
- Linux系统管理:Linux要精于管理之用进程管理
- Linux系统管理—进程管理
- linux系统管理命令-磁盘管理
- linux系统管理命令-文件系统管理
- linux系统管理命令-软件包管理
- Linux系统管理之 ssh 管理
- linux命令之三:系统管理
- Linux系统管理-终止进程/工作管理
- python系统管理之supervisor进程管理
- linux系统管理命令-用户和工作组管理
- Linux初窥:系统管理之(进程管理、定时任务、系统监控)
- linux 进程管理,内存管理,文件系统,系统管理,网络操作概述
- linux命令之用户与进程管理
- JAVA 串口编程(二)
- 数据滤波处理
- 有关A^B(hdoj2035)
- 临界区锁 InitializeCriticalSection()
- 带有xavier初始化、dropout的多层神经网络
- Linux 系统管理之进程管理:目的、方法、命令
- GreenDao数据库
- Nginx的session一致性问题——memcached缓存session共享
- tiny6410的yaffs2文件系统的制作及其安装(1)
- 网页弹窗插件layer.js的使用
- 二叉排序树、平衡二叉树和红黑树
- arcgis for js 从入门到放弃二:dojo初识和arcgis的多种写法
- poj-3667 Hotel (线段树区间合并)
- Java你该知道的——类的基本知识