美文网首页
LINUX 系统管理

LINUX 系统管理

作者: 銭兎孑 | 来源:发表于2017-06-06 16:15 被阅读16次
                              #  一 进程管理
                  
          1. 进程简介
            
          进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
                      
          2. 进程管理的作用
              1)判断服务器健康状态
              2)查看系统中所有进程
              3)杀死进程     
          3. 杀死进程
          4. 修改进程优先级
      
                             #   简介与分类
               
               1. 进程管理简介
               2. 进程的查看 -- ps 和 pstree 命令
               3. 进程的查看 --top命令
    
    
                             #   查看所有进程
        
                ps aux 查看系统中所有进程,使用BSD操作系统格式
                ps -le  查看系统中所有进程,使用linux标准命令格式
                选项:
                    -a : 显示一个终端的所有进程,除了回家引线
                    -u: 显示进程的归属用户及内存的使用情况
                    -x: 显示没有控制终端的进程
                    -l : 长格式显示,显示更加详细的信息
                    -e :显示所有进程和-A作用一致
        
                                # ps命令的输出
    
                USER: 该进程是由哪个用户产生的
                PID: 进程的ID好
                %CPU:该进程占用CPU资源的百分比,占用越高,进程越消耗资源
                %MEM:该进程占用物理内存的百分比,占用越高,进程越消耗资源
                VSZ:该进程占用虚拟内存的大小,单位KB
                RSS:该进程占用虚拟内存的大小,单位KB
                TTY:该进程是在那个终端中运行的。其中tty | -tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
                STAT:进程状态,常见的状态有:
                             R:运行 S:睡眠 T:停止状态 s:包含子进程 +:位于后台
                START: 该进程的启动时间
                TIME: 该进程占用CPU的运算时间,注意不是系统时间
                COMMAND:产生此进程的命令名
    
    
                                          # 查看进程树
      
                 pstree [选项]
                             -p:显示进程的PID
                             -u:显示进程的所属用户
                
                                          # 查看系统健康状态
                          
                 top [选项]
                              -d:秒数 指定top命令每隔几秒更新,默认3秒
                              -b:使用批处理模式输出,一般和“-n”选项合用
                              -n 次数:制定top命令执行的次数,一般和“-b”选项合用
                     
                      在top命令的交互模式当中可以执行的命令
                            ?或h : 显示交互模式的帮助
                             P:以CPU使用率排序,默认就是此项
                             M:以内存的使用率排序
                             N:以PID排序
                             q:退出top
    
      
                                  # top 查询出的信息
      
                第一行为队列信息
        
                          内容                                                说明
                  12:26:46                                     系统当前时间
                  up 1 day,13:32                          系统的运行时间,
                                                                本机已经运行1天13小时32分钟
                  2 users                                             当前登陆了2个用户
                  load arerage:0.00 0.00 0.00   15分钟的平均负载,一般认为小于1时,负载较小
                                                                     如果大于1,系统已超出负荷
    
                第二行为进程信息
                              
                          内容                                                  说明
                    tasks : 95 total                             系统中的进程总数
                    1 running                                        正在运行的进程数
                    94 sleeping                                     睡眠的进程
                    0 stopped                                       正在停止的进程
                    0 zombie                                        僵尸进程,如果不是0,需要手工检查僵尸进程
    
                第三行为CPU信息
    
                           内容                                                    说明
                    Cpu(s): 0.1%us                             用户模式占用的CPU百分比
                    0.1%sy                                             系统模式占用的CPU百分比
                    0.0%ni                                            改变过优先级的用户进程占用的CPU百分比
                    99.7%id                                            空闲的CPU百分比
                    0.1%wa                                             等待输入/输出的进程的占用CPU百分比
                    0.0%hi                                               硬中断请求服务占用的CPU百分比
                    0.1%si                                               软终端请求服务占用的CPU百分比
                    0.0%st                                               st(steal time)虚拟时间百分比。就是当有
                                                                              虚拟机时,虚拟CPU等待实际CPU时间
    
                 第四行为物理内存信息
    
                          内容                                                         说明
                    Mem:625344k total                          物理内存的总量,单位KB
                    571504k used                                     已使用物理内存数量
                    53840k  free                                        空闲的物理内存数量
                    65800k buffers                                    作为缓冲的内存数量
    
                第五行为交换分区(swap)信息
        
                          内容                                                             说明
                   swap:524280k total                              交换分区(虚拟内存)的总大小
                   ok used                                                   已经使用的交互分区的大小
                   524280k free                                           空间交换分区的大小
                   409280k cached                                      作为缓存的交互分区的大小
    
                                              使用top查看所有进程
                  top -b -n 1 > /root/top.log
    
    
    
    
                                              杀死进程
    
                    1. kill 
                        kill    -l   查看可用的进程信号
    
                    例:
                  信号代号             信号名称                      说明
                      1.                     SIGHUP             该信号让进程立即关闭,
                                                                          然后重新读取配置文件之后重启
                      2.                     SIGINT               程序终止信号,用于终止前台进程。
                                                                           相当于输出ctrl+c快捷键
                      8.                      SIGFPE             在发生致命的算术运算错误时发出,不仅包
                                                                           含浮点运算,还包括溢出及除数0等其他所
                                                                           有算数的错误
                      9.                      SIGKILL             用来立即结束程序的运行,本信号不能被阻
                                                                            塞、处理和忽略一般用于强制终止进程
                      14.                    SIGALRM           时钟定时信号,计算的是实际时间或时钟时
                                                                            间,alarm使用该信号
                      15.                    SIGTERM           正常结束进程的信息,kill命令的默认信号,
                                                                             有时如果进程已经发生问题,这个信号是
                                                                             无法正常终止进程的,我们才会尝试
                                                                             SIGKILL信号也就是信号9
                       18.                   SIGCONT            该信号可以让暂停的进程回复执行,本信号
                                                                              不能被阻断                    
                       19.                   SIGSTOP             该信号可以暂停前台进程,相当于输入
                                                                                ctrl+z快捷键,本信号不能被阻断
          
                例:
                    kill -1 端口号 重启进程
                    kill - 9 端口号 强制杀死进程
    
    
                                         #2. killall 命令
        
                killall [选项][信号]进程名                  按照进程名杀死进程
                            -i  交互式,寻味是否要杀死某个进程
                            -I  忽略进程名的大小写
    
                                         #3. pkill 命令
                pkill [选项][信号]进程名                     按照进程名终止进程
                            -t 端口号 : 按照终端号提出用户
                             
                w:查看当前登陆用户
    
    
                                         #进程优先级简介
    
                  Linux操作系统是一个多用户、多任务的操作系统,Linux系统中通知运行着非常多的进程。但是CPU在同一个时钟周期内只能运算一个指令。进程优先级决定了每个进程处理的先后顺序
    
                  ps -le    PRI代表Priority ,Ni代表Nice 这两个值都是优先级,数字越小代表该进程优先级越高
    
                                
                                        # 修改NI值时有几个注意事项
    
                   1. NI的值的范围是-20 到 19
                   2. 普通用户调整NI值的范围是0到19,而且只能调整自己的进程
                   3. 普通用户只能调高NI值,而不能降低,如果本NI值为0,则只能调整为大于0
                   4. root用户才能设定进程NI值为负值,而且可以调整任何用户的进程
                   5. PRI(最终值) =  PRI(原始值) + NI
                   6. 用户只能修改NI的值,不能直接修改PRI
    
                                          # nice 命令
                    nice [选项] 命令  nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的Ni值
                                -n   NI值:给命令赋予NI值
    
                    例:
                       nice -n -5 service httpd start
          
                                         # renice 命令
      
                     renicre [优先级] PID
                     renice 命令是修改已经存在的进程的NI值的命令
                     renice -10 2125
    
    
                                          # 工作管理
      
                      jobs 查询在后台执行的进程
    
                                          # 工作管理简介
                      
        工作管理指的是在单个登陆终端中(也就是登陆的shell界面中)同时管理多个工作的行为。
    
                                          # 注意事项
      
                1 当前的登陆终端,只能管理当前终端的工作,而不能管理其他登陆终端工作
                2 放入后台的命令必须可以持续执行一段时间,这样我们才能捕捉和操作这个工作
                3 放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行
    
                                          # 1.把进程放入后台
    
                  1 top & 把命令放入后台,并在后台执行
                  2 ctrl+z 快捷键,放在后台暂停
    
                                         # 2. 查看后台的工作
                
                   jbos [-l]
                              -l : 显示工作的PID
                            注: “+”号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作
    
                                        # 3.将后台暂停的工作恢复到前台执行
            
                    fg % 工作号
                        参数: 
                            % 工作号:%号可以省略,但是要注意工作号和PID的区别
    
                                      # 4. 把后台暂停的工作回复到后台执行
                    
                     bg % 工作号
                            注: 后台回复执行的命令,是不能和前台有交互的,否则不能回复到后台执行
    
                                       # 后台命令脱离登陆终端执行的方法
      
                     第一种方法是把需要后台执行的命令加入/etc/rc.local文件
                     第二种方法是使用系统定时任务,让系统在制定的时间执行某个后台命令
                     第三种方法是nohup命令
            
                                      #  nohup 命令
                      
                       nohup [命令] & 
      
                                              # 系统资源查看
      
                                      # 1 vmstat 命令监控系统资源
    
                        vmstat [刷新延时 刷新次数] 例: vmstat 1 3
    
                        procs:进程信息字段
                                      r : 等待运行的进程数,数量越大,系统越繁忙
                                      b : 不可被唤醒的进程数,数量越大,系统越繁忙
    
                         memory : 内存信息字段
                                swod:虚拟内存的使用情况,单位KB
                                free:空闲的内存容量,单位KB
                                buff:还从的内存容量,单位KB
                                cache:缓存的内容容量,单位KB
                            
                         swap : 交换分区的信息字段:
                                si:从磁盘中交换到内存中数据的数量,单位KB
                                so:从内存中交换到磁盘中数据的数量,单位KB。此两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差
                          
                          io : 磁盘读写信息字段:
                                bi:从块设备读取数据的总量,单位是块
                                bo:写到块设备的数据的总量,单位是块。此两个数越大,代表系统的I/0越繁忙
                    
                          system:系统信息字段
                                in:每秒被终端的进程次数
                                cs:每秒中进行的事件切换次数,此两个数越大,代表系统与接口设备的通信越繁忙
      
                          cpu: cpu 信息字段
                                us:非内核进程消耗cpu运算的百分比
                                sy:内核进程消耗cpu运算时间的百分比
                                id:空闲cpu的百分比
                                wa:等待I/O所消耗的CPU百分比
                                st:被虚拟机所盗用的CPU占比
    
                                      # 2. dmesg 开机时内核检测信息
    
                          dmesg 
                          dmesg | grep cpu
      
                                      # 3. free 命令查看内存使用状态
    
                          free [-b|-k|-m|-g]
                                      -b:以字节为单位显示
                                      -k:以kb为单位显示,默认就是以KB为单位显示
                                      -m:以MB为单位显示
                                      -g:以GB为单位显示
    
                                      # 4. 查看cpu信息
      
                          cat /proc/cpuinfo
      
                                     # 5. uptime 命令
      
                          uptime  显示系统的启动时间和平均负载吗也就是top命令的第一行,w命令也可以看到这个数据。
    
                                     # 6. 查看系统与内核相关信息
    
                           uname [选项]
                                          -a : 查看系统所有相关信息
                                          -r: 查看内核版本
                                          -s:查看内核名称
      
                       判断当前系统位数      file /bin/ls 查看位数
                       
                        查看当前linux 系统的发行版本
                        lsb_release -a
      
                                     # 7. 列出进程打开或使用的文件信息
    
                         lsof [选项]
                                列出进程调用或打开的文件信息
                                  -c 字符串:只列出以字符串开头的进程打开的文件
                                  -u 用户名:只列出某个用户的进程打开的文件
                                  -p pid : 列出某个PID进程打开的文件
    
                        lsof | more       查询系统中所有的进程调用的文件
                        lsof /sbin/init    查询某个文件被哪个进程调用
                        lsof -c httpd      查看httpd进程调用了哪些文件
                        lsof -u root        按用户名,查询某用户的进程调用的文件名
    
    
    
                                            # at 一次执行
          
                       1. 确定at安装
                             chkconfig --list | grep atd              at 服务是否安装
                             service atd restart                         at 服务重启
    
                        2. at 的访问控制
                              如果系统中有/etc/at.allow 文件,那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
                              如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)的用户不能使用at命令  对root不起作用
                              如果系统中这两个文件都不存在,那么只有root用户可以是以哦那个at命令
    
                        3.at命令
                            at [选项] 时间
                                  -m : 当at 工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
                                   -c 工作号:显示该at工作的实际内容
                                       时间:
                                    HH:MM                             例:02:30
                                    HH:MM YYYY-MM-DD     例: 02:30 2013-7-25
                                    HH:MM [ap|pm] [month] [date] 例: 02:30 july 25
                                    HH:MM [ap|pm]+[minutes|hours|days|weeks] 例: now +5 minutes
    
                        4. 例子1
                            at now+2 minutes
                            at > /root/hello.sh >> /root/hello.log
                          
                             例子2
                             at 02:00 2017-07-26
                             at> /bin/sync
                             at > /sbin/shutdown -r now
      
                        5. 其他at管理命令
            
                             atq 查询当前服务器上的at工作
                             atrm [工作号] 删除制定的at任务
                             ctrl+d 保存退出
    
                              Crontab 循环定时任务
    
                       1. crond 服务管理与访问控制
                            service crond restart
                            chkconfig crond on
    
                              访问控制
    
            当系统中有/etc/cron.allow 文件时,只有写入此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高
            
             当系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令
    
                         2. 用户的crontab设置
          
             crontab [选项]
                               -e:biaoji crontab 定时任务
                               -l: 查询crontab任务
                              -r:删除当前用户所有的crontab任务               
                            
              项目                                    含义                              范围
            第一个“*”                一小时当中的第几分钟                0-59
            第二个“*”               一天当中的第几个小时                 0-23
            第三个“*”               一个月当中的第几天                     1-31
            第四个“*”               一年中的第几个月                         1-12
            第五个“*”               一周当中的星期几                          0-7(0和7都代表周日)  
    
            特殊符号                                                        含义
                *                代表任何时间。比如第一个“*”就代表一小时中每秒都执行一次的意思
                ,                代表不连续的时间,比如“0 8,12,16 * * * 命令” 就代表在每天的8点
                                     0分,12点0分,16点0分,都执行一次命令
                -                代表连续时间范围,比如“0 5 * * 1-6 命令”,代表周一到周六的凌晨5
                                    点0分执命令
               */n               代表每隔多久执行一次。比如“*/10 * * * * 命令” 代表每隔10分钟就执
                                     行一遍命令
    
              时间
    
           45 22 * * * 命令                  在22点45分执行命令
           0 17 * * 1 命令                   每周一的17点0分执行命令
           0 5 1,5 * * 命令                  每月1号和15号的凌晨5点执行命令
           40 4 * * 1-5 命令                每周一到周五的凌晨4点40分执行命令
           */10 4 * * * 命令                  每天的凌晨4点,每隔10分钟执行命令
           0 0 1,15 * 1 命令              每月1号和15号,每周一的0点0分都会执行。
          注意:星期几和几号最好不要同时出现,他们定义的都是天,非常容易让管理员还乱
    
                  例:
              */5 * * * * /bin/echo "11" >> /tmp/test
              5 5 * * 2 /sbin/shutdown -r now
              0 5 1,10,15 * * /root/sh/autobak.sh
    
    
                                4. crontab注意事项
      
          1) 六个选项都不能为空,必须填写。如果不确定使用“*”代表任意时间
          2) crontab 定时任务,最小有效时间是分钟,最大时间范围是月,像2018年某时执行,3点30分30秒这样的时间都不能识别
          3) 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为他们都是以天为单位,非常容易让管理员混乱
          4) 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径
    
                              系统的定时任务
      
          “crontab -e”是每个用户执行的命令,也就是说不同的命令身份可以执行自己的定时任务。可是有些定时任务需要系统执行,这时我们就需要编辑/etc/crontab这个配置文件了
    
                             执行系统的定时任务的方法
    
           手工执行定时任务
           系统定时任务
    
              第一种是把需要定时执行的脚本复制到/etc/cron.{daily,weekly,monthty,hourly}目录中的任意一个
              第二种是修改/etc/crontab 配置文件
    
                            anacron是什么
    
            anacron是用来保证在系统关机的时候错误的定时任务,可以在系统开机之后再执行
    
                             anacron 检测周期
    
            anacron会使用一天,七天,一个月作为检测周期
    
            在系统的/var/spool/anacron/目录中存在cron.{daily,weekly,monthly}文件,用于记录上执行cron的时间
    
            和当前时间做比较,如果两个时间的差值超过了anacron的制定时间差值,证明有cron任务被漏执行
    
    
                                    Centos 6.x 区别
    
        在老的CentOS版本中,/etc.{daily,weekly,monthly}这些目录即会被cron调用,也会被anacron调用,容易重复执行
        在CentOS 6.x中则只会被anacron调用,避免了重复执行
        在CentOS 6.x中,anacron不再是服务,而是系统命令
    
                                anacron 配置文件
    
        vi /etc/anacrontab 
              RANDOM_DELAY=45  最大随机延时
              START_HOURS_RANGE=3-22   anacron的执行时间是3到22点
              1  5  cron.daily  nice  run-parts  /etc/cron.daily
              7  25  cron.weekly  nice  run-parts  /etc/cron.weekly
              @monthly 45 cron.monthly  nice run-parts  /etc/cron.monthly
               # 天数  强制延迟(分)  工作名称  实际执行的命令
    
                            cron.daily工作来说明执行过程
      
          首先读取/var/spool/anacron/cron.daily中上一次anacron执行的时间
          和当前时间比较,如果两个时间的差值超过1天,就执行cron.daily工作
          执行这个工作只能在03:00-22:00之间
          执行工作时强制延迟5分钟,再随机延迟0-45分钟时间
          使用nice命令制定默认优先级,使用run-parts 脚本执行/etc/cron.daily目录中的所有可执行文件
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:LINUX 系统管理

          本文链接:https://www.haomeiwen.com/subject/oomgfxtx.html