码迷,mamicode.com
首页 > 系统相关 > 详细

20170915 linux系统管理培训

时间:2017-09-15 10:15:04      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:mail   line   wak   ges   物理内存   sgi   帮助   pid   相关   

  

  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分钟。 

 

20170915 linux系统管理培训

标签:mail   line   wak   ges   物理内存   sgi   帮助   pid   相关   

原文地址:http://www.cnblogs.com/Soar-Pang/p/7524425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!