zoukankan      html  css  js  c++  java
  • 20170915 linux系统管理培训

      

    1. 进程管理

    程序:通常为二进制程序放在存储媒介中(如光盘、硬盘、软盘、磁带等),以物理文件的形式存在;

    进程:正在运行当中的程序,程序被触发后,执行者的权限与属性、程序的程序代码与所有数据等都会被加载到内存中,操作系统并给予这个内存单元一个标识符(PID)。

    如图:

    那么查看进程请使用命令:ps aux

    所有的程序都会产生进程

    锁定相关的命令:

    ps aux | grep http

    #相对的来说,就是grep + 服务名称

    1. 子进程和父进程

    也就是“衍生出来的进程”,当我们登陆系统后,会取得一个bash的shell,然后使用这个bash提供的接口再去执行另一个命令,如/usr/bin/passwd或者touch等,那些另外的命令也会被触发成为PID,这个后来执行命令产生的PID就是“子进程”

    例如:

    那么如何来做进程管理?

    首先进程管理有什么作用?

    n  判断服务器的健康状态,了解服务器CPU,内存的占用情况等。

    n  查看系统中的所有进程

    n  杀死进程

       进程的查看ps 和pstree 命令

       查看所有进程的命令:

    n  Ps aux 或者 ps –le

    #查看系统中所有进程

    n  Man ps

    #查看命令解释

    n  Logout

    #正常退出用户登录

    如何理解ps aux 命令输出的信息

    l  USER: 该进程是由那个用户产生的。

    l  PID: 进程的ID号;

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

    l  %MEM: 该进程占用物理内存的百分比,占用越高,进程越消费资源

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

    l  RSS: 该进程占用实际物理内存的大小,单位KB

    l  TTY: 该进程是在哪个终端中运行的,其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形界面,pts/0-225代表虚拟终端

    l  STAT:  进程状态,常见的状态有:

    R: 运行

    S: 睡眠

    T: 停止状态

    s: 包含子进程

    +: 位于后台

    l  START: 该进程的启动时间

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

    l  COMMAND: 产生此进程的命令名

    注意:

    /sbin/init 的PID 一定是1,它是系统启动运行的第一个进程。(你使用的linux系统不同,文件名称和路径会有区别)

    TTY 为? 可以理解为系统进程,因为没有终端

      那么在了解一下更简单的命令:pstree

    n  Pstree 是显示进程树形结构

           -p : 查看包括子进程部分,也就是每个进程的PID号

           -u : 显示进程的用户

    进程的查看-top 命令

          Top命令是查看系统健康的重要命令

    n  默认每3秒钟,会自动刷新进程状态

    选项:

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

                -b :使用批处理模式输出,一般和“-n”选项合用

                -n次数:指定top命令执行的次数,一般和“-b”选项合用

             在top命令的交互模式中可以执行的命令:

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

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

             M : 以内存的使用率排序

             N : 以PID排序

             q : 退出top

         这些选项的用法例如shift + P 才有效果,这是因为命令功能区分大小写

    Top 命令下第一行的描述内容:

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

       12:26:46 是系统当前时间

       Up 86 days,13:32 是系统运行时间,本机已经运行了86天13小时32分钟

       2 users 表示登录了两个用户

       Load average: 0.00,0.00,0.00 表示系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小,如果大于1,系统已经超出负荷。(这里需要注意的是这个1 是单核数,如果是双核则不大于2,以此类推,当内核为4,就不能大于4)

    第二行  

    Tasks:95 total 表示系统中的进程总数

       1 running 表示正在运行的进程数

       94 sleeping 表示睡眠中的进程

       0 stopped 表示正在停止的进程

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

    第三行

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

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

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

       99.7%id 表示空闲CPU的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:524280K total 表示交换分区(虚拟内存)的总大小

     0k used 表示已经使用的交互分区的大小

     524280k free 表示空闲交换分区的大小

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

      Top 只能看到部分的进程内容

      要想看到所有的进程情况,可以使用

      命令:top –b –n 1 >  /root/top.log

      把top的内容写出到top.log中

      # top –b 表示批量模式输出,-n表示使用top 刷新多少次。

      命令:vi  top.log

      #查看文本内容

      #输入点击insert,进入输入内容

      # esc 退出输入命令

      #保存文本 命令:w

      #退出文本编辑器使用 命令: :q

    一.杀死进程

    1. kill 命令

    kill –l

    #查看所有信号

    例如使用:kill -1 2235

    #重启进程

    Kill -9 2236

    #强制杀死单一进程

    Kill -15 2234

    #以正常的步骤结束一项工作

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

    #按照进程名杀死进程

    选项:

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

            -I 忽略进程名的大小写

    1. pkill

    pkill -9 –t pts/1

    #强制杀死从pts/1虚拟机终端登录的进程

    按照终端号踢出用户

    命令W

    #使用w命令查询本机已经登录的用户

    三,进程优先级的修改。

    1. 启动服务是设置优先级
    2. 修改已经存在的进程的优先级

    但是这部分对于一般的系统管理员来说,不太涉及

    命令:ps –le

    #查询所有进程优先级

    PRI代表Priority,Ni代表Nice,两个值都代表优先级,数字越小代表该优先级越高。

    NI的值的范围是-20 到19

    普通用户调整NI值得范围为0到19

    Root用户才能设定进程NI值为负值,也可以调整任何用户的进度。

    一.工作管理

    命令:jobs

    #把进程放入后台

    命令tar –zcf etc.tar.gz /etc &

    #把命令放入后台,并在后台执行

    命令 top

    #按下ctrl+z快捷键,放入后台暂停

    比如说可以把能持续一段时间的命令放入后台,

    例如:我把top命令放入后台执行

    命令 top &

    命令jobs –l

    #显示工作的PID

    但是状态是停止的,以为top命令是给用户看的,会有交互动作

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

    如何把后台的工作放入前台

    命令: fg %工作号

    参数:

    -% 工作号:% 号可以省略,但是注意工作号和PID的区别

    恢复到后台运行

    命令:bg %工作号

    控制台记不住自己文件的路径,可以使用命令find 进行查找

    命令 find / -name uwsgi

    #查找,根下面名称为uwsgi的文件

    例如:

    如果让命令脱离终端运行?

      比如说我开了一个终端A,后台执行了一个top命令

      那么我再开一个终端B,可以查询到之前的那个命令,如果我把终端A 关闭,那么top命令的任务就会也被结束掉

    有三种办法可以让命令脱离终端

    1. 把需要后台执行的命令写入/etc/rc.local文件

    1. 使用系统定时任务,让系统在指定的时间执行某个后台命令
    2. 使用nohup命令

    来写一个.sh可执行命令文件,里面增加for循环内容(这里可以讲解一下Shell脚本)

    文件一类。

    输出就分为了两类:标准输出(standard output )和标准错误输出(standard error output)

    A: 标准输出:代码为1,使用> 或者>>;

    B:  标准错误输出:代码为2,使用2>或者2>>;

    其中 > 和>>  的区别:

               #如果重定向的文件不存在,那么创建;

               #如果文件存在那么清空数据,再写入;

               # >输出到一个已经存在的文件中,会覆盖掉原来的内容;

               # >>表示在原来的文件数据基础上进行累加;

    1. 2>&1

    # 表示把正确和错误的输出都写入一个文件中(这是针对写入相同文件的特殊写法)

    # 分开写入不同的文件方式写为 > /home/right.txt   2>  /home/error.txt

           

    1. 那么后台执行命令就变成了如下:

    1. 命令 ll  /

    #查看系统根目录下面文件名,权限和属性

              

    四.如何做定时任务,去监测脚本再运行如果异常并发送mail--?

    例行性工作使用(crontab)

    循环执行的例行性工作调度

    1. Root账号可以限制使用crontab的用户

    限制数据方式

    /etc/cron.allow

    #将可以使用crontab的账号写入其中,如果不在这个文件内账户就不可使用crontab。

    /etc/cron.deny

    #将不使用crontab的账号写入其中,那么没有记录到这个文件的账号就可以使用crontab

    Crontab的语法

    # crontab [-u username] [-l|-e|-r]

    参数:

    -u:只有root才能进行这个任务,就是可以帮其他用户新建/删除crontab工作调度;

    -e:编辑crontab的工作内容;

    -l:查看crontab的工作内容;

    -r:删除所有crontab的工作内容,如果只删除一项,那么请使用-e去删除。

       要实现的是,通过定时任务给自己发送mail

    1. 要配置邮件服务器

    首先确认你的系统是什么版本的

    命令:cat /proc/version

    然后再确认如何来安装mail

    先查看是否有安装mail

    #直接输入mail命令,如果没有安装会提示无法识别mail命令

    #如果有安装那么就可以提示是否有收到mail

    安装mail (就是一些包)

    命令

    Yum install mutt

    Yum install swaks

    yum install mailx

    测试发送mail,但是如果不修改配置文件,那么只能发发本机环境的各个用户了

    要发送给外部邮箱,请配置邮件配置文件

    例如:

    这里需要简单说明命令

    Mail root –s “hello”

    #表示当前账号下面有接收到的邮件

    命令 mail soar.pang@quantacn.com

    会进入主题输入

    正文输入

    要结束正文输入需要先换行打 .   回车后退出

         

          如果想要知道mail里面的内部命令,那么使用

          命令 ?

          如果要查看账号下面是否有账号mail

          命令: mail

          # 可显示当前账号下面收到的mail

          & 后面可以输入对mail控制的命令

          & d 删除mail

          & q 退出mail管理

          配置mail文件提供接收的邮件服务器

          如下:

          Cat /etc/mail.rc

          #查看文件配置内容

          Vi  /etc/mail.rc

          #编辑配置信息

    命令:crontab –e

       #此时会进入vi编辑页面,可以编辑工作,每项工作一行。

       编辑完成后可以输入:wq进行写入后退出

      

       每项工作格式具有六个字段,每个字段含义如下:

       分钟:0~59

       小时:0~23

       日期:1~31

       月份:1~12

       周:0~7  其中周是比较有趣的 0 和7 都表示星期天

      

       另外还有一些辅助字符

       *(星号):代表任何时候都接受的意思

       ,(逗号):代表分隔时间段 例如:0  3,6  * * * command

       #表示3点、6点各执行一次

     -(减号):代表一段时间范围

     /n(斜线):n代表数字,表示间隔n个单位的意思。例如: */5 表示每隔5分钟。 

    也许并不是你需要的内容,这只是我人生的一些痕迹. -- soar.pang
  • 相关阅读:
    C#高级特性_Attribute
    C#高级特性_Lambda
    委托(delegate)
    C# 属性、索引
    C#中的interface
    枚举型Enum和结构型Stuct
    javascript学习笔记
    github page 和 hexo 搭建在线博客
    2015/9/22 开通博客园
    phoenix 入门
  • 原文地址:https://www.cnblogs.com/Soar-Pang/p/7524425.html
Copyright © 2011-2022 走看看