linux 进程管理

Linux进程管理

序:

主要学习任务:

判断服务器健康状态

查看运行进程

强行终止进程

        

进程和程序的区别

         一动一静,对应关系-多对多

父进程与子进程

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

前台进程和后台进程

 

         前台进程

                  例:ping 127.0.0.1 >>ping.result

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

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

         之前不能执行另一个命令。

        

         后台进程

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

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

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

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

         扩展:

                  watch -n 1 ls -l

         监听某个命令执行效果,-n时间刷新频露1s

 

一、进程常用命令

1w

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

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

         USER         登录用户名

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

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

         LOGIN@  什么时候登录的

         IDLE         空闲时间

         JCPU         该终端消耗的CPU时间

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

         WHAT       正在做什么

2who    简单查看登陆者信息

 

3ps查看进程信息  (process status)

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

         -u      显示用户和启动时间

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

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

         -l       长格式显示

        

         应用实例

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

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

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

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

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

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

ps -le --sortpid                  可按pid排序

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

         pstree| more 树状结构显示进程

 

常见选项的含义

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

         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         进程本身

 

4kill       杀死一个进程

         为什么要杀死进程?

  1. 该进程占用了过多的CPU时间

  2. 该进程锁住的一个终端,使其它前台进程无法运行

  3. 运行时间过长,但没有预期的效果 

  4. 产生了过多的到屏幕或磁盘文件输出 例如find / -name "*"

  5. 无法正常退出

 

关闭进程         kill 进程号(PID)

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

         或调用/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)

 

5、以p开头的命令

pgrep httpd 查看httpd进程的所有pid

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

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

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

 

6、优先级命令

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)默认是值越小,权越大

ps -le 中,NI就是优先级

 

7、前后台进程操作

         一个符号:

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

         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[序号]           恢复到后台继续运行  

若不加序号,则默认将命令作用于+修饰的进程

 

8top命令

         上面的信息,类似于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                         退出

         hor ?                 帮助信息

 

9free –m      查看内存状态

 

10、查看proc文件下信息

         ls/proc    

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

         cat/proc/cpuinfo 查看cpu信息

         cat/proc/meminfo 内存信息

         cat/proc/partitions 分区信息

 

 

三、进程分类

         1、分类

 

         standalone       独立运行

         xinetd                进程托管

         atdcrond      计划任务

        

         standalone       独立运行

                  apachemysql的服务,启动后,进程会一直在系统中,

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

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

        

         xinetd       进程托管         (需要独立安装yum     -y      install       xinetd

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

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

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

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

 

         atdcrond      计划任务

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

 

 

 

2、管理

#chkconfig  --list

        运行级别:0-6

                0   关机

                1   单用户模式

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

                3   完全多用户   字符界面

                4   未分配

                5   图形界面

                6   重启

 

                init  0关机    init5  startx init 3

                init  6重启

 

        runlevel            查询系统当前运行级别

 

                vi  /etc/inittab

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

 

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

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

 

3、启动服务

        

         RPM包安装的服务:

        

         service   服务名   start|stop|restart|status

                  service network start

         能被service命令识别是因为,在/etc/rc.d/init.d/下有服务执行脚本

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

                  /etc/rc.d/init.d/httpd  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

                                                                                                   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章