Linux系统管理-进程管理
来源:互联网 发布:通化师范学院教务网络 编辑:程序博客网 时间:2024/06/05 02:04
1. 进程简介
进程就是正在运行的一个程序或命令。每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
任何程序只要在运行,就会产生至少一个进程。对于比较复杂的程序,比如apache,运行时,会产生多个进程。
命令产生的进程一般都是临时的,因为大多数命令运行的时间很短,命令结束后,进程就自动终止了。
2. 进程管理的作用
查看服务器的健康状态(最主要的作用)。
主要查看CPU的使用率、内存的占用情况。Windows系统中通过任务管理器查看计算机的健康状态。
查看系统中所有的进程。
查看所有的进程(包括正常进程和异常进程)。查看它们对系统资源的占用情况。如果是进程出现了异常,就找出原因,并尽快恢复正常。如果是病毒进程,不要直接杀死,而是找到它的本体所在,根除本体。
终止进程。
优先使用正常终止(关闭)进程。只有当无法正常终止进程时,才考虑使用强制终止进程的方式。
当你有多台服务器需要进行管理时 ,可以考虑搭建监控服务器。监控服务器的好处是功能更强大,管理效率更高。但它操作起来远比Linux本身的管理命令复杂。
2.1 查看系统中的所有进程
查看进程的命令为ps。最常见的用法为 ps aux
。
其中,a代表前台进程,x代表后台进程,u代表进程的发起者。
ps aux查看系统中所有的进程,使用BSD(Unix)操作系统格式。说明:由于使用的是Unix格式,所以aux前不能加短横线;否则,输出结果的第一行会有报错信息,但几乎没有影响。
上述命令的部分输出信息,如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 2904 1416 ? Ss Jan31 0:01 /sbin/initroot 2 0.0 0.0 0 0 ? S Jan31 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S Jan31 0:00 [migration/0]···root 1140 0.0 0.1 7188 1312 ? Ss Jan31 0:02 crondroot 1153 0.0 0.1 3988 1988 ? Ss Jan31 0:00 login -- root root 1155 0.0 0.0 2012 500 tty2 Ss+ Jan31 0:00 /sbin/mingetty /dev/tty2root 1157 0.0 0.0 2012 496 tty3 Ss+ Jan31 0:00 /sbin/mingetty /dev/tty3root 1159 0.0 0.0 2012 500 tty4 Ss+ Jan31 0:00 /sbin/mingetty /dev/tty4root 1161 0.0 0.0 2012 504 tty5 Ss+ Jan31 0:00 /sbin/mingetty /dev/tty5root 1168 0.0 0.0 2012 500 tty6 Ss+ Jan31 0:00 /sbin/mingetty /dev/tty6root 1169 0.0 0.1 3364 1812 ? S< Jan31 0:00 /sbin/udevd -droot 1170 0.0 0.1 3364 1812 ? S< Jan31 0:00 /sbin/udevd -droot 2110 0.0 0.3 22740 3092 ? Sl Jan31 0:00 /usr/sbin/console-kit-daemon --no-daemonroot 2177 0.0 0.1 8020 1736 tty1 Ss+ Jan31 0:00 -bashpostfix 4287 0.0 0.2 13080 2928 ? S 16:23 0:00 pickup -l -t fifo -uroot 4320 0.0 0.3 12956 3772 ? Ss 16:48 0:00 sshd: root@pts/0 root 4324 0.0 0.1 6876 1716 pts/0 Ss 16:48 0:00 -bashroot 4351 0.0 0.3 11400 3344 ? Ss 16:50 0:00 /usr/sbin/httpdapache 4353 0.0 0.2 11400 2188 ? S 16:50 0:00 /usr/sbin/httpdapache 4354 0.0 0.2 11400 2160 ? S 16:50 0:00 /usr/sbin/httpdapache 4355 0.0 0.2 11400 2160 ? S 16:50 0:00 /usr/sbin/httpdapache 4356 0.0 0.2 11400 2160 ? S 16:50 0:00 /usr/sbin/httpdapache 4357 0.0 0.2 11400 2160 ? S 16:50 0:00 /usr/sbin/httpdapache 4358 0.0 0.2 11400 2160 ? S 16:50 0:00 /usr/sbin/httpdapache 4359 0.0 0.2 11400 2160 ? S 16:50 0:00 /usr/sbin/httpdapache 4360 0.0 0.2 11400 2160 ? S 16:50 0:00 /usr/sbin/httpdroot 4405 2.0 0.1 6552 1064 pts/0 R+ 17:03 0:00 ps aux
共有11列,分别是USER、PID、%CPU、%MEM、VSZ、RSS、TTY、STAT、START、TIME、COMMAND 。说明如下:
- USER:进程的发起者,也就是进程是由哪个用户产生的。
- PID:进程的id,也称作进程号。
- %CPU:进程占用的CPU资源的百分比。
- %MEM:进程占用的物理内存的百分比。
- VSZ:进程占用的虚拟内存的大小,单位KB。
- RSS:进程占用的实际物理内存的大小,单位KB。
- TTY:进程是在哪个终端中运行的。其中tty1到tty7代表本地控制台终端,tty1到tty6是本地的字符界面终端,tty7是本地的图形界面终端。pts/0-255代表虚拟终端(即远程登录终端)。
- STAT:进程的状态。
- START:进程是在什么时间启动的。
- TIME:进程占用CPU的运算时间,值越大,越耗费资源。
- COMMAND:产生进程的命令,也就是进程的全名。
每一行代表一个进程。PID为1的进程是init,它是系统启动的第一个进程,是所有其他进程的父进程。
按住Alt + F1到F6,能够进行本地字符界面终端的切换;如果装了图形界面,可按住Ctrl + Alt + F7,切换到本地图形界面终端(Linux有6个本地字符界面终端,1个本地图形界面终端)。
常见的进程状态有:R 正在运行;S 睡眠状态;T 停止状态;s 包含子进程;+ 位于后台。
ps -le 查看系统中所有的进程,使用Linux标准命令格式。-l代表显示进程的详细信息,-e代表显示所有进程。它和ps aux的输出结果差不多,只不过没有ps aux显示的直观易懂。故用得较少。
说明:查看系统中所有的进程的命令主要是ps aux。
这里,讲一个查看进程树的pstree命令。
格式:pstree [选项]
作用:查看进程树。
选项:
-p 显示所有进程(主进程和子进程)的PID(进程号)。-u 显示进程的所属用户。
常见用法:
[root@localhost ~]# pstreeinit─┬─auditd───{auditd} ├─console-kit-dae───63*[{console-kit-da}] ├─crond ├─dbus-daemon───{dbus-daemon} ├─dhclient ├─httpd───8*[httpd] ├─login───bash ├─master─┬─pickup │ └─qmgr ├─5*[mingetty] ├─rsyslogd───3*[{rsyslogd}] ├─sshd───sshd───bash───pstree └─udevd───2*[udevd]
如上,init进程是所有进程的父进程;同时,对于apache的进程(httpd),有1个主进程和8个子进程。
如果想看到更为详细的进程树信息,可以用:
pstree -p查看所有进程的进程号。
2.2 查看服务器的健康状态
命令格式:top [选项]
选项:
- -d 秒数:指定top命令每隔几秒更新一次。默认是3秒。
在top命令的交互模式中,可以执行的命令主要有:
? 或 h 显示交互模式的帮助信息。P 以CPU占用率排序,默认排序。M 以内存的占用率排序。N 以进程的PID排序。R 切换降序排列和升序排序。默认降序。q 退出。或者用Ctrl+C。
常见用法:
top查看系统的健康状态。会进入交互模式。
交互模式的部分内容如下:
top - 18:30:29 up 1 day, 1:45, 2 users, load average: 0.00, 0.00, 0.00Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombieCpu(s): 0.3%us, 0.0%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%stMem: 1030488k total, 237004k used, 793484k free, 30844k buffersSwap: 1048572k total, 0k used, 1048572k free, 138176k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4527 root 20 0 2676 1120 888 R 0.3 0.1 0:00.61 top 1 root 20 0 2904 1416 1208 S 0.0 0.1 0:01.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
top命令最重要的输出信息在前五行。
第一行是任务队列信息。
top - 18:30:29 up 1 day, 1:45, 2 users, load average: 0.00, 0.00, 0.00
第二行是进程信息。
Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
僵尸进程是指进程正在终止,但还没有终止完全。过一会儿再查看,如果终止完全了就没事;否则,需要手工将其终止。
第三行是CPU信息。
Cpu(s): 0.3%us, 0.0%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
第四行是物理内存信息。
Mem: 1030488k total, 237004k used, 793484k free, 30844k buffers
第五行是交换分区(swap)信息。
Swap: 1048572k total, 0k used, 1048572k free, 138176k cached
对于前五行信息,最主要进行查看的指标有三个:
- 服务器的平均负载
- CPU的空闲率
- 内存(物理内存)的空闲大小
对于第七行及后面的行,它和ps aux的输出结果类似。
注意: top命令本身就比较耗费系统资源,没事的话,就应该退出top交互模式。同样,Windows的任务管理器也比较耗费系统资源。
2.3 终止进程
2.3.1 kill 命令
kill -l 查看所有可用的进程信号。
[root@localhost ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX
如上,共有64个可用的信号。常用的有下面几个:
命令格式: kill [-信号] 进程的PID
作用:主要是按照进程号终止某个进程。
实际上,kill命令可以对一个进程进行正常终止、强制终止、暂停、恢复、重启等操作。
说明:使用信号的代号或者信号的名称都行。
kill 命令的默认信号是SIGTERM(15),表示正常终止进程。
示例,以apache的进程为例,已知它的主进程的PID是4351。
kill 4351正常关闭apache。等同于 kill -15 4351 和 kill -SIGTERM 5351kill -1 4351 重启apache。等同于 kill -SIGHUP 4351kill -9 4351强制关闭apache。此命令最好少用,一般只在进程无法正常终止的情况下使用。
注意:进程号并不是固定不变的,当系统重启后,进程号会发生变化。
说明:程序运行时,可能产生多个进程。比如apache运行时,会产生一个主进程httpd和多个子进程httpd,它们的进程号各不相同。想要关闭apache,需要终止主进程。
2.3.2 killall 命令
命令格式:killall [-信号] [选项] 进程名
作用:按照进程名终止一类进程。
选项:
-i 交互式,会询问是否要杀死某个进程。默认不询问。-I 忽略进程名的大小写。
killall命令中信号的使用方式和kill命令中信号的使用方式相同。
示例:关闭apache。
killall httpd正常关闭apache。killall -15 httpd正常关闭apache。killall -1 httpd重启apache。(前提是apache已经运行,否则进程就不存在。)killall -9 httpd强制关闭apache。此命令最好少用,只有当进程无法正常终止时,才考虑使用强制终止。
2.3.3 pkill命令
命令格式:pkill [-信号] [选项] 进程名
作用:按照进程名终止一类进程(这和killall一样),或者,按照终端号踢出用户。
选项:
-t:按照终端号踢出用户。
示例:关闭apache。
pkill httpd正常关闭apache。pkill -15 httpd正常关闭apache。pkill -1 httpd重启apache。(前提是apache已经运行,否则进程就不存在。)pkill -9 httpd强制关闭apache。此命令最好少用,只有当进程无法正常终止时,才考虑使用强制终止。
示例:按照终端号踢出用户。
可用w命令,查看系统中已经登录的用户。
[root@localhost ~]# w 22:39:05 up 1 day, 5:54, 3 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 - Tue21 3:56m 0.05s 0.05s -bashroot pts/0 192.168.200.1 16:48 3:19 0.24s 0.24s -bashroot pts/1 192.168.200.1 22:34 0.00s 0.04s 0.00s w
再来踢出用户。
pkill -9 -t pts/1强制杀死从pts/1终端登录的进程,也就是强制踢出该用户。等同于 pkill -SIGKILL -t pts/1
- Linux系统管理-进程管理
- Linux系统管理-进程管理
- Linux 系统管理-进程管理
- Linux系统管理—进程管理
- linux系统管理命令-进程与作业管理
- Linux系统管理-终止进程/工作管理
- Linux系统管理:Linux要精于管理之用进程管理
- linux 进程管理,内存管理,文件系统,系统管理,网络操作概述
- 【Linux学习】Linux系统管理1—进程管理
- Linux 系统管理之进程管理:目的、方法、命令
- Linux系统管理---进程管理(查看进程、终止进程、更改进程优先级)
- linux 系统管理 - 用户管理
- Linux系统管理-工作管理
- Linux 系统管理-后台管理
- Linux 系统管理 (进程管理、工作管理、系统资源查看、系统定时任务)
- Linux系统管理之 ssh 管理
- linux系统管理命令-磁盘管理
- linux系统管理命令-文件系统管理
- servlet request getHeader("x-forwarded-for") 获取真实IP
- 单选、双选控件的取值和赋值
- JMS简介与ActiveMQ实战
- 比较全的idea快捷键
- ubuntu 中 eclipse (Neon版) 的菜单栏 显示问题
- Linux系统管理-进程管理
- 小数个数操控
- Android Studio快捷键&&常用技巧
- Matlab常用技巧
- 使用adb命令通过IP地址连接手机
- [机器学习入门] 李弘毅机器学习笔记-16 (Unsupervised Learning: Neighbor Embedding;无监督学习:邻域嵌套)
- UVa 10264
- JDK下载与安装教程
- JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?