Linux之进程管理

1.  什么是进程:

进程是正在执行的一个程序或者命令,每一个进程都是一个运行的实体都有自己的地址空间,并且占用一定的系统资源。正在运行着的程序,只要运行就会产生至少一个进程。

至于具体解释,请参见我的另一篇文章:进程、线程和前台进程、后台进程

2.  进程管理的作用

1.判断服务器的健康状态,(主要作用)

2.查看系统中所有进程

3.杀死进程

注意:1.非法进程不能直接杀死进程,因为病毒会自动重启,或者开机就启动,2.任何时候能用正常方式关闭,就正常关闭,比如:service或者绝对路径的方式。因为如果关闭出错,可能就会导致,自己远程的时候被踢出。3.如果非得用这种方式关闭进程,那么就需要去百度查查,这个进程是干什么的。

3.  查看系统中所有进程

           3.1.第一种方式  

ps aux

#查看系统中所有进程,使用BSD操作系统格式-Unix格式

#a:前台进程,x:后台进程 ,u:这个进程由那个用户产生的

执行之后出现的部分内容如下

解释一下

USER:       该进程由那个用户产生

PID  进程的ID号

%CPU      该进程占用CPU资源的百分比,占用越高,越耗费资源

        资源就是CPU,内存,打印机,键盘啊等

%MEM     该进程占用实际物理内存的百分比,占用越高,越耗费资源

        cpu内存等占用越高,代表着使用的东西越多,所以资源耗费越严重

VSZ 该进程占用虚拟内存的大小,单位KB

RSS  该进程实际物理内存大下,单位KB

TTY  该进程是在那个终端中运行的。其中tty1~7代表本地控制终端

。tty1~6是本地的字符界面终端,tty7是代表的图形终端

pts/0-255代表虚拟终端,可以理解为远程登录终端,

STAT       进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态,s:包含子进程

+:位于后台

START     该进程的启动时间

TIME       该进程占用CPU的运算时间,注意不是系统时间

COMMAND   产生此进程的命令者

           3.2.第二种方式

ps -le

#查看系统中的所有进程,使用Linux标准命令格式

       #-l(long):显示详细信息    e:显示所有进程

        和ps -aux类似

           3.3.第三种方式

              查看进程树

                    pstree[选项]

                      选项:

                            -p   显示进程pid;详细信息,列出一个树形

                            -u   显示进程的所属用户user

              执行之后部分内容如下图:

             

4.  查看系统健康状态

top [选项]

选项:

   -d 秒数:指定top命令每隔几秒更新:默认是3秒

  在top命令的交互模式当中,可以执行的命令:(那几个都是大写字母)

  ?或者h:   显示交互模式帮助

  P:            以CPU使用率排序,默认就是此项

  M:           以内存的使用率排序

  N:            以PID排序

        q:            退出top

执行此命令产生的部分内容如下:


解释一下,前五行的内容,因为下五行和ps aux是一样的,就不在解释了:

第一行信息内容为任务队列信息

 12:26:46             系统当前运行时间

  up 1day,13:32   系统的运行时间,本机已经运行了一天13小时32分钟

  2 users              当前登陆了两个用户(可以查看有几个用户登录)

  loadaverage:

 0.00,0.00,0.00     系统在一分钟,五分钟,十五分钟的平均负载,这是判断一个系统健康

                      状态的重要指标。如果CPU核心数为1,那么大于1,系统就属于超负荷

                      如果是小于1,负载较小,如果CPU核心数为4,可以认为超过4才超负荷

  第二行为进程信息:

  Tasks:95 total    系统进程的总数

  1running          正在运行的进程数

  94sleeping       睡眠的进程

  0stopped          正在停止的进程

  0zombie           僵尸进程,如果不是0,需要手工检查僵尸进程

                      僵尸进程就是这个进程正在终止,但是还没有终止完全

                      如果很长时间数字都是1,那么就证明这个进程卡死了

   第三行为CPU信息

  Cpu(s): 0.1%us  用户模式占用的CPU百分比

   0.1%sy              系统模式占用的CPU百分比

   0.0%ni              改变过优先级的用户进程占用的CPU百分比

  99.7%id            空闲CPU的CPU百分比(主要是这一行)

   0.0%hi              硬中断请求服务占用的CPU百分比

   0.1%si        软中断请求服务占用的CPU百分比

   0.0%st              st(Steal time)虚拟时间百分比,就是当有虚拟机时

                      虚拟CPU等待实际CPU的时间百分比

  第四行为物理内存的信息:

  Mem:625344k total  物理内存总量,单位是KB

  571504kused           已经使用的物理内存数量

 53840k  free           空闲的物理内存数量(主要看)

  65800kbuffers  作为缓冲的内存数量

  第五行是SWAP信息

  Swap:51480k total    交换分区(虚拟内存)的总大小

  0k  used          已经使用的交换分区大小

  524280kfree            交换分区空闲大小

  409280k cached 作为缓存的交互分区大小

5.  终止进程

5.1.kill命令

kill -l(英文小写L)

#查看当前可用的进程信号

进程的ID号,可以通过ps命令或者pstree查看

常用的信号

kill -1(数字1) pid(进程的ID号)  重启进程,其实service也是默认调用这个命令

kill -9 pid                     强制杀死进程

kiil -15 pid                   正常结束进程

5.2.killall命令

.killall[选项][信号] 进程名

     #按照进程名杀死进程,这会杀死所有同名进程,比如多个Word进程全部被杀死,关闭

     选项:

               -i:    交互式,查询是否要杀死某个进程

               -I(大写i): 忽略进程名

5.3.pkill命令

      pkill [选项][信号] 进程名

      #按照进程名终止进程

      选项:

                      -t 终端号:按照终端号踢出用户(常用)

               #pkill命令和killall很像,但是它可以按照终端号,踢出进程

6.  工作管理:

6.1. 把进程放入后台:

6.1.1.第一种方式

命令 &

#在命令后面添加&符号,就可以将工作放入后台运行

比如:

tar -zcvf etc.tar.gz /etc &

6.1.2.第二种方式:

              执行命令的时候,按下执行ctrl+z快捷键,将进程放入后台,但是不执行,处于通知状态。也就是说处于等待状态,没有运行。

6.2. 查看后台工作:

jobs  [-l]

       选项:-l: 显示工作的pid

       注意:“+”号代表,最近一个放入后台的工作,也是工作恢复的时候,默认恢复的工作。

       “-”号,代表倒数第二个放入后台的工作,其他没有符号表示

       查看后台工作有一个格式是

       [1]- Stopped  top

       [2]+ Stopped tar -zxf etc.tar.gz /etc

       说明:第一个方括号是表示工作号,表示第几个放入后台的

       第二个上面说了就不说了,第三个是后台进程状态,可以是

       停止,运行,杀死,完成等。第四个是后台的进程或者命令

6.3. 将后台暂停的工作恢复到前台执行:

fg %工作号

参数

          %工作号  %可以省略,但是要注意区分工作号和pid的区别

6.4. 将后台暂停的工作恢复到后台执行

bg %工作号

       注意:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到

       前台执行。比如vim,vi fdisk top等需要与用户有交互,放到后台你怎么进行交互。

7.  系统资源查看:

7.1.查询概况

vmstat [刷新延时刷新次数]

       例如:

       vmstat 1 3

       #刷新三次,每次间隔1秒钟

       相当于top命令的简洁版

7.2. 开机时内核检测

              dmesg #可以来判断硬件信息,开机的时候,系统会检测硬件信息,并且会写到/var/log/dmesg日志下,这个命令就是读取这个日志的。

              比如:

              demesg| grep CPU 

                     #查看CPU信息

7.3查看内存使用状态

              free[-b|-k|-m|-g]

                     选项:

                     分别是:字节,kb,MB,GB的意思

7.4. 查看CPU信息

cat /proc/cpuinfo

       #这个目录是内存信息的保存地方,每次启动之后会把cpu信息写到这里

       #然后就可以查看了


7.5显示系统的启动时间和平均负载

       uptime命令

       uptime

       #显示系统的启动时间和平均负载,也就是top命令的第一行

       #w命令也可以查看这个数据。

7.6.查看系统内核相关信息

uname [选项]

                     #查看系统与内核相关信息

              选项:

                     -a:   查看系统所有的相关信息

                     -r:   查看内核版本

                     -s:   查看内核名称

       比如我的是:

7.7.列出查看操作系统位数

       file命令是查看文件信息命令

       file/bin/ls      必须是一个外部命令,就可以顺带查看操作系统位数

7.8. 列出进程打开或使用的文件信息

       lsof[选项]

       #列出进程调用或者打开的文件的信息

       选项:

              -c字符串:只列出以字符串开头的进程打开的文件

              -u  用户名  只列出某个用户的进程打开的文件

              -p  pid    只列出某个pid进程打开的文件

8. 系统的定时任务:

      8.1.crond服务管理与访问控制

       先启动这个服务

       servicecrond restart #启动这个服务

       chkconfigcrond on  #设置这个服务自启动

       #以d结尾的进程是守护进程的意思

8.2. 用户的crontab设置

       crontab[选项]

       选项:

          -e:            编辑crontab定时任务--打开文件编辑文件

          -l             查询crontab任务

          -r             删除当前用户所有的crontab任务

打开这个文件的编辑的格式:

          * * * * * commond

          第一个*    一个小时中的第几分钟       0-59

          第二个*    一天当中的第几小时    0-23

          第三个*    一个月中的第几个天    1-31

          第四个*    一年当中的几个月       1-12

          第五个*    一个周中的星期几       0-7(0和7都代表周日)

          如果有的位置是*号,那么是每个

          比如:

          45 22 * * * 命令      表示在每天的22点45分执行命令

          0 17 * * 1 命令

         

          特殊符号的意思:

          *       代表任何时间,比如第一个*就代表一个小时中每一个分钟都执行一次,第二个*代表一天中的每个小时,第三个*代表,一年中的每一天.....

          ,            代表不连续的时间。比如:“08,12,16 * * * ,命令,代表每天的8点0分,12点0分,16点0分都执行一次命令

          -              代表连续时间范围。比如0 5 * * 1-6 命令“,代表在周一到周六的凌晨5点0分执行命令

          */n           代表每隔多久就执行一次,比如“*/10 * * * * 命令“,代表每隔10分钟执行一次命令

          

          最好不要将星期和天都有,因为会把你搞晕,如果放在一起,那么就是和的关系,

          比如

          0 5 1,15 * 1 命令

          表示的意思是:在每个月的1号,15号和每周的星期一都执行

8.3.删除指定的定时任务

       就是crond -e       进去这个编辑的文件,删除某一行就可以了






猜你喜欢

转载自blog.csdn.net/swf_shixinshou/article/details/80272453