Linux系统基础管理

Linux系统基础管理

1.内核的功用:进程管理(进程的创建比如mkdir、销毁 )
、文件系统、网络功能、内存管理、驱动程序、安全功能
2. process进程:运行中的程序的一个副本。存在生命周期
3.Linux内核存储进程选项的固定格式:task struct任务结构体
  多个任务的task  struct组件的链表:task list
......

4.进程类型
   守护进程:在系统引导过程中启动的进程,跟终端无关的进程
   前台进程:跟终端相关,通过终端启动的进程
   注意:也可把在前台启动的进程送往后台,以守护模式进行
5.进程状态
   运行态:running
   就绪态:ready
   睡眠态:
       可中断:interruptable
       不可中断:uninterruptable
   停止态:暂停于内存中,但不会被调度,除非手动启动;stopped
   僵死态:zombie
6.进程的分类
 CPU-Bound
 IO-Bound

 

进程管理常用命令
1.各系统上的第一个进程
centos5:sysV init
centos6:upstart
centos7:systemd

2.进程管理常用命令
(1)pstree命令:查看进程树
(2)ps命令
    /proc/:内核中的状态信息
       内核参数:
          可设置其值从而调整内核运行特性的参数:/proc/sys
          状态变量:其用于输出内核中统计信息或状态信息,仅用于查看

       参数:模拟成文件系统类型

 系统启动的方式
    a.系统启动过程中自动启动:与终端无关的进程
    b.用户通过终端启动:与终端相关的进程

ps定义: ps - report a snapshot of the current processes
ps选项的三种风格    
1   UNIX options, which may be grouped and must be preceded by a dash(连接号 破折号).选项只能带一个杠号
2   BSD options, which may be grouped and must not be used with a dash.                选项一个杠号都不能带
3   GNU long options, which are preceded by two dashes.                                选项必须带两个杠号
选项:
  a:所有与终端相关的进程
  x:所有与终端无关的进程
  u(user):以用户为中心组织进程状态信息显示

常用组合之一:
~]# ps aux(通常这三个选项一起使用)
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  19344  1544 ?        Ss   06:07   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    06:07   0:00 [kthreadd]

USER:进程所属用户
PID:进程号
%CPU:累计CPU所使用的时间
%MEM:占整个内存的比例
VSZ(virtual memory size):占用的虚拟内存大小(虚拟内存集)
RSS(resident居民 驻地 size):常驻内存集(常驻内存占用的大小)
TTY
STAT:当前进程的状态
      R:running 运行状态
      S:interruptable sleeping可中断睡眠状态
      D:uninterruptable sleeping 不可中断睡眠状态
      T:stopped  停止状态
      Z:zombie  僵死状态

      *:前台进程
      l:多线进程
      N:低优先级进程
      <:高优先级进程
      s:session leader
START  
TIME:当前进程所用时间的总和
COMMAND


-e:显示所有进程
-f:显示完整格式的进程信息   

常用组合之二
~]# ps -ef(常用组合)
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 06:07 ?        00:00:02 /sbin/init
root          2      0  0 06:07 ?        00:00:00 [kthreadd]

PPID:父进程号
C:CPU的占用百分比     cpu  utilization(占用率):cpu的利用率
CMD:启动此进程的命令


-F:显示所有进程(与小f基本相同)
 ~]# ps -eF
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          1      0  0  4836  1544   3 06:07 ?        00:00:02 /sbin/init
root          2      0  0     0     0   2 06:07 ?        00:00:00 [kthreadd]

SZ:即上述的VSZ
PSR: processor(处理器)  当前进程运行在哪个CPU上

-H(hierarchy):以层级结构显示进程的相关信息
常用组合之三:
#ps  -eFh

o:自定义要显示的字段列表,以逗号分隔
常用的字段:pid,ni(nice值),pri,psr,pcpu,stat,comm,tty,ppid,rtprio
    ni(nice值):每一个进程都可以优雅的把优先级让给别人,nice值越小,优先级越高
    pri:priority优先级
    rtpri:real time priority实时优先级
       常用组合之四:
#ps  -eo  或  #ps  axo  (o必须写在后面,因为o是带参数的)

eg: ~]# ps axo  pid,command
   PID COMMAND
     1 /sbin/init
     2 [kthreadd]

(3)pgrep,pkill命令
eg:显示postfix这个用户的进程
~]# pgrep -U  postfix
2699
3208

-u uid:effecive user
-U uid:read user
-t TERMINAL:与指定的终端相关的进程
-l:显示进程名
-a:显示完成格式的进程名
-P pid:显示此进程的子进程

(4)pidof命令:根据进程名,取其pid
eg:查看sshd进程的进程号
~]# pidof  sshd
3269 2507

(5)top命令: - display Linux processes显示进程信息
 ~]# top
top - 07:56:27 up  1:49,  2 users,  load average: 0.12, 0.10, 0.10
Tasks: 188 total,   1 running, 187 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1906280k total,   649564k used,  1256716k free,    46348k buffers
Swap:  4095996k total,        0k used,  4095996k free,   287304k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                     
  3825 root      20   0 15032 1296  936 R  0.3  0.1   0:00.33 top                          
     1 root      20   0 19344 1544 1228 S  0.0  0.1   0:02.39 init                         
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd    

07:56:27:当前时间
1:49:运行时长
2 users:登录当前系统的用户数
load average:平均负载(cpu上进程队列的等待长度)
Tasks:任务,一共运行有多少个进程,后面分别表示各状态的进程数量
Cpu(s):cpu占用的百分比  0.0%us:userspace用户空间进程所占用的百分比
0.2%sy:system,内核空间所占用的百分比   0.0%ni:nice值,调整优先级所占用的时间
99.8%id:空闲时间所占用的百分比  0.0%wa:wait,等待IO完成所占用的时间
0.0%hi:处理硬件中断所占用的  0.0%si:处理软硬件所占用的   0.0%st:stolen被偷走的时间所占的百分比
SHR:共享空间

上述PID  USER...一行中默认使用的是%CPU的大小来排序的,此进程中,
可用过敲大写的M(MEM)、T(TIME+)...来改变排序。P(CPU)默认的以所占cpu百分比排序

 

uptimeml命令:显示第一行的信息,包括系统时间、运行时长即平均
负载。  平均负载:过去1分钟、5分钟和15分钟的平均负载,cpu上等待运行的进程排列的长度。

 ~]# uptime
 08:02:26 up  1:55,  2 users,  load average: 0.14, 0.12, 0.11

 


进程管理常用命令
1.epel源
centos6:http://172.16.0.1/fedora-epel/
centos7: http://172.16.0.1/fedora-epel/
http://172.16.0.1/fedora-epel/


centos6上建一个epel源指向仓库
#vim  /etc/yum.repos.d/epel.repo
[epel]
name=Fedora EPEL
baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/
gpgcheck=0


centos7上建一个epel源指向仓库
#vim  /etc/yum.repos.d/epel.repo
[epel]
name=Fedora EPEL
baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/
gpgcheck=0

2.htop命令
 选项:
   -d #:指定延迟时间间隔
   -u Username:显示指定用户的进程

子命令:
   l:显示选定的进程打开的文件列表
   s:跟踪选定的进程的系统调用
   t:以层级关系显示各进程状态
   a:将选定的进程绑定至某指定的CPU核心

3.vmstat(virtual memory )命令
(1)定义:- Report virtual memory statistics  
(2)语法:vmstat [options] [delay [count]]
eg:#vmstat  2(延迟2秒刷新一次)
  ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 545680    972 793792    0    0     3     1   20   25  0  0 100  0  0
 0  0      0 545664    972 793792    0    0     0     0  109  113  0  0 100  0  0

 procs:
     r(running):等待运行的进程的个数;即COU上等待运行的任务的队列长度。
     b(blocked阻塞的):处于不可中断睡眠的进程个数;即被阻塞的任务队列长度。
 momery:
     swpd:交换内存使用总量
     free:空闲的物理内存总量
     buffer(缓冲):用于buffer的内存总量
     cache(缓存):用于cache 内存总量
swap:
    si:数据进入swap中的数据速率(kb/s)
    so: 数据离开swap的速率(kb/s)
io:
    bi:从块设备度读入数据到系统的速率(kb/s)
    bo:保存数据至块设备的速率(kb/s)

system:
     in:interrupts 中断速率
     cs:context switch上下文切换的速率(进程被内核调度的速率)
cpu:
    us:userspace(用户空间程序占据cpu的百分比)  
    sy:system(系统空间程序占据cpu的百分比)
    id(空闲的):idie怠速
    wa:wait  等待io时间的百分比
    st:stolen

选项:
  -s:显示内存统计数据

4.pmap命令
(1)定义:- report memory map of a process
            打印指定进程的内存映射表 
eg:打印第一个进程的内存映射表
    #pmap 1(进程号pid)
(2)语法: pmap [options] pid [...]
-x(extend):显示详细格式的信息 
eg:#pmap -x 1

5.glances命令,功能和上述类似
eg:#glances
内建命令,h查看内建命令
(1)常用选项
-b:以byte为单位显示网上数据速率
-d:关闭磁盘I/O模块
-m:关闭mount模块
-n:关闭network模块
-t #:刷新时间间隔
-1(是1不是L) :每个cpu的相关数据单独显示
-o{HTML|CSV}:输出格式
-f/PATH/TO/SOMEDIR:设定输出文件的位置

  C/S模式下运行glances命令:
    服务模式:
    glances  -s  -B  IPADDR(本机的某地主,用于监听)
 
    客户端模式:
    glances  -c  IPADDR (远程服务器的地址)

6.dstat命令(前面5个进程监控命令的功能dstat几乎都包含)
eg:~]# dstat 2 5  延迟2两秒显示,只显示5次就结束
(1)语法:dstat [-afv] [options..] [delay [count]]
(2)常用选项
-c 或 --cpu:显示cpu的信息
     -C #,#,...total
-d 或 --disk:显示磁盘的相关信息
     -D sda,sdb,...total
-g:显示page相关的速率数据(从磁盘读入内存,从内存写入磁盘)
-m:memory的相关统计数据
-n:interface的相关统计数据
-p:显示process的相关统计数据
-r:显示io请求的相关的统计数据
-s:显示swapped的相关统计数据

 
7.kill命令
(1)定义: - terminate(终止 结束) a process
             终端terminal
            用于向进程发送信号,以实现对进程的管理
(2)显示当前系统的信号
    kill  -l  [signal]
(3)每个信号的表示方法有三种
eg:对48599这个进程发送信号1,有三种方式
第一种:信号的数字标识  #kill -1  48599
第二种:信号的简写名称 #kill  -HUP  48599
第三种:信号的完整名称 #kill  -s  SIGHUP 48599  
(4)向进程发信号
kill [-s signal | SIGNAL] pid...
常用信号:
  1 SIGHUP:无须关闭进程而让其重读配置文件
  2 SIGINT:终止正在运行的进程,相当于Ctrl+c
  9 SIGKILL:杀死运行中的进程(9和15的区别 9残暴杀害15人道毁灭)
  15 SIGTERM:终止运行中的程序
  18 SIGCONT(continue):
  19 SIGSTOP: 将一个进程送到后台,让其处于停止状态

eg:进程送入后台、再恢复操作
#vim  /etc/abc.txt
 abc.txt
 new.line
第一步:此时写到一半,进入命令行模式,使用Ctrl+z,进入以下停止状态
~]# vim  /etc/abc.txt

[1]+  Stopped                 vim /etc/abc.txt
第二步:查看此进程的状态 T(stop),处于停止状态
 ~]# ps aux|grep vim
root      15218  0.0  0.2 151184  4884 pts/0    T    16:19   0:00 vim /etc/abc.txt
root      15276  0.0  0.0 112648   960 pts/0    S+   16:23   0:00 grep --color=auto vim
第三步:发送18号信息,让其恢复
~]# kill -18  15218

[1]+  Stopped                 vim /etc/abc.txt
第四步:使用 #fg  让其从后台回来
             Ctrl+z 让其再回到后台

使用上述方法:当再vim进行编辑临时有其他操作时不需要将其
关掉,将其送到后台,处理完其他操作,再将其调到前台来进行
操作,方便工作。

(5)killall 一个服务有很多子进程,一次性全部杀死
定义:- kill processes by name
语法:killall [-SIGNAL] program   (program 节目 程序)
                信号      进程名
eg:#killall  httpd(httpd服务)

posted @ 2017-05-15 19:36  天山脚下----  阅读(173)  评论(0编辑  收藏  举报