Linux运维——系统管理

Linux运维——系统管理

文章目录

  • Linux运维——系统管理
    • 一、进程管理
      • 1、进程简介
        • 1.1、什么是进程管理
        • 1.2、进程管理的作用
      • 2、进程的查看
        • 2.1PS命令
        • 2.2TOP命令
        • 2.3pstree命令
      • 3、进程管理
        • 3.1KILL命令
        • 3.2killall命令
        • 3.3pkill命令
    • 二、工作管理
      • 1、工作管理简介
      • 2、如何将命令放入后台
        • 2.1使用“命令 &”
        • 2.2使用ctrl+z快捷键
      • 3、后台命令管理
        • 3.1查看后台的工作
        • 3.2将后台暂停的工作恢复到前台执行
        • 3.3将后台暂停的工作恢复到后台执行
      • 4、后台命令脱离登录终端运行
    • 三、系统资源查看
      • 1、vmstat命令监控系统资源
      • 2、dmesg显示开机时内核检测信息
      • 3、free命令查看内存使用状态
      • 4、查看CPU信息
      • 5、查看本机登陆用户信息
      • 5.1、w命令
      • 5.2、who命令
      • 6、uptime命令
      • 7、查看系统与内核相关信息
    • 四、系统定时任务
      • 1、一次性执行定时任务
        • 1.1、`at`服务管理与访问控制
        • 1.2、`at`命令使用
        • 1.3、管理`at`定时任务
      • 2、循环定时任务
        • 2.1、`crond`服务管理与访问控制
        • 2.2、用户`crontab`设置
      • 3、anacron

一、进程管理

1、进程简介

1.1、什么是进程管理

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体。都有自己的地址空间,并占用一定的系统资源。

1.2、进程管理的作用

  • 判断服务器健康装填。
  • 查看系统中所有的进程
  • 杀死进程

2、进程的查看

2.1PS命令

用来静态显示系统中进程的命令。

  • 查看系统中的所有进程,使用BSD操作系统格式
ps aux
  • 查看系统中所有进程,使用Linux标准命令格式
ps -le
  • 常用选项
a	显示一个终端所有进程,处理绘画引线
u	显示进程的归属用户及内存的使用情况
x	显示没有控制终端的进程
  • ps aux命令输出项
    • USER:该进程是由那个用户产生的
    • PID:进程的ID号
    • %CPU:该进程占用的cpu资源的百分比
    • %MEM:该进程占用的物理内存的百分比
    • VSZ:该进程占用虚拟内存的大小,单位kb
    • RSS:该进程占用实际物理内存的大小,单位kb
    • TTY:该进程是在那个终端中运行。
      • 其中tty1-7代表本地控制台终端(可以通过alt+F1-F7键切换不同的终端)tty1-6是本地字符界面终端,tty7是图形终端。
      • pts/0-255代表虚拟终端,一般是远程连接的终端,第一个远程连接占用的是pts/0终端,依次增长。
    • STAT:进程状态
      • D:不可被唤醒的睡眠状态,通常用于I/O情况
      • R:该进程正在运行
      • S:该进程正在睡眠状态,可以被唤醒
      • T:停止状态,可能是在后台暂停或进程在除错状态
      • Z:僵尸进程。进程已经终止,但是部分程序还在内存当中
      • <:高优先级
      • N:低优先级
      • L:被锁入内存
      • s:包含子进程
      • l:多线程
      • +:位于后台
    • START:该进程的启动时间
    • TIME:该进程占用CPU的运算时间
    • COMMAND:产生此进程的命令名

2.2TOP命令

  • 命令格式
top [选项]
  • 选项
-d [秒数]:指定top命令每个几秒更新。
-b:使用批处理模式输出。一般和“-n”选项合用,用于把top命令重定向到文件名
-n [次数]:指定top命令执行的次数。
-p:指定PID。只查看某个PID的进程
-s:使top在安全模式运行,避免在交互模式中出现错误
-u [用户名]:只监听某个用户的进程
  • 交互模式选项
?或h:显示交互模式的帮助
P:以CPU使用率排序,默认就是此项
M:以内存的使用率排序
N:以PID排序
T:按照CPU的积累运算时间排序,即TIME项排序

统计信息区:

前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。

  • 第一行:任务队列信息,同 uptime 命令的执行结果

    • 14:06:23:当前系统时间
    • up 1 days, 12:44:系统已运行时间
    • 2 users:已登录用户数
    • load average: 1.15, 1.42, 1.44:分别为1分钟、5分钟、15分钟的负载情况。
  • 第二行:Tasks — 任务(进程)

    • Tasks:95total:系统中的进程总数
    • running:运行进程数
    • sleep:休眠进程数
    • stoped:停止进程数
    • zombie:僵尸状态进程数
  • 第三行:cpu状态信息

    • 5.9%us:用户空间占用CPU的百分比。

    • 3.4% sy:内核空间占用CPU的百分比。

    • 0.0% ni:改变过优先级的进程占用CPU的百分比

    • 90.4% id:空闲CPU百分比

    • 0.0% wa:IO等待占用CPU的百分比

    • 0.0% hi:硬中断(Hardware IRQ)占用CPU的百分比

    • 0.2% si:软中断(Software Interrupts)占用CPU的百分比

  • 第四行:内存状态

    • 32949016k total:物理内存总量

    • 14411180k used:使用中的内存总量

    • 18537836k free:空闲内存总量

    • 169884k buffers:缓存的内存量

  • 第五行:swap交换分区信息

    • 32764556k total:交换区总量

    • 0k used:使用的交换区总量

    • 32764556k free:空闲交换区总量

    • 3612636k cached:缓冲的交换区总量

  • 七行以下:各进程(任务)的状态监控

    • PID:进程id
    • USER:进程所有者
    • PR:进程优先级
    • NI:nice值。负值表示高优先级,正值表示低优先级
    • VIRT:进程使用的虚拟内存总量,单位kb。
    • RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    • SHR:共享内存大小,单位kb
    • S:进程状态
      • D=不可中断的睡眠状态
      • R=运行
      • S=睡眠
      • T=跟踪/停止
      • Z=僵尸进程
    • %CPU:上次更新到现在的CPU时间占用百分比
    • %MEM:进程使用的物理内存百分比
    • TIME+:进程使用的CPU时间总计,单位1/100秒
    • COMMAND:进程名称(命令名/命令行)

2.3pstree命令

  • 格式
pstree [选项]
  • 选项
-p:显示进程的PID
-u:显示进程的所属用户

3、进程管理

  • 系统中可以识别的型号较多,可以使用命令kill -lman 7 signal来查询。
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	
  • 常用信号
1)SIGHUP 重启
9)SIGKILL 强制终止

3.1KILL命令

  • 格式
kill [信号] PID

3.2killall命令

使用进程名结束进程,通常用于杀死一类进程

  • 格式
killall [选项] [信号] 进程名
  • 选项
-i:交互式,询问是否要杀死某个进程
-I:忽略进程名的大小写

3.3pkill命令

pkill命令和killall命令赔偿类似,也是按照进程名来杀死进程。

  • 语法
pkill [选项] [信号] 进程名
选项:
-t [终端号]:按照终端号踢出用户

二、工作管理

1、工作管理简介

  • 前台是指当前可以操控和执行命令的操作环境,后台是指工作可以自行运行,但是不能使用ctrl+c来终止,只能使用fg/bg来调用工作
  • 当前的登录终端,只能管理当前终端的工作,不能管理其他登录终端的工作。
  • 后台的命令可以持续运行一段时间,这样我们才能捕捉和操作这个工作。
  • 放入后台的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,不能执行。

2、如何将命令放入后台

2.1使用“命令 &”

在命令后加“空格&”,将命令放入后台执行。

2.2使用ctrl+z快捷键

在命令执行过程中按ctrl+z键,后台将会在后台暂停。

3、后台命令管理

3.1查看后台的工作

jobs [选项]
选项:
-l:显示工作的PID号

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

fg %工作号

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

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

bg %工作号

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

  • 将要执行的命令加入/etc/rc.local文件中,让系统在启动时执行这个后台程序。
  • 使用系统定时任务,让系统在指定的时间执行命令。
  • 使用nohup命令
nohup [命令] &

三、系统资源查看

1、vmstat命令监控系统资源

vmstat [刷新延时单位秒] [刷新次数]
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 357072  24492 309140    0    0   198    46  115  104  2  4 92  2  0	
 0  0      0 357188  24492 309168    0    0     0     0   59   92  0  0 100  0  0	
 0  0      0 357188  24492 309168    0    0     0     0   38   57  0  0 100  0  0

输出信息:

  • procs:进程信息字段

    • r:等待运行的进程数
    • b:不可被唤醒的进程数量
  • memory:内存信息字段,单位KB

    • swpd:虚拟内存的使用情况
    • free:空闲的内存容量
    • buff:缓冲的内存容量
    • cache:缓存的内存容量
  • swap:交换分区的信息字段,单位KB

    • si:从磁盘中交换到内存中数据的数量
    • so:从内存中交换到磁盘中数据的数量
  • io:磁盘读写信息字段,单位块

    • bi:从块设备读入数据的总量
    • bo:写入到块设备的数据的总量
  • system:系统信息字段

    • in:每秒被中断的进程次数
    • cs:每秒钟进行的事件切换次数
  • cpu:cpu信息字段

    • us:非内核进程消耗cpu运算时间的百分比
    • sy:内核进程消耗cpu运算时间的百分比
    • id:空闲cpu的百分比
    • wa:等待io所消耗的cpu百分比
    • st:被虚拟机所盗用的cpu占比

2、dmesg显示开机时内核检测信息

dmesg | grep cpu
dmesg | grep eth0

3、free命令查看内存使用状态

free [选项]
-b:以字节为单位显示
-k:以KB为单位显示(默认)
-m:以MB为单位显示
-g:以GB为单位显示
-h:根据大小添加的单位

              total        used        free      shared  buff/cache   available
Mem:           1.8G        1.1G         77M        1.7M        604M        531M
Swap:            0B          0B          0B

输出信息

  • total:总内存数
  • used:使用的内存数
  • free:空闲的内存数
  • shared:多个进程共享的内存数
  • buffers:缓冲内存数
  • cached:缓存的内存数

4、查看CPU信息

cpu信息保存在/proc/cpuinfo

processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 85
model name	: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
stepping	: 4
microcode	: 0x1
cpu MHz		: 2500.008
cache size	: 33792 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 spec_ctrl intel_stibp
bogomips	: 5000.01
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

5、查看本机登陆用户信息

5.1、w命令

w
 19:46:56 up 44 days, 11:17,  1 user,  load average: 0.16, 0.11, 0.13
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    xxx.xxx.xxx.xxx   19:21    0.00s  0.02s  0.00s w
  • 第一行
    • 系统时间
    • 运行时间
    • 用户登陆数
    • 1分钟、5分钟、15分钟前的平均负载
  • 第二行
    • USER:登陆的用户名
    • TTY:登陆终端
    • FROM:从哪个IP地址登陆
    • LOGIN@:登陆时间
    • IDLE:用户闲置时间
    • JCPU:和该终端连接的所有进程占用的CPU运算时间
    • PCPU:当前进程所占用的CPU运算时间
    • WHAT:当前正在运行的命令

5.2、who命令

查看系统中已经登录的用户

who
root     pts/0        2020-05-08 19:21 (xxx.xxx.xxx.xxx)

6、uptime命令

显示系统的启动时间和平均负载,即top命令的第一行

uptime
19:56:01 up 44 days, 11:26,  1 user,  load average: 0.45, 0.15, 0.14

7、查看系统与内核相关信息

uname命令查看

uname [选项]
-a:查看系统所有相关信息
-r:查看内核版本
-s:查看内核名称

使用file命令判断当前系统位数

file /bin/ls

[root@localhost ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

使用lsb_release -a查看当前Linux系统的发行版本

lsb_release -a

LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.7.1908 (Core)
Release:	7.7.1908
Codename:	Core

四、系统定时任务

1、一次性执行定时任务

1.1、at服务管理与访问控制

at命令需要atd服务的支持

  • 查看atd服务状态
service atd status 

atd服务启动后,at命令才可以正常使用。at访问控制文件为/etc/at.allow文件(白名单)和/etc/at.deny文件(黑名单)

  • 若系统中存在/etc/at.allow文件,那么只有写入/etc/at.allow文件的用户可以使用at命令,/etc/at.deny文件会被忽略。
  • 若系统中没有/etc/at.allow文件,只有/etc/at.deny文件,则在黑名单文件中的用户不可以使用at命令。注:对root用户不生效。
  • 若系统中两个文件都不存在,那么只有root用户可以使用at命令。

1.2、at命令使用

at [选项] [时间]
-m:当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
-c [工作号]:显示该at工作的实际内容
时间:
	HH:MM
	HH:MM YYY-MM-DD
	HH:MM[am|pm] [month] [date]
	HH:MM[am|pm] + [minutes|hours|days|weeks]:在指定的时间基础上加多久执行
  • 示例
[root@localhost study]# at now + 1 minutes
at> /root/study/hello.sh >> /root/study/hello.txt
at> <EOT>   # 使用ctrl+d保存任务
job 3 at 2020-05-10 12:34
  • 查看at命令任务
at -c [工作号]
......
${SHELL:-/bin/sh} << 'marcinDELIMITER732e1540'
/root/study/hello.sh >> hello.txt

1.3、管理at定时任务

  • 查看任务
atq
2	2020-05-10 12:24 a root
  • 删除任务
atrm [工作号]

2、循环定时任务

2.1、crond服务管理与访问控制

crontab命令需要crond服务支持。

  • 查看服务状态
service crond status

同at命令,/etc/cron.allow白名单,/etc/cron.deny黑名单

2.2、用户crontab设置

crontab [选项]
-e:编辑定时任务
-l:查询任务
-r:删除当前用户所有任务
-u [用户名]:修改或删除其他用户的任务,只有root用户可用
  • 示例
crontab -e
* * * * * [需要执行的任务]
“*”分别表示:
	1、一小时当中的第几分钟,0~59
	2、一天中的第几小时,0~23
	3、一个月中的第几天,1~31
	4、一年中的第几月,1~12
	5、一周当中的星期几,0~7,(0和7都表示星期日)
*:表示任意时间
,:表示不连续的时间
-:表示连续的时间范围
*/n:表示内个多久执行一次
  • 月份的天数需小于29
  • 不要同时设置星期和天数,只要满足星期或天数中的一个条件任务就会执行

3、anacron

定时任务(cron)不会在关机时执行,anacron就是用来解决这个问题的。anacron会使用一天、七天、一个月作为检测周期,用来判断是否有定时任务在关机时没有执行。/var/spool/anacron/目录中保存着anacron上次执行的时间,anacron会去读取这些文件中的时间,然后和当前时间做比较,若两个时间的差值超过了anacron的指定时间,就说明定时任务漏掉了没有执行,这时anacron就会执行漏掉的定时任务。

  • anacron配置文件
vim /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 最大随机延迟
RANDOM_DELAY=45
# 可以执行的时间范围
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
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

执行过程

  • 读取/var/spool/anacron/cron.daily中的上一次执行anacron执行的时间
  • 和当前时间比较,差值超过一天久智信cron.daily
  • 这个工作只能在指定的时间段执行
  • 强制延迟5分钟,再次随机延迟0-45分钟

你可能感兴趣的:(Linux运维)