进程管理

Linux进程管理

主要任务:

判断服务器健康状态

查看运行进程

强行终止进程

        

进程和程序的区别

         一动一静

父进程与子进程

         老子管儿子,僵尸和孤儿.

前台进程和后台进程

 

         前台进程

                   例:ping 127.0.0.1 >>ping.result

         在Shell提示处打投入命令后,创建一个子进程,运行命令,Shell等待它的

         结束,然后才能返回给用户提示符。这条命令在前台运行,用户在它完成

         之前不能执行另一个命令

        

         后台进程

                   例:ping 127.0.0.1 >>ping.result &  将结果保存到ping.result文件

         在Shell提示处打入一个命令,若后随一个&,Shell创建子进程运行此命令,

         但不等待命令退出,而是直接返回到对用户给出提示。

         后台进程必须是非交互式的

        

 

常用命令

w

         09:49:34  up 4 min,  2 users,  load average: 0.42, 0.81, 0.38

         服务器时间 开机时长  登录用户数  平均负载:1、5、15分钟(一般0.8以下,说明较轻)

         USER         登录用户名

         TTY            在哪登录   :0表示XWindow登录

         FROM       来自哪里         :0.0 表示来自于XWindow    - 表示本地命令行登录

         LOGIN@  什么时候登录的

         IDLE          空闲时间

         JCPU          该终端消耗的CPU时间

         PCPU         正在执行程序消耗的时间

         WHAT       正在做什么

ps查看进程信息  (process status)

         -a      显示终端下的进程(不含其他用户)

         -u      显示用户和启动时间

         -x      表示没有控制终端的进程

         -e      显示所有进程,包括没有控制终端的进程

         -l       长格式显示

        

         应用实例

         ps     显示当前用户自己的进程

         ps -l  查看隶属于自己的进程详细信息

         ps -uU 用户名  查看系统中指定用户执行的进程

         ps -le  或 -aux        查看所有用户执行的进程详细信息   用得很多 –aux可以查看到apache进程是哪个用户

                   通常结合grep使用   如  ps -le | prep httpd  查看apache进程是否启动

                   /etc/rc.d/init.d/httpd status    通过启动脚本,也能查看进程是否已启动

ps -le --sort pid          可按pid排序

         ps –aux | grep jack  查看jack用户的进程

         pstree | more 树状结构显示进程

 

常见选项的含义

PID            进程号 (process id)        1为init 系统第一个进程

         PPID                   父进程的进程号(parent process id)

         TTY            启动的终端     tty1-7本地      1-6字符 7图形      pts/n远程

         STAT          进程当前状态:  S休眠 D不可中断的休眠  R运行  Z僵死  T停止

         NI              进程优先级

         TIME         进程自启动以来占用CPU的总时间

         COM/COMMAND    进程的命令名

         USER         用户名  (ps -uU 用户名)

         %CPU        占用CPU时间和总时间的百分比

         %MEM     占用内存与系统内存的百分比

         start                   进程触发时间

         time          占用cpu时间

         command         进程本身

 

kill    杀死一个进程

         为什么要杀死进程?

  1. 该进程占用了过多的CPU时间
  2. 该进程锁住的一个终端,使其它前台进程无法运行
  3. 运行时间过长,但没有预期的效果 
  4. 产生了过多的到屏幕或磁盘文件输出 例如find / -name "*"
  5. 无法正常退出

 

关闭进程         kill 进程号(PID)

         apache的httpd有很多个,我们关闭了父进程,子进程将自动关闭

         或调用/etc/rc.d/init.d/httpd stop

kill的信号        kill -l可以列出

kill -9 进程号 (强行关闭)

                   kill -1 进程号 (重启进程)

                   也可以调用/etc/rc.d/init.d/httpd restart重启apache进程

         关闭图形程序         xkill  鼠标按哪儿,将关闭哪儿 点右键取消

         结束所有同名进程         killall -9进程名称 (如killall httpd)

 

以p开头的命令

pgrep httpd 查看httpd进程的所有pid

重启apache进程:kill -1 `pgrep httpd`

pkill httpd 直接关闭httpd进程,不用查pid了

pkill  -9 -t 终端号   提出登录用户

 

 

ls /proc

         存放的是进程信息,数字是以pid为目录名,信息存放在目录中

         cat /proc/cpuinfo 查看cpu信息

         cat /proc/meminfo 内存信息

         cat /proc/partitions 分区信息

 

优先级命令

nice

         指定程序进行的优先级

         格式nice n myprogram

         例nice --5 /etc/rc.d/init.d/httpd start  (默认是0,指定为-5)

         ps -le | grep httpd        # NI进程优先级

renice

         改变一个正在进行的进程的优先级

         例renice n pid

优先级取值范围为(-20,19)默认是0  值越小,权越大

ps -le 中,NI就是优先级

让进程在用户退出登录后仍旧继续执行

格式nohup program &

nohup find / -name init* > /root/find.init.20130501 &

 

把进程放到后台运行 在后面加 &

         ping 127.0.0.1 >>/test/ping.result &

         另一个终端去查看:

         tail -f /test/ping.result

进程的挂起和终止

         挂起         ctrl+z        暂停          # ping 127.0.0.1 然后按ctrl+z

         终止         ctrl+c                                    # ping 127.0.0.1 然后按ctrl+c

查看被挂起或在后台执行的进程

         jobs

进程的恢复

         fg 序号             恢复到前右继续运行

         bg序号             恢复到后台继续运行  

如果是ping命令,在后台运行,也会将信息输出到显示器,

但不影响我们使用其它命令,例如执行ls试试

如果在前台运行,我们无法执行其它命令,需要等这个进程结束后,才可以做别的事情

(3个命令+符号&+快捷键ctrl+z)

 

top命令

         上面的信息,类似于w显示的信息

         第一行: 系统当前时间     系统持续时间     登录用户     1,5,15分钟之前的平均负载

    第二行:进程总数

    第三行:CPU占用率        %id     空闲百分比

    第四行:内存使用:   总共    使用    空闲    缓存

    第五行:swap使用

 

         下面类似于ps –le信息

         内置命令d 然后输入5,将改为每5秒刷新一次

         内置命令c 显示整个命令行,而不仅仅显示命令名   command

         u 用户名         只显示某用户的信息,管理员可以查看某个用户在做什么,

         k                          提示输入pid 关闭进程

                                     可以在u查看某个用户时,kill掉用户的bash进程,

将用户踢下线,提示输入 kill的信号,例如9强制关闭

         r                          调优先级

         M                        内存排序

         P                          CPU排序

         q                          退出

         h or ?                  帮助信息

 

 

进程处理方式

         standalone       独立运行

         xinetd                进程托管

         atd、crond      计划任务

        

         standalone       独立运行

                   如apache、mysql的服务,启动后,进程会一直在系统中,

                   占用CPU和内存资源,等待或处理客户端的请求

                   占用系统资源多,但响应速度快        

         xinetd       进程托管

                   有些服务,用得很少,没必要独立运行 例如telnet服务

                   ls /etc/xinetd.d 查看这个目录中有很多脚本

                   服务不启动,由xinetd监听这个端口,有客户端访问,则启动进程,等服务完成后,结束进程

                   响应速度慢一点,但减少了系统资源占用

 

         atd、crond      计划任务

                   每隔一分钟,从休眠中醒来一次,所以,计划任务不能精确到秒。

 

 

服务管理

 

#chkconfig  --list

         运行级别:0-6

                 0   关机

                 1   单用户模式

                 2   不完全多用户,不包含NFS服务

                 3   完全多用户   字符界面

                 4   未分配

                 5   图形界面

                 6   重启

 

                 init  0 关机    init 5  startx init 3

                 init  6 重启

 

         runlevel            查询系统当前运行级别

 

 

                 vi  /etc/inittab

                 id:3:initdefault:       定义系统默认运行级别

 

列出在每一种运行级别下服务是启动还是关闭

chkconfig  --list | grep atd  查看计划任务服务

 

         启动服务

        

         RPM包安装的服务:

         /etc/rc.d/init.d/服务名   start|stop|restart|status

                   例/etc/rc.d/init.d/httpd  start

         service   服务名   start|stop|restart|status

                   例service network start

         自启动

         vi  /etc/rc.local                                   ---->/etc/rc.d/rc.local

                   例/etc/rc.d/init.d/httpd  start

         ntsysv  (setup中会调用此工具)

                            所有系统默认安装服务都可以使用ntsysv命令进行自启动管理

         源码包安装的服务:

                   绝对路径启动

                            /usr/local/apache2/bin/apachectl  start

 

                   自启动

                            vi /etc/rc.local

                            /usr/local/apache2/bin/apachectl  start

                                                                                                   

 

posted @ 2015-07-01 11:05  bodhicitta  阅读(165)  评论(0)    收藏  举报