1、系统管理10榆林职业技术学院 杨浩与应用实践1学习目标1.掌握进程运行状态的查看、管理方法。2.掌握系统工作任务管理、系统资源监控的常用方法。3.了解系统定时任务的概念,掌握设置定时任务的基本方法。本章学习目标210.1 进程管理310.1.1 进程查看 程序是指令、数据及其组织形式的描述,进程是程序的实体,是程序基于某数据集合的一次运行活动,是系统进行资源分配与调度的基本单位,一个程序的运行至少产生一个进程。查看进程对资源的占用情况、了解服务器的运行状态,维护服务器的健康运行是进程管理的主要内容。1查看系统进程命令ps ps命令(process status)的完整目录是/bin,所有用户都
2、可以执行,其功能是查看所有进程。命令格式:rootlocalhost#ps-aux|-le 选项说明:-aux 是选项“-a”、“-u”、“-x”的组合,其中“-a”表示所有前台进程,“-u”表示产生进程的用户,“-x”表示所有后台进程,合起来是查看系统中的所有进程。这些选项是使用BSD(Unix)操作系统模式的。-le 是选项“-l”与“-e”的组合,“-l”表示显示进程的详细信息,“-e”表示显示所有进程,合起来的作用是使用Linux标准命令格式查看系统中的所有进程。“aux”选项和“-le”选项的执行效果是相同,常用“aux”选项。10.1 进程管理410.1.1 进程查看 例10.1
3、可用如下命令查看当前系统启动的所有进程:rootlocalhost#ps-aux 显示结果:USER PID%CPU%MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.2 19232 1540?Ss May07 0:01 /sbin/initroot 2 0.0 0.0 0 0?S May07 0:00 kthreaddroot 3 0.0 0.0 0 0?S May07 0:00 migration/0root 4 0.0 0.0 0 0?S May07 0:00 ksoftirqd/显示结果中,每条记录都是一个进程,每一个进程都由11个
4、字段来描述,右表对11个字段的含义进行了解释:字段名称说明USER产生进程的用户PID进程ID号(process ID)%CPU该进程占用CPU资源的百分比%MEM该进程占用物理内存(memory)资源的百分比VSZ该进程占用虚拟内存的大小(virtual memory size)(单位KB)RSS该进程常驻内存集的大小(Resident Set Size),单位为KBTTY该进程通过哪个终端产生的(tty1-tty6代表本地字符界面终端,tty7代表本地图像界面终端,pts/0-255代表远程虚拟终端)。如果该值是“?”,则表示该进程是由内核产生的STAT该进程的运行状态(status):“
5、R”表示运行(running);“S”表示睡眠(sleeping);“T”表示停止;“s”表示子进程(Sub process);“+”表示后台运行START该进程的启动时间TIME该进程占用CPU的运算时间COMMAND产生该进程的命令10.1 进程管理510.1.1 进程查看2查看系统运行状态命令top top命令的完整目录是/usr/bin,所有用户都可以使用,其功能是查看系统运行状态。命令格式:rootlocalhost#top 选项 选项说明:-d 指定top命令几秒钟更新一次执行结果,默认值是3秒。在top命令的交互模式下,可以执行如下命令:?或h 显示交互帮助信息。P 按CPU使用
6、率排序,这也是缺省值。M 按内存使用率排序。N 按PID排序。q 退出top命令交互模式。例10.2 可用如下命令查看系统运行状态:rootlocalhost#top 执行结果:top-10:44:25 up 20 min,2 users,load average:0.00,0.00,0.00Tasks:72 total,1 running,71 sleeping,0 stopped,0 zombieCpu(s):0.0%us,0.0%sy,0.0%ni,100.0%id,0.0%wa,0.0%hi,0.0%si,0.0%stMem:618888k total,148284k used,470
7、604k free,22428k buffersSwap:1245176k total,0k used,1245176k free,38920k cached PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+COMMAND 7 root 20 0 0 0 0 S 0.3 0.0 0:00.35 events/0 1 root 20 0 19232 1500 1224 S 0.0 0.2 0:01.12 init top命令的运行结果包含了丰富的系统状态信息,现结合上述示例进行如下解释:10.1 进程管理610.1.1 进程查看2查看系统运行状态命令top
8、前5行是对系统状态的整体描述,可以看出,系统状态的最近一次更新(默认每3秒更新一次)时间是10:44:25,系统已持续运行了20分钟(up 20 min),目前有两个用户登录系统(2 users),系统在1分钟、5分钟、15分钟前的平均负载均为0.00(load average:0.00,0.00,0.00),平均负载越小越好,一般认为平均负载小于1时,系统负载比较小,大于1时,认为系统已超负荷运行,当然,这与服务器CPU的内核数有关,四核的CPU该值不超过4是正常的,八核的CPU该值不超过8是正常的,以此类推。从第二行可以看出,目前共有72个进程,1个在运行,71个处于睡眠,0个停止运行,0
9、个僵尸进程。如果僵尸进程数不为0,那么可能是出现如下情况,一种情况是服务正在停止而没有完全停止,这种情况等服务停止后问题就会自然消失,另一种情况是僵尸进程数不为0,这时就需要分析情况,做出处理。第三行是CPU状态信息,可以看出用户模式(user)占用的CPU百分比为0.0%(0.0%us),系统模式(system)占用的CPU百分比为0.0%(0.0%sy),改变优先级的用户进程占用的CPU百分比为0.0%(0.0%ni),CPU空闲(idle)时间比为100.0%(100.0%id),等待I/O(wait)的进程占用CPU百分比为0.0%(0.0%wa),硬中断(Hard interrupt
10、ion)请求服务占用CPU百分比为0.0%(0.0%hi),软中断(Soft interruption)请求服务占用的CPU百分比为0.0%(0.0%si,),当有虚拟机时,虚拟CPU等待实际CPU的时间(steal time)百分比为0.0%(0.0%st)。第四行是物理内存信息,可以看出物理内存总容量是618888k,已经使用了148284k,空闲内存470604k,作为缓冲的内存容量为22428k。第五行是交换分区(swap)信息,可以看出交换分区总容量为1245176k,已使用0k,空闲1245176k,用于缓存的交换分区为38920k。接下来的信息与ps命令显示的信息类似。注意:杀死
11、进程前,先正常停止服务。10.1 进程管理710.1.1 进程查看3按树状结构查看进程命令 pstree pstree命令的完整路径是/usr/bin,所有用户都可以使用,其功能是以树形结构显示进程信息。命令格式:rootlocalhost#pstree 选项 选项说明:-p 显示进程PID-u 显示进程所属用户 该命令可以以树状结构显示进程间的父子关系,以及父进程的子进程个数,进程ID和发起进程的用户。1kill命令 kill命令的完整目录是/bin,所有用户都可以使用,其功能是用于查看进程的信号或终止进程。查看进程信号时使用如下命令格式:rootlocalhost#kill l 该命令可以
12、列出信号的编号和名称,下表对常用的几种进程信号的含义进行了详细说明。10.1.2 终止进程信号编号信号名称含 义1SIGHUP该信号让进程立即关闭,然后重新读取配置文件后重启9SIGKILL立即结束进程,本信号不能被阻止、或略,一般用于强制终止进程15SIGTERM该信号正常结束进程,是kill命令的缺省信号。但是,当进程出现异常时,该信号无法正常结束进程,需要用9号信号强制结束进程。10.1 进程管理810.1.2 终止进程 终止进程时使用如下命令格式:rootlocalhost#kill-1|-9|-15 进程ID 选项说明:命令中的选项“-1”,“-9”和“-15”的功能如上表所述。如果
13、不加任何选项就是正常结束进程。如果某个子进程被终止后需要重启,则需要通过重启父进程,来重启子进程,当终止父进程时,父进程的所有子进程全部被终止。例10.3 终止vim进程。第一步:用ps名查看vi进程,获得vi进程的PID:rootlocalhost#ps aux|grep vi 第二步:终止进程rootlocalhost#kill-9 20072killall命令 kilall命令的完整目录是/bin,所有用户都可以使用,其功能是通过进程名来终止进程。进程名相同的进程全部会终止 命令格式:rootlocalhost#killall 选项 信号编号 进程名 选项说明:-i 交互式,询问是否要终
14、止某个进程-I 忽略进程名大小写 其中的“信号编号”与kill命令中的信号编号功能相同。例10.4 可用如下命令终止http进程(名称为http的进程、包括子进程会全部终止)rootlocalhost#killall i http10.1 进程管理910.1.2 终止进程3pkill命令 pkill命令与killall类似,通过进程名来终止进程,不同的是,pkill可以按照终端号强迫用户退出系统。命令格式:rootlocalhost#pkill 选项 信号编号 进程名 选项说明:-t 按照终端号踢出用户 例10.5 强制某在线用户退出系统。第一步:查看系统当前已登录的用户:rootlocalh
15、os#w 执行结果:USER TTY FROM LOGIN IDLE JCPU PCPU WHATroot tty1 -Tue10 9:05 0.10s 0.10s-bashroot pts/0 192.168.250.101 Tue14 0.00s 0.05s 0.00s w 可以看出系统在线用户有两个:一个是通过tty1登录,一个是通过pts/0登录。第二步:按终端号强制用户退出系统:(假设使终端号为tty1的root用户退出系统)rootlocalhost#pkill-9-t tty1 然后执行w命令:rootlocalhos#w 执行结果:USER TTY FROM LOGIN IDL
16、E JCPU PCPU WHATroot pts/0 192.168.250.101 Tue14 0.00s 0.06s 0.00s w 就会发现通过tty1登录的用户root就不在线了,该用户需要重新登录,才能进入系统。10.2 工作任务管理与系统资源监控1010.2.1 工作任务管理1将进程转入后台运行 类似与Windows系统中,Linux系统中也可以使前台运行的程序转入后台运行。Linux中有两种方法可以将前台程序转入后台:一是在输入执行命令时,加“&”符号;如“tar vczf temp.sh.tar.gz/temp&”二是在执行命令的过程中,按“Ctrl+z”组合件。不同的是:用第
17、一种方法转入后台后,程序还在运行,而用第二种方法转入后台后,程序是暂停的。2查看后台运行进程 jobs命令用于查看后台工作。命令格式:rootlocalhost#jobs-l 选项说明:-l 显示进程的PID 例10.5 可用如下命令显示当前系统中后台运行的进程:rootlocalhost#jobs l 执行结果:1 2151 Stopped(tty output)vi aaa (wd:/mnt/cdrom/Packages)2-2153 Stopped tar-zcvf etc.tar.gz/etc3+2155 Stopped vi whatday 每一条记录表示后台运行的一个进程,可以看出
18、,后台有三个进程,而且都处于停止状态;每条记录行首的数字代表后台工作的工作号,最大的工作号代表最后转入后台的进程,最小的工作号代表最先转入后台的进程,标有“+”的进程,表示在恢复到前台时具有最高优先级,其次是标有“-”的进程10.2 工作任务管理与系统资源监控1110.2.1 工作任务管理3将后台工作恢复到前台执行 fg命令用于将后台暂停的进程恢复前台运行。命令格式:rootlocalhost#fg 工作号 缺省工作号时,恢复优先级最高的进程4将前台工作恢复到后台运行 bg命令用于将前台运行的工作转入后台运行。命令格式:rootlocalhost#bg 工作号 缺省工作号时,恢复优先级最高的进
19、程。需要注意的是只有与用户没有交互的作业才能恢复后台运行,与用户有交互的作业是不能恢复后台运行的(即使转入后台也处于停止状态)。例10.6 可用如下命令将例10.5中的2号工作恢复后台运行:rootlocalhost#bg 2#2号工作与用户没有交互,所以可以后台运行10.2 工作任务管理与系统资源监控1210.2.2 监控系统资源使用情况1监控系统全部资源使用情况命令vmstat vmstat命令的完整路径是/usr/bin,所有用户都可以使用,其功能是监控系统资源使用情况。命令格式:rootlocalhost#vmstat 刷新延时 刷新次数 例10.7 可用如下命令监控三次系统使用情况,
20、每15秒刷新一次。rootlocalhost#vmstat 15 3 显示如下结果:procs-memory-swap-io-system-cpu-r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 335560 32500 151192 0 0 2 1 8 8 0 0 100 0 0 0 0 0 335552 32508 151212 0 0 0 1 7 7 0 0 100 0 0 0 0 0 335552 32508 151212 0 0 0 1 6 7 0 0 100 0 0 显示结果分析:三条记录分别是3次监控
21、结果,每次刷新的时间间隔为15秒,监控到的信息非常多,通常,我们主要关注内存(memory)使用情况和CPU的空闲(id)时间。10.2 工作任务管理与系统资源监控1310.2.2 监控系统资源使用情况2检测内核信息命令dmesg dmesg命令的完整目录是/bin,所有用户都可以使用。用于查看开机时的内核检测信息。命令格式:rootlocalhost#dmesg 例10.8 可用如下命令查看开机检测时的CPU信息和网卡信息:分析:dmesg命令的显示结果的信息量非常庞大,所以需要对感兴趣的信息进行过滤,依次执行下面两条命令,参看CPU和网卡的信息:rootlocalhost#dmesg|gr
22、ep CPUrootlocalhost#dmesg|grep eth0 3查看内存使用状态的命令free free命令的完整路径是/bin,所有用户都可以使用,用于查看内存使用情况。命令格式:rootlocalhost#free 选项 选项说明:-b 以字节为单位存储容量-k 以KB为单位存储容量,这也是缺省显示模式-m 以MB为单位存储容量-g 以GB为单位存储容量 10.2 工作任务管理与系统资源监控1410.2.2 监控系统资源使用情况 例10.9 可用如下命令查看系统内存使用情况:(以MB为单位)rootlocalhost#free m 结果显示如下:total used free s
23、hared buffers cachedMem:604 277 327 0 32 147-/+buffers/cache:97 506Swap:1215 0 1215 考察第一行和第二行的数据,第三行关于交换分区(Swap)使用情况我们不做解释。我们假设用“1”和“2”分别表示第一行和第二行,用列标题表示列号,做如下解释:total1:表示物理内存总容量;used1:表示分配给buffers和cached使用的内存总量;free1:表示未被分配使用的内存;shared1:表示共享内存,一般不会用到;buffers1:已分配但未使用buffers;cached1:已分配但未使用的cached;u
24、sed2:已实际使用的内存总量,即实际使用的buffers和cached总量;free2:系统当前实际可使用的内存。可以看出:total1=used1+free1=used2+free2used1=used2+buffers1+cached1free2=free1+buffers1+cached1 10.2 工作任务管理与系统资源监控1510.2.2 监控系统资源使用情况4查看CPU信息 文件/proc/cpuinfo中记录了CPU的详细信息,服务器开机时将检测到的CPU信息写入该文件,服务器关机或断电时该文件信息丢失,所以/proc/cpuinfo中的信息是动态更新的。该文件信息量很大,我们
25、主要通过该文件查看CPU自身的性能参数。可以通过如下命令查看该文件rootlocalhost#cat/proc/cpuinfo5uptime命令 uptime命令的完整目录是/usr/bin/,所有用户都可以使用,其功能是查看系统的运行时间、在线用户数和平均负载等信息,与top命令显示的第一行信息相同,只不过top显示的信息是动态更新的。命令格式:rootlocalhost#uptime6查看内核相关信息的命令uname uname命令的完整目录是/bin,所有用户都可以执行,其功能是查看内核相关信息,主要用于查看内核版本信息。命令格式:rootlocalhost#uname 选项 选项说明:
26、-a 查看系统所有相关信息;-r 查看内核版本信息;-s 查看内核名称,这也是缺省选项。10.2 工作任务管理与系统资源监控1610.2.2 监控系统资源使用情况7查看当前操作系统的位数 Linux没有提供查看操作系统位数的专用命令,但file命令可以查看文件类型,在用该命令来查看任何一个系统外部命令(如ls、tar、mkdir等)的文件类型时,显示信息中包含了当前系统的位数。例10.9 可用如下命令查看当前操作系统的位数:rootlocalhost file/usr/whereis 显示结果为:/usr/bin/whereis:ELF 64-bit LSB executable,x86-64
27、,version 1(SYSV),dynamically linked(uses shared libs),for GNU/Linux 2.6.18,stripped 从“ELF 64-bit”可知,当前操作系统的位数为64位。8查看进程打开或使用的文件信息 lsof命令的完整目录是/usr/sbin,只有root用户有执行权限,其功能是按某种方式查看某个进程所打开的文件。命令格式:rootlocalhost#lsof 选项 选项说明:-c 显示以指定字符串开头的进程打开的文件-u 显示指定用户的进程打开的文件-p 显示指定PID进程打开的文件 10.2 工作任务管理与系统资源监控1710.2
28、.2 监控系统资源使用情况9查看当前系统的发行版本 Linux系统有很多发行版本,如Ubuntu、CentOS、Redhat等,lsb_release命令用于查看当前Linux系统的发行版本。命令格式:rootlocalhost#lsb_release a 也可以通过如下命令达到相同的目的:rootlocalhost#cat/etc/issue 在Linux系统第一次执行lsb_release a命令时会报“命令找不到”的错误。这样我们一般都尝试yum y install lsb_release命令来安装lsb_release命令,不幸的是:系统提示“No package lsb_releas
29、e available.Error:Nothing to do”。下面解决此类问题:第一步:执行下面命令,通过目标命令名称(lsb_release),查找lsb_release命令所属的安装包:rootlocalhost#yum provides*/lsb_release 显示如下结果:redhat-lsb-core-4.0-7.el6.centos.i686:LSB base libraries support for CentOS 告诉我们lsb_release命令的安装包是redhat-lsb-core-4.0-7.el6.centos.i686。第二步,安装lsb_release命令r
30、ootlocalhost#yum install redhat-lsb-core-4.0-7.el6.centos.i686 这样就成果安装了lsb_release命令了。10.3 系统定时任务1810.3.1 crond服务管理与访问控制 系统定时任务就是让服务器在特定的时候自动完成指定的任务。crond是定时服务管理工具,默认是开机自启动的,如果需要手工启动,可以执行下面的命令:rootlocalhost#service crond restart 执行下面的命令查看crond服务的开启状态:rootlocalhost#chkconfig-list|grep crond 执行结果:cron
31、d 0:off 1:off 2:on 3:on 4:on 5:on 6:off 可以看出,crond服务在2345运行等级下都是开启的。执行下面的命令查看系统运行等级:rootlocalhost#cat/etc/inittab 10.3.2 crontab设置 crontab命令的完整目录是/usr/bin,所有用户都可以执行,其功能是设置crontab表,但只能显示当前用户的定时任务。命令格式:rootlocalhost#crontab 选项 选项说明:-e 编辑crontab定时任务表-l 查看crontab定时任务列表-r 删除当前用户crontab表中的所有任务10.3 系统定时任务1
32、910.3.3 编辑定时任务 第一步:执行下列命令,进入crontab定时任务编辑器:rootlocalhost#crontab-e 第二步:编辑定时任务条目:定时任务编辑格式为:*要执行的命令。下表解释了五个“*”号的含义:举例说明:u 45 16*:表示每天16时45分;u 0 14*1:表示每周一的14点整;u 0 6 1,15*:表示每月1日和15日的6点整;u 20 12*1-5:表示周一至周五的12点20分;u*/10 4*:表示每天凌晨4点每隔10分钟执行一次;u 0 0 1,15*1:表示没月的1号、15号、星期一的0点整。从示例中不难看出,如果某位为“*”,则表示该位所在时间
33、单位的任何时间,“,”表示同一时间单位的时间列表,“-”表示同一时间单位的连续时间,“*/n”表示每隔n个时间单位。第三步:保存退出。星号位置含义取值第一个星号一小时中的第几分钟0-59第二个星号一天中的第几小时0-23第三个星号一个月中的第几天1-31第四个星号一年中的第几月1-12第五个星号一周中的星期几0-7(0和7都表示周日)10.3 系统定时任务2010.3.3 编辑定时任务 例10.10 编写定时任务,每各3分钟向/temp/aaa文件中写入一次“hello world!”字符串。第一步:打开crontab的vi编辑器:rootlocalhost#crontab e 第二步:在打开
34、的编辑中输入如下内容:*/3*/bin/echo hello world!/temp/aaa 第三步:保存退出。例10.11 每月的1号、10号、20号的凌晨6点,运行一次/temp/backup_studentinfo.sh脚本。类似于例10.10,打开crontab的vi编辑器,写入如下定时任务,然后保存退出即可:0 6 1,10,20*/temp/backup_studentinfo.sh 例10.12 可用如下命令查看系统定时任务列表有哪些定时任务;rootlocalhost#crontab l 执行结果为:*/3*/bin/echo hello world!/temp/aaa0 5 1,10,20*/temp/backup_studentinfo.sh 可以看出系统目前有两个定时任务。如果有不需要执行的定时任务,则执行“crontab e”命令,进入编辑模式,删除相应定时任务条目即可。若要删除全部定时任务,用命令“crontab-r”删除。2122