前言:带你遨游于linux系统管理知识的海洋,沐浴春日里的阳光,循序渐进,看完之后收获满满。

本次讲解基于linux(centos6.5)虚拟机做的测试,centos7估计以后有时间再更新啊。

linux系统管理概要:进程管理、工作管理、系统资源查看、系统定时任务

一、进程管理

进程的查看:ps命令和top命令以及pstree命令,这几个命令还是很常用的,需要重点掌握。

首先讲讲ps命令的使用方法,下面给出例子和截图方便理解,最好自己动手试一试,学习嘛,就得理论+实践相结合,达到最佳效果。

ps aux 显示所有进程[一般配合grep使用],下面列出aux内容代表的含义:

  • -a 所有进程
  • -u 进程所属用户
  • -x 没有终端控制的进程

例如:
ps aux | grep httpd 查看Apache进程,在这里说明一下,这样使用ps -aux(centos6中会报出一个提示,影响不大)当然也是可行的,不强求记住,linux里面大多数命令后面都接了“-”符号,centos7中使用是没多大区别的。

ps aux | grep nginx 查看nginx进程

讲完了ps aux命令后,再接着看下命令:ps -le 表示显示所有进程(显示进程优先级),如下所示列出le的含义:

  • -l 以长格式显示进程
  • -e 显示所有进程

PS命令的输出内容以及作用:

内容

作用

USER

该进程是由哪个用户产生的

PID

进程的ID号

%CPU

该进程占用CPU的百分比(占用越高越耗费资源)

%MEM

该进程占用物理内存的百分比(占用越高越耗费资源)

VSZ

该进程占用虚拟内存的大小(单位:KB)

RSS

该进程占用真实内存的大小(单位:KB)

TTY

该进程是在哪个终端运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6本地字符界面终端,tty7图形终端。

pts/0-255

代表虚拟终端。

学完了ps aux和ps -le,是不是觉得已经跃跃欲试了,迫不及待的想看看top命令的真正含义,客观别急,我们还得一步一步来,稳扎稳打才是王道。

top [选项],下面给出-d|-b|-n的含义:

  • -d 秒数:指定top命令每隔几秒刷新,默认3秒。
  • -b:使用批处理模式输出,一般和“-n”选项合用。
  • -n次数:指定top命令执行的次数, 一般和“-b”选项合用。

例如:top -b -n 1 > top.log 定向输出到top.log文件中,可以看到更多的信息

接着往下看,top命令的交互模式也挺实用的。

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

?或h

显示交互模式的帮助

P

以CPU使用率排序,默认为此项。

M

以内存使用率排序

N

以PID排序

q

退出top

top命令如下图所示5行,客官请看截图下面的表格,详细的列出了每行命令的含义

1.任务队列信息:这里列出重点load average ,表示系统平均负载,方便你判断系统的健康状态。

内容 含义

top - 21:03:58

系统时间

3:48

系统运行时长

2 users

当前登录用户个数

load average 0.00, 0.00, 0.00

系统在之前1分钟,5分钟,15分钟的平均负载。一般小于1小时,负载小。如果大于1,系统已经超出负荷[重点]

2.进程信息状态:关注重点0 zombie,僵尸进程。

内容 含义

Tasks:  92 total

系统中的进程总数

1 running

正在运行的进程数

91 sleeping

休眠的进程

0 stopped

正在停止的进程

0 zombie

僵尸进程,如果不是0,需要手工检查僵尸进程[重点]

3.CPU信息:CPU这里也有一个需要关注的重点99.8%id,空闲CPU百分比,用于判断系统健康状态。

内容 含义

Cpu(s):  0.1%us

用户模式占用CPU百分比

0.1%sy

系统模式占用CPU百分比

0.0%ni

改变过优先级的用户进程占用CPU百分比

99.8%id

空闲CPU百分比[重点]

0.0%wa

等待输入/输出占用CPU百分比

0.0%hi

硬中断请求服务占用CPU百分比

0.0%si

软中断请求占用CPU百分比

0.0%st

虚拟时间百分比

4.内存信息:关注重点,空闲物理内存,内存占用越高,你的系统越卡,这时服务器负载压力会增加,就要考虑加内存了,或者其它业务需求,配置多台服务器集群。

内容 含义

Mem:   1918460k total

物理内存总量,单位KB

733684k used

已使用物理内存

1184776k free

空闲物理内存[重点]

62880k buffers

作为缓冲的内存数量

5.交换分区(Swap)信息:Swap分区不要觉得它占用了很多空间,就去调小,这样做是不对的,重点关注空闲交换分区大小。

内容 含义

Swap:  2064376k total

交换分区(虚拟内存)的总大小

0k used

已使用交互分区大小

2064376k free

空闲交换分区大小[重点]

153956k cached

作为缓存的交互分区大小

上面了解了ps aux、ps -le以及top命令的用法,下面就讲讲,进程变为僵尸了,看如何处理,在win中通过任务管理器,linux下通过kill命令去找到进程对应的进程号,去干掉它。

杀死进程[注意:不到万不得已的情况下,不要轻易杀死进程],别整天天杀杀杀,我们不是一个杀手,而是一个系统管理员啊。

  • kill [进程ID]
  • kill -l 查看可用的进程信号

想要深入掌握kill命令,客官接着往下看,得了解一些常用的信号代表的意义,列出了部分信号的含义,方便使用:

信号代号

信号名称

说明

SIGHUP

让进程立即关闭,重新读取配置文件后重启.

2

SIGINT

程序终止信号,终止前台进程,相当于快捷键ctrl+c.

8

SIGFPE

发生致命的算术运算错误时发出,不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术的错误.

SIGKILL

立即结束程序的运行,本信号不能被阻塞、处理或忽略,一般用于强制终止进程.

14

SIGALRM

时钟定时信号,alarm函数使用该信号.

15

SIGTERM

正常结束进程的信号,kill命令默认信号.(假如进程已经发生问题,这个信号无法正常终止进程的,此时会尝试SIGKILL信号).

18

SIGCONT

让暂停的进程恢复执行,不能被阻断.

19

SIGSTOP

可以暂停前台进程,相当于快捷键ctrl+z,不能被阻断.

例如:

  • kill -1 3033 重启进程
  • kill -9 3034 强制杀死进程

killall [选项][信号]后面必须接进程名

  • 按进程名杀死进程
  • -i:交互式,询问是否要杀死某个进程
  • -I:忽略进程名的大小写

例如:

  • killall -i -9 httpd 确认是否杀死apache进程

pkill [选项][信号]后面必须接进程名

  • 按进程名杀死进程
  • -t终端号:按终端号踢出用户

例如:

  • pkill -9 -t pts/1   按终端号踢出用户

  • 修改进程的优先级
  • 进程优先级简介:linux操作系统是一个多用户、多任务的操作系统,linux同时运行着非常多的进程。
  • CPU在同一个时钟周期内只运行一个指令。进程的优先级决定了每个进程处理的先后顺序。

注意:用户只能修改NI的值,不能直接修改PRI的值

修改NI时的注意事项:[一般不需要修改,了解就行],如下表格所示

PRI[priority]和NI[nice]这两个值都是优先级,数字越小,代表该进程优先级越高。
NI值范围:-20~19
普通用户可调整NI范围:0~19,而且只能调整自己的进程,只能调高,不能调低
例如:NI为0,只能调大于0
root用户才能设置NI的值为负值
nice [优先级] PID
nice不能修改已经存在的进程的NI的优先级

renice [优先级] PID

  • 修改已经存在的进程的NI的优先级
  • renice -5 3167

二、工作管理

1.简介:在单个登录终端中(登录的shell中)同时管理多个工作的行为。

2.注意事项如下表格:

当前登录终端只能管理当前终端的工作,不能管理其它登录终端的工作。
放入后台命令必须可持续运行一段时间,便于捕捉操作这个命令。
放入后台命令不能和前台用户有交互或许要前台输入,否则放入后台只能暂停,不能执行。

3.把进程放入后台:

  • tar -zcf [文件名] /usr/local/tools/ &
  • 命令放入后台,并且在后台执行

top命令执行

  • 使用ctrl+z命令快捷键,放入后台暂停,使用fg命令恢复到前台

4.jobs命令使用

例如:

  • jobs [-l]
  • -l:显示工作的PID
  • 注意:“+”最后一个放入后台的工作,“-”倒数第二个放入后台的工作。

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

  • %工作号:%号可以省略,注意工作号和PID的区别
  • 工作号是指下图箭头所示的1,2数字:

fg %工作号
参数:

  • fg 1 将top命令恢复到前台

6.将暂停的工作恢复到后台执行[注意:top和vi命令是不可以的]

  • bg %工作号

注意:后台恢复执行的命令不能和前台有交互,否则不能恢复到后台执行。

7.后台命令脱离终端
后台命令脱离登录终端执行的方法:

1.把需要后台执行的命令加入/etc/rc.local文件中[推荐使用]
2.使用系统定时任务,让系统在指定时间执行某个后台命令
3.使用nohup命令[推荐使用]
  • 例如[此时是想到自己之前看RocketMQ官方文档时还不理解nohup这个命令]:
  • RocketMQ启动Broker服务时,先启动mqnamesrv服务放入后台:nohup sh mqnamesrv &
  • 当然也可以自己写个脚本做个测试,多动手,多动脑,有益身心健康。

脚本事先已经写好了,开启两个远程终端时可以看到for.sh脚本在运行如下图:

关闭一个远程终端时也可以看到for.sh脚本在运行如下图:

看完上面两截图的对比,现在大脑中是否有了深刻的印象呢,开启一个终端时使用nohup命令将进程放入后台和开启两个终端关闭其中一个终端做的测试,此时for.sh命令依旧在运行。

三、系统资源查看

首先看下buff[缓冲]和cache[缓存]区别:

buff[缓冲] 加速数据写入硬盘
cache[缓存] 加速数据从硬盘读取

vmstat [刷新延时,刷新次数][重点] 查看系统的健康状态
例如下图:

每个字段的含义如下表格:

process:进程信息字段 menory:内存信息字段 system:系统信息字段 cpu:cpu信息字段
-r:等待运行的进程数,数量越大,系统越繁忙 -swpd:虚拟内存使用情况(单位:KB) -in:每秒中断的进程次数 -us:非内核进程消耗cpu运算时间百分比
-b:不可被唤醒的进程数量,数量越大,系统越繁忙 -free:空余内存容量(单位:KB) -cs:每秒进行的时间切换次数。 sy:内核进程消耗cpu运算时间百分比
  -buff:缓冲内存容量(单位:KB) -in和-cs这两数越大,系统与连接设备通信非常繁忙。 -id:空闲cpu百分比[重点]
  -cache:缓存内存容量(单位:KB)   -st:被虚拟机所盗用的cpu百分比

开机时内核检测信息:

  • dmesg命令

例如:

查看CPU信息:dmesg | grep CPU

free命令查看内存使用状态

  • free[-b|-k|-m|-g]

选项如下表格所示:

选项 含义
-b: 以字节为单位显示
-k: 以KB为单位显示,默认为此项
-m: 以MB为单位显示
-g: 以GB为单位显示

查看cpu信息如下图所示:

  • cat /proc/cpuinfo

uptime命令
查看系统当前时间,运行时间,登录用户以及负载入下图所示:

uanme [选项]

例如:uname -a

选项如下表格:

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

lsb_release命令如下图所示:

  • lsb_release -a 查看系统版本发行版

列出进程打开或使用的文件信息

  • losf[选项]
  • 有些命令就不一一截图了会显得篇幅太长

选项:

命令 内容
-c字符串 只列出以字符串开头的进程打开的文件
-u用户名 只列出某个用户的进程打开的文件
-p pid 列出某个pid进程打开的文件

如下表格所示:

命令 作用
lsof | more  查询系统中所有进程调用的文件
lsof /sbin/init  查询某个文件被哪个进程调用
lsof -c httpd 查看httpd进程调用了哪些文件
lsof -u root  按用户名查询某用户进程调用的文件

四、系统定时任务

1.at命令 一次性定时任务

at访问机制:

如果系统中有/etc/at.allow文件,只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件被忽略)
如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,写入/etc/at.deny文件(黑名单)中的用户不能使用at命令。对root无效
如果系统中两个文件都不存在,只有root用户可以使用at命令

查询是否安装: chkconfig --list | grep atd

查看atd状态:service atd status

at [选项] 时间
选项:

  • -m:at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
  • -c工作号:显示at工作的实际内容

例如:at + now 1 minutes

1分钟后执行hello.sh脚本命令:

后面时间的几种写法举例:

写法 举例
HH:MM 例如:04:30
HH:MM  YYYY-MM-DD 例如:4:30 2018-08-08
HH:MM[AM|PM|] [mouth] [date] 例如:4:30 June 01
HH:MM[AM|PM|] [minutes|hours|days|week] 例如:now + 5minutes 5分钟执行
  • atq:查询当前服务器上的at工作,如下图

  • atm[工作号]:删除指定的at任务

2.cron命令 循环定时任务
crond服务管理与访问控制

  • 查询是否安装 :chkconfig --list | grep cron服务
  • 查看crond状态:service crond status

访问控制:[root用户除外,毕竟是超级用户]

  • 当系统中有/etc/cron.allow文件,只有写入此文件的用户可以使用crontab命令,没有写入的用户则不能使用crontab命令。
  • 同样如果有此文件,/etc/cron.deny文件被忽略,/etc/cron.allow文件优先级更高。
  • 当系统中只有/etc/cron.deny文件时,写入此文件的用户不能使用crontab命令,没有写入的用户可以使用crontab命令。

crontab[选项] 循环定时任务 

[手工执行定时任务]
选项:

  • crontab -r 删除当前用户所有的crontab任务
  • crontab -l 查询crontab任务
  • crontab -e 编辑crontab定时任务

 符号含义如下表所示:

符号含义 例子
“*”:代表任意时间 例如:第一个“*” 每分钟执行一次命令
“,”:代表不连续的时间 例如:“0,9,12,15 * * *命令” 每天的9:00,12:00,15:00都执行一次命令
“-":代表连续的时间范围 例如:“0 8 * * 1-6命令” 每周一到周六的上午8点执行命令
“*/n”:代表每隔多久执行一次 例如:“*/7 * * * *命令”  每隔7分钟执行一遍命令 

* * * * * *执行的任务 ,"*"的含义如下表所示:

内容 含义 范围
第一个“*”号 一小时当中的第几分钟 0-59
第二个“*”号 一天当中的第几小时 0-23
第三个“*”号   一个月当中的第几天 1-31
第四个“*”号 一年当中的第几个月 1-12
第五个“*”号 一周当中的星期几 0-7(0和7都代表星期日)

crontab注意事项:

1.六个选项都不能为空,必须填写。不确定则用“*”代替。
2.最小时效为分钟,最大时效是月。
3.定义时,最好不要把日期和星期放在一条定时任务中执行,容易混淆。
4.定时任务中,不管事直接写命令,还是在脚本中写命令,最好都是绝对路径。

系统的crontab设置:

执行系统定时任务的方法

  • -手工执行定时任务
  • -通过执行命令:crontab -e 配置

系统定时任务

  • 查看cron文件 ls /etc/cron.*

进入到cron.daily目录: 存放脚本

通过 cd/var/log 可以看到一些旧的日志文件:

  •  -第一种把需要定时执行的脚本复制到(/etc/cron.[daily|weekly|monthly]目录中的任意一个)[推荐此方法]
  • -第二种修改/etc/crontab配置文件

3.anacron设置
anacron作用:用来保证在系统关机的时候错过的定时任务,可以在系统开机之后执行。
anacron检测周期:

1.anacron使用一天,七天,一个月作为检测周期
2.在系统的/var/spool/anacron/目录中存在cron.[daily|weekly|monthly]文件,用于记录上次执行cron的时间
3.和当前时间作比较,如果两个时间差超过了anacron的指定时间差,证明cron任务被执行。

Centos 6.x的区别:

1.在老的centos版本中, /etc/cron.[daily|weekly|monthly]这些目录会被cron调用,也会被anacron调用,容易重复执行
2.只会被anacron调用,避免重复执行
3.anacron不再是服务,而是系统命令

-anacron配置文件含义
vi /etc/anacrontab 如下图:

  • RANDOM_DELAY=45                       最大随机延迟
  • START_HOURS_RANGE=3-22        执行时间范围:3-22点
天数 强制延迟(分)  工作名称  实际执行命令
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

以cron.daily工作来说明执行过程:

1.首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间
2.和当前时间作比较,如果两个时间的差值超过一天,就执行cron.daily工作
3.执行这个工作只能在03:00-22:00之间
4.执行工作强制延迟时间为5分钟,再随机延迟0-45分钟
5.使用nice命令指定默认优先级,使用run-parts脚本执行/etc/daily目录中所有可执行文件

PS:忽然想起2年前就开始总结这篇笔记了,前几天阅读当时的笔记,写的太粗糙了,看完之后,下决心整理一篇详细一点的文章,如今在原来的基础上加以雕琢,完成自我超越。

总结完后自己也受益匪浅,读者阅读到了,也有些许收获吧,有错误的地方也希望各位客官帮忙指正,最后的最后,我们一起学习,一起进步,每天都有好心情。

Linux系统管理图文详解超详细精心整理的更多相关文章

  1. Transform详解(超详细) Attention is all you need论文

    一.背景 自从Attention机制在提出 之后,加入Attention的Seq2 Seq模型在各个任务上都有了提升,所以现在的seq2seq模型指的都是结合rnn和attention的模型.传统的基 ...

  2. poi导出word表格详解 超详细了

    转:非常感谢原作者 poi导出word表格详解 2018年07月20日 10:41:33 Z丶royAl 阅读数:36138   一.效果如下 二.js代码 function export_word( ...

  3. JAVA反射概念及使用详解(超详细)

    JAVA反射概念及使用详解 一.什么是反射? 反射:框架设计的灵魂 框架:半成品软件.可以在框架的基础上进行软件开发,简化编码 反射:将类的各个组成部分封装为其他对象,这就是反射机制 ​ 好处: ​ ...

  4. 【Linux】saltstack的使用详解 超详细

    一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...

  5. VMware安装RedHat Linux虚拟机图文详解

    创建Red Hat Linux虚拟机 1.打开VMware,开始创建虚拟机 点击菜单[文件]->[新建虚拟机]. 2.默认典型,单击[下一步] 3.选择安装来源 在这里,我们选择安装来源为[安装 ...

  6. Nginx优化详解-------超详细

      一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cp ...

  7. http协议详解(超详细)

    http1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consorti ...

  8. 全网最详细的Git学习系列之安装各个Git图形客户端(Windows、Linux、Mac系统皆适用ing)(图文详解)

    不多说,直接上干货! 目前Git图形客户端 TortoiseGit .SourceTree .GitUp .SmartGit .QGit .GitX .Gitnub.Tower .Git-cola . ...

  9. Git学习系列之Windows上安装Git详细步骤(图文详解)

    前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...

随机推荐

  1. python从小白到大咖方便查看链接

    直通BAT面试题 PyCharm快捷键 一.python基础 01 python基础 02python中基本数据类型以及运算符 03流程控制之if,while,for 04基本数据类型内置方法一 05 ...

  2. 生产环境Shell脚本Ping监控主机是否存活(多种方法)

    在网上针对shell脚本ping监控主机是否存活的文档很多,但大多都是ping一次就决定了状态,误报率会很高,为了精确判断,ping三次不通再发告警,只要一次ping通则正常.于是,今天中午抽出点时间 ...

  3. linux中的交换分区(swap)及优化

    SWAP(交换内存) 1.什么是交换内存? 在硬盘上创建一块区域,当你的物理内存快要被用光的时候,内核临时的 物理内存上的文件数据交换到硬盘上的这段区域上面,当物理内存有闲置的时候 在把交换内存上的数 ...

  4. December 07th, Week 49th Saturday, 2019

    Snowflakes are pretty patterns etched in water's dreams. 雪花,是水在梦中镌刻的美丽图案. From Anthony T.Hincks. Tod ...

  5. [洛谷P1169][题解][ZJOI2007]午餐

    这是题目吗? 显然的DP,讲几个重要的地方 1.贪心:让吃饭时间长的先排队(证明从略) 2.状态: f[i][j][k]代表前i个人,一号时间j,二号时间k显然MLE 所以压缩成f[i][j]代表前i ...

  6. 信号处理函数陷阱:调用malloc导致死锁[转]

    概览 因malloc是加锁的,上网了解的相关信息,额外了解到信号处理规范使用,mark 正文 在执行malloc的过程中,跳转到了信号处理函数中.而信号处理函数在调用某个系统api时,内部又调用了ma ...

  7. dom元素的tabindex属性介绍及在vue项目中的应用

    dom元素的tabindex属性介绍及在vue项目中的应用 tabindex属性作用 让普通dom元素变为可聚焦的元素 让普通dom元素可以参与顺序键盘导航(通常使用Tab键,因此得名). tabin ...

  8. [考试反思]1110csp-s模拟测试108:消遣

    是套废题.T1题面错了,T2细节多而暴力>部分分,T3题目错了. T1:打表 题面应该是输出差值期望而不是答案值期望. 看到题目,果断打表. 答案就是所有值差之和除2的k次方. #include ...

  9. Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)

    一.前言 这两天看tomcat,查阅 tomcat 怎么承载高并发时,看到了backlog参数.我们知道,服务器端一般使用mq来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理.其 ...

  10. event demo

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...