系统管理

简要介绍

我们可以调用任务管理器,查看windows电脑的cpu状态,内存状态。运维工程师大部分情况下需要让服务器的使用情况保持在:内存:70%,cpu:90%。

判断服务器健康状态:通过监控集群,查看服务器的状态,及时进行修复调整!

查看进程:使用查看进程的工具,可以查看该进程对于服务器的内存与cpu的占用。除非进程出问题了,不然千万不要强行停止(kill -9)。千万不要删除正常的进程,比如apache,启动的核心!除非你有集群!!!!!

杀死进程:在服务器,千万不要随便使用kill命令!!!

进程的查看

ps

用来静态显示系统中进程的命令。不过这个命令有些特殊,它的部分命令的选项不能加入“-”,比如命令“ps aux”,其中“aux”是选项,但是这个选项不能加入“-”。

这是因为ps命令的部分选项需要遵守BSD操作系统的格式。所以ps命令的常用选项的组合是固定的.

  1. ps aux #查看了系统中所有进程,使用BSD操作系统格式
  2. ps -le #查看了系统中所有进程,使用Linux标准命令格式

选项:

  1. a:显示一个终端的所有进程,除了会话引线
  2. u:显示进程的归属用户及内存的使用情况
  3. x:显示没有控制终端的进程
  4. -l:长格式显示。显示更加详细的信息
  5. -e:显示所有进程,和-A作用一致

尚硅谷笔记-系统管理 - 图1

名称 介绍
USER 该进程由哪个用户产生的
PID 进程的ID号
%CPU 该进程占用CPU资源的百分比,占用越高,进程越耗费资源
%MEM 该进程占用物理内存的百分比,占用越高,进程越耗费资源
VSZ 该进程占用虚拟内存的大小,单位KB
RSS 该进程占用实际物理内存的大小,单位KB
TTY 该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端
STAT 进程状态。
START 该进程的启动时间
TIME 该进程占用CPU的运算时间,注意不是系统时间。
COMMAND 产生此进程的命令名,看哪些进程在运行

TTY:可以通过alt+F1-F7键切换不同的终端),tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端,一般是远程连接的终端,第一个远程连接占用的是pts/0终 端,第二个远程连接占用pts/1,依次增长。 ? 表示是系统进程。也就是内核生产的进程!

STAT

状态名称 状态介绍
D 不可被唤醒的睡眠状态,通常用于I/O情况
R 该进程正在运行
S 该进程在睡眠状态,可被唤醒(大多进程的状态)
T 停止状态,可能是在后台暂停或进程在除错状态
W 内存交互状态(从2.6内核开始无效)
X 死掉的进程(应该不会出现)
Z 僵尸进程。进程已经终止,但是部分程序还在内存当中。
< 高优先级(以下状态在BSD格式当中出现)
N 低优先级
L 被锁入内存
s 包含子进程
l 多线程(小写L)
+ 位于后台

top/pstree

htop常用命令:

  1. top -p 15273 #使用top只查看进程id为15273的进程
  2. top k+PID #直接杀掉进程
  3. top -d 2 #每秒两次刷新进行查看管理器
  4. top -u root #只监听root用户的进程
  5. top -b -n 1 > test.txt #监听一次的数据,添加到文件中!

pstree:一般用来查看进程PID和子进程

  1. pstree -up #显示进程的PID和所属用户

杀死进程

系统中可识别的信号很多,使用kill -l命令可以查询。

常见信号:

信号代号 信号名称 说明
1 SIGHUP 立刻关闭进程,并且重新读取配置文件后重启
2
程序终止信号,用于终止前台进程。相当于输出ctrl+c
8

9 SIGKILL 用来立刻关闭进程,本信号不能被堵塞忽略。
14
时钟定时信号,计算的是实际的时间或时钟时间
15
正常结束进程的信号,kill的默认信号。但是无法正常阻止进程
18
让暂停的进程恢复执行
19
暂停进程,类似ctrl+z

kill常用命令:

  1. kill -1 112312 #重启进程
  2. kill -9 123123 #强行杀死进程
  3. killall -i sshd #交互式,强行关闭所有sshd进程
  4. pkill -9 -t tty/1 #踢出tty1用户

工作管理

后台管理有几个事项需要大家注意:

前台是指当前可以操控和执行命令的这个操作环境,后台是指工作可以自行运行,但是不能直接用ctrl+c来终止它,只能使用fg/bg来调用工作;

放入后台的命令必须可以持续运行一段时间,这样我们才能扑捉和操作这个工作。如果把ls命令放入后台执行,它很快就会执行完成,我们很难操作它。放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行。比如vi命令放入后台只能暂停,而不能执行,因为vi需要前台输入信息。top命令也不能放入后台执行,而只能放入后台暂停,因为top命令需要和前台有交互。

把命令放入后台

方法1:

命令 &

  1. tar -zcf test.tar.gz /etc/* & #压缩etc下的文件,放到后台进行压缩

方法2:

直接ctrl+z 两者的区别在于,前者是直接放入后台运行,如果该命令能运行了会继续运行。而后者是先暂停,然后再放入后台。

后台管理命令

查看后台工作

  1. jobs -l #展示后台程序并且显示PID

此时输入Jobs会显示 工位号——进程状态——执行的命令

尚硅谷笔记-系统管理 - 图2

将后台暂停的工作恢复到前台执行

  1. fg 工位号

把后台暂停的工作恢复到后台执行

  1. bg 工位号

后台命令脱离登录终端运行

我们已经知道把命令放入后台,只能在当前登录终端执行。

那如果我是远程管理的服务器,在远程终端中执行了后台命令,这时我退出登录,这个后台命令会被终止。但是我们确实需要在远程终端中执行某些后台命令,该如何执行呢?

  • 第一种方法:

把需要后台执行的命令加入/etc/rc.local文件,让系统在启动时执行这个后台程序。这种方法的问题是,服务器时不能随便重启的,万一有临时后台任务,就不能执行。

  • 第二种方法:

让系统在指定的时间执行某个后台命令。这样放入后台的命令与终端无关,是不依赖登录终端的。

  • 第三种方法

nohup命令的作用就是让后台工作在离开操作终端时,也能够正确的在后台执行。

  1. nohup [命令] &

系统资源查看

vmstat

  1. vmstat 1 3 #查看监控系统资源

尚硅谷笔记-系统管理 - 图3

procs:进程信息字段:

  1. r:等待运行的进程数,数量越大,系统越繁忙。
  2. b:不可被唤醒的进程数量,数量越大,系统月繁忙。

memory:内存信息字段:

  1. swpd:虚拟内存的使用情况,单位KB
  2. free:空闲的内存容量,单位KB
  3. buff:缓冲的内存容量,单位KB
  4. cache:缓存的内存容量,单位KB

swap:交换分区的信息字段:

  1. si:从磁盘中交换到内存中数据的数量,单位KB
  2. so:从内存中交换到磁盘中数据的数量,单位KB。此两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差。

io:磁盘读写信息字段:

  1. bi:从块设备读入数据的总量,单位是块。
  2. bo:写到块设备的数据的总量,单位是块。此两个数越大,代表系统的I/O越繁忙。

system:系统信息字段:

  1. in:每秒被中断的进程次数。
  2. cs:每秒钟进行的事件切换次数。此两个数越大,代表系统与接口设备的通信非常繁忙。

CPU:CPU信息字段:

  1. us:非内核进程消耗CPU运算时间的百分比。
  2. sy:内核进程消耗CPU运算时间的百分比。
  3. id:空闲CPU的百分比。
  4. wa:等待I/O所消耗的CPU百分比。
  5. st:被虚拟机所盗用的CPU占比。

dmesg

显示开机时内核检测信息

  1. dmesg | gre CPU #查看CPU信息

free

查看内存的使用情况

  1. free [-b|-k|-m|-g]

选项:

  1. -b:以字节为单位显示
  2. -k:以KB为单位显示,默认就是以KB为单位显示
  3. -m:以MB为单位显示
  4. -g:以GB为单位显示

尚硅谷笔记-系统管理 - 图4

/proc/cpuinfo

查看cup信息

尚硅谷笔记-系统管理 - 图5

w/who

查看当前在线的用户

uptime

uptime命令的作用就是显示系统的启动时间和平均负载,也就是top命令的第一行。其实w命令也能看到这一行的数据,具体原意使用哪个命令看个人习惯。

uname

查看内核的相关信息,命令如下:

  1. #uname [选项]
  2. uname -r #查询内核
  3. uname -a #查看更多信息

选项:

  1. -a:查看系统所有相关信息;
  2. -r:查看内核版本;
  3. -s:查看内核名称。

判断系统位数

  1. file /bin/ls

查看发行版本

  1. lsb_release -a