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
  • 相关阅读:
    973. K Closest Points to Origin
    919. Complete Binary Tree Inserter
    993. Cousins in Binary Tree
    20. Valid Parentheses
    141. Linked List Cycle
    912. Sort an Array
    各种排序方法总结
    509. Fibonacci Number
    374. Guess Number Higher or Lower
    238. Product of Array Except Self java solutions
  • 原文地址:https://www.cnblogs.com/Soar-Pang/p/7524425.html
Copyright © 2011-2022 走看看