Linux下的进程的管理
Linux操作系统包括如下三种不同类型的进程,每种进程都有其自己的特点和属性:
交互进程:由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
批处理进程:这种进程和终端没有联系,是一个进程序列。
守护进程:Linux系统启动时启动的进程,并在后台运行。
上述三种进程各有各的作用,使用场合也有所不同。
Linux系统提供了who、w、ps和top等察看进程信息的系统调用,通过结合使用这些系统调用,我们可以清晰地了解进程的运行状态以及存活情况,从而采取相应的措施,来确保Linux系统的安全。
1、who命令
该命令主要用于查看当前在线上的用户情况。系统管理员可以使用who命令监视每个登录的用户此时此刻的所作所为:
# who root pts/1 2010-02-21 15:56 (:0.0)
2、w命令
该命令也用于显示登录到系统的用户情况,但是与who不同的是,w命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,w命令是who命令的一个增强版:
# w 15:56:44 up 38 min, 1 user, load average: 0.56, 0.15, 0.12 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 :0.0 15:56 0.00s 0.19s 0.05s w
3、ps命令
最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。ps命令可以监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,如果需要检测其情况,可以使用ps命令。下面是一个ps命令的例子:
# ps PID TTY TIME CMD 2817 pts/1 00:00:00 bash 2836 pts/1 00:00:00 ps
4、top命令
top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他状况;但是top是一个动态显示过程,可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确地说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。下面是一个top命令的例子:
# top top - 15:58:07 up 39 min, 1 user, load average: 2.09, 0.68, 0.30 Tasks: 112 total, 2 running, 108 sleeping, 0 stopped, 2 zombie Cpu(s): 30.6%us, 25.2%sy, 0.0%ni, 41.2%id, 0.3%wa, 2.7%hi, 0.0%si, 0.0%st Mem: 485736k total, 477828k used, 7908k free, 31252k buffers Swap: 1285160k total, 0k used, 1285160k free, 291192k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2502 root 15 0 36680 10m 5776 S 40.0 2.2 0:54.26 Xorg 2814 root 15 0 127m 16m 10m S 3.0 3.5 0:03.62 gnome-terminal 2616 root 15 0 97356 14m 10m S 2.6 3.1 0:02.43 gnome-panel 2609 root 15 0 38660 10m 7544 S 2.0 2.1 0:01.57 metacity 2640 root 15 0 96276 13m 9448 S 2.0 2.7 0:01.46 wnck-applet 2597 root 15 0 33916 8144 6768 S 1.0 1.7 0:01.32 gnome-settings- 2618 root 15 0 133m 20m 14m S 1.0 4.4 0:04.66 nautilus 2709 root 15 0 16396 3488 2736 S 0.7 0.7 0:02.72 gnome-screensav 2837 root 15 0 2160 1008 788 R 0.7 0.2 0:00.31 top 2855 root 15 0 106m 22m 14m S 0.7 4.8 0:01.87 gedit 2035 root 18 0 33180 1276 536 S 0.3 0.3 0:01.51 pcscd 2076 root 21 0 9336 1108 856 S 0.3 0.2 0:00.35 automount 2313 root 18 0 1920 624 544 S 0.3 0.1 0:03.46 hald-addon-stor 2665 root 15 0 2528 1156 948 S 0.3 0.2 0:00.26 gam_server 2703 root 15 0 64020 24m 14m S 0.3 5.3 0:02.39 /usr/bin/sealer 2713 root 15 0 49500 6528 3484 S 0.3 1.3 0:00.31 scim-panel-gtk 1 root 15 0 2036 640 548 S 0.0 0.1 0:02.16 init 2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 5 root 10 -5 0 0 0 S 0.0 0.0 0:00.06 events/0 6 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 khelper 7 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 kthread 10 root 10 -5 0 0 0 S 0.0 0.0 0:00.26 kblockd/0
以上介绍的是目前在Linux下使用得最常见的进程状况查看工具,它们是随Linux套件发行的,安装好系统之后,用户就可以使用。当然,随着开源的不断发展,相信将会有更多的该方面的工具出现,以方便用户选择和使用。
进程的管理
静态的查看 ps
动态的查看 top
对进程的处理
调整一个新的进程的优先级 0-99 内核
nice 越小优先级越高
nice -n (-20 ~ 19) vim & 后台执行
renice 数值 pid
调整正在执行的nice值,进而影响pri值
进程的状态
1:运行状态 running ,runable R
2:sleep 睡眠状态 可中断睡眠 不可中断的进程 S
3: 停止态 T
4:僵尸态 Z
ps aux
ps tree |less
ps ps -l 查看当前终端的进程
ps -t 终端标识 tty1
ps -u 用户
ps -ef aux 所有的进程
ps aux |grep
pgrep
ps -eo uid,gid,cmd
动态显示 例子:watch -n 1 ‘ps -aux |grep cp’
kill -l
pkill 名字 先搜索程序在杀死 pkill -1 httpd trap 'echo haha' SIGINT
1) SIGHUP不需要重启,既可以更新xinetd,针对服务 2) SIGINT 扑捉终断信息 ctrl+c
9) SIGKILL 强制终止,会造成数据的丢失 15) SIGTERM 正常终止,数据不会丢失