没有安装操作系统的计算机,通常被称为裸机
如果想在 裸机 上运行自己所编写的程序,就必须用机器语言书写程序
如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序
-是现代计算机系统中 最基本和最重要 的系统软件
-是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展
-主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用
-而其他的诸如编译程序、数据库管理系统,以及大量的应用软件,都直接依赖于操作系统的支持
桌面操作系统
Windows 系列: 用户群体大
macOS: 适合于开发人员
Linux: 应用软件少
服务器操作系统
Linux: 1、安全、稳定、免费 2、占有率高
Windows Server: 1、付费 2、占有率低嵌入式操作系统
Linux
移动设备操作系统
IOS
Android(基于Linux)
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
-虚拟系统通过生成现有操作系统的全新虚拟镜像,具有真实操作系统完全一样的功能
-进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响
-而且能够在现有系统与虚拟镜像之间灵活切换的一类操作系统
在把 UNIX 移植到其他类型的计算机上使用时,C 语言强大的移植性(Portability)在此显现
机器语言和汇编语言都不具有移植性,为 x86 开发的程序,不可能在 Alpha,SPARC 和 ARM 等机器上运行
而 C 语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的 C 语言编译器和库,然后将 C 源代码编译、连接成目标二进制文件之后即可运行
-因为 AT&T(通用电气) 的政策改变,在 Version 7 Unix 推出之后,发布新的使用条款,将 UNIX 源代码私有化,在大学中不再能使用 UNIX 源代码
-1991 年 林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,尝试着在Minix 上做一些开发工作
-因为 Minix 只是教学使用,因此功能并不强,林纳斯 经常要用他的终端 仿真器(Terminal Emulator) 去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了 Linux 第一个内核的雏形,当时,他年仅 21 岁
-林纳斯利用GNU的bash 当做开发环境,gcc 当做编译工具,编写了 Linux 内核,一开始 Linux 并不能兼容 Unix
-即 Unix上跑的应用程序不能在 Linux 上跑,即应用程序与内核之间的接口不一致
-一开始 Linux 只适用于 386,后来经过全世界的网友的帮助,最终能够兼容多种硬件
**内核(kernel)**是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层
Linux 内核版本又分为 稳定版 和 开发版,两种版本是相互关联,相互循环
-**稳定版:**具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序
-**开发版:**由于要试验各种解决方案,所以变化很快
-内核源码网址:http://www.kernel.org
**Linux 发行版(也被叫做 GNU/Linux 发行版)**通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件
常见的发行版本如下:
Ubuntu
Redhat
Fedora
openSUSE
Linux Mint
Debian
Manjaro
Mageia
CentOS
Arch
服务器领域
Linux 在服务器领域的应用是其重要分支
Linux 免费、稳定、高效等特点在这里得到了很好的体现
-早期因为维护、运行等原因同样受到了很大的限制
-近些年来 Linux 服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛
-此领域是传统 Linux 应用最薄弱的环节
-传统 Linux 由于界面简单、操作复杂、应用软件少的缺点,一直被 Windows 所压制嵌入式领域
-近些年来 Linux 在嵌入式领域的应用得到了飞速的提高
-Linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点,使其近些年来在嵌入式领域的应用得到非常大的提高
个人桌面领域
此领域是传统 Linux 应用最薄弱的环节
传统 Linux 由于界面简单、操作复杂、应用软件少的缺点,一直被 Windows 所压制
近些年来随着 Ubuntu、Fedora 等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,Linux 在个人桌面领域的占有率在逐渐的提高
man 获得帮助信息
help 获得shell内置命令的帮助信息
1.基本语法
help 命令 功能描述:获得shell内置命令的帮助信息
常用快捷键
ctrl + c 停止进程
ctrl+l 清屏;彻底清屏是:reset
ctrl + q 退出
善于用tab键 提示(防止敲错)
上下键 查找执行过的命令
ctrl +alt linux和Windows之间切换
pwd 显示当前工作目录的绝对路径
pwd: print working directory 打印工作目录
1.基本语法
pwd 功能描述:显示当前工作目录的绝对路径
ls 列出目录的内容
ls:list 列出目录内容
1.基本语法
ls (选项)(目录或是文件)
2.选项说明
-a 全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-l 长数据串列出,包含文件的属性与权限等等数据;(常用)
-h 人性化显示
3.显示说明
每行列出的信息依次是:文件类型与权限 链接数 文件属主 文件属组 文件大小用byte来表示 建立或最近修改的时间和名字
cd 切换目录
cd:Change Directory切换路径
1.基本语法
cd [参数]
2.参数说明
cd 绝对路径 切换路径
cd相对路径 切换路径
cd ~或者cd 回到自己的家目录
cd - 回到上一次所在目录
cd … 回到当前目录的上一级目录
cd -P 跳转到实际物理路径,而非快捷方式路径
mkdir 创建一个新的目录
mkdir:Make directory 建立目录
1.基本语法
mkdir [选项] 要创建的目录
2.选项说明
-p 创建多层目录
rmdir 删除一个空的目录
rmdir:Remove directory 移动目录
1.基本语法:
rmdir 要删除的空目录
touch 创建空文件
1.基本语法
touch 文件名称
cp 复制文件或目录
1.基本语法
cp [选项] source dest 功能描述:复制source文件到dest
2.选项说明
-r 递归复制整个文件夹
3.参数说明
source 源文件
dest 目标文件
4.经验技巧
强制覆盖不提示的方法:\cp
rm 移除文件或目录
rm [选项] deleteFile 功能描述:递归删除目录中所有内容
2.选项说明
-r 递归删除目录中所有内容
-f 强制执行删除操作,而不提示用于进行确认。
-v 显示指令的详细执行过程
mv 移动文件与目录或重命名
1.基本语法
(1)mv oldNameFile newNameFile (功能描述:重命名)
(2)mv /temp/movefile /targetFolder (功能描述:移动文件)
cat 查看文件内容
查看文件内容,从第一行开始显示。
1.基本语法
cat [选项] 要查看的文件
2.选项说明
-n 显示所有行的行号,包括空行。
3.经验技巧
一般查看比较小的文件,一屏幕能显示全的。
more 文件内容分屏查看器
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键,详见操作说明。
1.基本语法
more 要查看的文件
2.操作说明
空白键 (space) 代表向下翻一页;
Enter 代表向下翻『一行』;
q 代表立刻离开 more ,不再显示该文件内容。
Ctrl+F 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
less 分屏显示文件内容
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1.基本语法
less 要查看的文件
2.操作说明
空白键 向下翻动一页;
[pagedown] 向下翻动一页
[pageup] 向上翻动一页;
/字串 向下搜寻『字串』的功能;n:向下查找;N:向上查找;
?字串 向上搜寻『字串』的功能;n:向上查找;N:向下查找;
q 离开 less 这个程序;
echo
echo输出内容到控制台
1.基本语法
echo
选项:
-e: 支持反斜线控制的字符转换
控制字符 作用
\ 输出\本身
\n 换行符
\t 制表符,也就是Tab键
head 显示文件头部内容
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。
1.基本语法
head 文件 功能描述:查看文件头10行内容
head -n 5 文件 功能描述:查看文件头5行内容,5可以是任意行数
2.选项说明
-n <行数> 指定显示头部内容的行数
tail 输出文件尾部内容
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
> 覆盖 和 >> 追加(重定向)
1.基本语法
-ll >文件 功能描述:列表的内容写入文件a.txt中(覆盖写)
-ll >>文件 功能描述:列表的内容追加到文件aa.txt的末尾
-cat 文件1 > 文件2 能描述:将文件1的内容覆盖到文件2
-echo “内容” >> 文件
ln 软链接
软链接也成为符号链接,类似于windows里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。
1.基本语法
ln -s 原文件或目录 功能描述:给原文件创建一个软链接
2.经验技巧
删除软链接: rm -rf 软链接名,而不是rm -rf 软链接名/
查询:通过ll就可以查看,列表属性第1位是l,尾部会有位置指向。
history 查看已经执行过历史命令
1.基本语法
history 功能描述:查看已经执行过历史命令
时间日期类
1.基本语法
date [OPTION]… [+FORMAT]
2.选项说明
-d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间
-s<日期时间> 设置系统日期时间
3.参数说明
<+日期时间格式> 指定显示时使用的日期时间格式
date 显示当前时间
1.基本语法
-date 功能描述:显示当前时间
-date +%Y 功能描述:显示当前年份
-date +%m 功能描述:显示当前月份
-date +%d 功能描述:显示当前是哪一天
-date “+%Y-%m-%d %H:%M:%S” 功能描述:显示年月日时分秒
date 显示非当前时间
1.基本语法
-date -d ‘1 days ago’ 功能描述:显示前一天时间
-date -d ‘-1 days ago’ 功能描述:显示明天时间
date 设置系统时间
1.基本语法
date -s 字符串时间
cal 查看日历
1.基本语法
cal 功能描述:不加选项,显示本月日历
2.选项说明
具体某一年 显示这一年的日历
useradd 添加新用户
1.基本语法
useradd 用户名 功能描述:添加新用户
useradd -g 组名 用户名 功能描述:添加新用户到某个组
passwd 设置用户密码
1.基本语法
passwd 用户名 功能描述:设置用户密码
id 查看用户是否存在
1.基本语法
id 用户名
cat /etc/passwd 查看创建了哪些用户
1.基本语法
cat /etc/passwd
su 切换用户
su: swith user 切换用户
1.基本语法
su 用户名称 功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量
su - 用户名称 功能描述:切换到用户并获得该用户的环境变量及执行权限
userdel 删除用户
1.基本语法
-userdel 用户名 功能描述:删除用户但保存用户主目录
-userdel -r 用户名 功能描述:用户和用户主目录,都删除
2.选项说明
-r 删除用户的同时,删除与用户相关的所有文件
who 查看登录用户信息
1.基本语法
-whoami 功能描述:显示自身用户名称
-who am i 功能描述:显示登录时用户的用户名
sudo 设置普通用户具有root权限
1.添加wengwenyu用户,并对其设置密码
2.修改配置文件
修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行
或者配置成采用sudo命令时,不需要输入密码
修改完毕,现在可以用wengwenyu帐号登录,然后用命令 sudo ,即可获得root权限进行操作
usermod 修改用户
1.基本语法
usermod -g 用户组 用户名
2.选项说明
-g 修改用户的初始登录组,给定的组必须存在
用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,
如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
groupadd 新增组
1.基本语法
groupadd 组名
groupdel 删除组
1.基本语法
groupdel 组名
groupmod 修改组
1.基本语法
groupmod -n 新组名 老组名
2.选项说明
-n 指定工作组的新组名
cat /etc/group 查看创建了哪些组
1.基本操作
cat /etc/group
文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组。
1.从左到右的10个字符表示
如果没有权限,就会出现减号[ - ] 从左至右用0-9这些数字来表示:
(1)0首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
-代表文件
d 代表目录
l 链接文档(link file);
(2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。—User
(3) 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,—Group
(4) 第7-9位确定其他用户拥有该文件的权限 —Other
2.rxw作用文件和目录的不同解释
(1)作用到文件:
[ r ]代表可读(read): 可以读取,查看
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
[ x ]代表可执行(execute):可以被系统执行
(2)作用到目录:
[ r ]代表可读(read): 可以读取,ls查看目录内容
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[ x ]代表可执行(execute):可以进入该目录
(2)作用到目录:
[ r ]代表可读(read): 可以读取,ls查看目录内容
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[ x ]代表可执行(execute):可以进入该目录
chmod 改变权限
1.基本语法
第一种方式变更权限
chmod [{ugoa}{±=}{rwx}] 文件或目录
第二种方式变更权限
chmod [mode=421 ]
2.经验技巧
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
r=4 w=2 x=1 rwx=4+2+1=7
chown 改变所有者
1.基本语法
chown 功能描述:改变文件或者目录的所有者
2.选项说明
-R 递归操作
chgrp 改变所属组
1.基本语法
chgrp [最终用户组] [文件或目录] 功能描述:改变文件或者目录的所属组
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
find 查找文件或者目录
1.基本语法
find [搜索范围] [选项]
2.选项说明
-name 查询方式 按照指定的文件名查找模式查找文件
-user 用户名 查找属于指定用户名所有文件
-size 文件大小 按照指定的文件大小查找文件
grep 过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
1.基本语法
grep 选项 查找内容 源文件
2.选项说明
-n 显示匹配行及行号
which 查找命令
查找命令在那个目录下
1.基本语法
which 命令
gzip/gunzip 压缩
1.基本语法
gzip 文件 功能描述:压缩文件,只能将文件压缩为*.gz文件
gunzip 文件.gz (功能描述:解压缩文件命令)
2.经验技巧
只能压缩文件不能压缩目录
不保留原来的文件
zip/unzip 压缩
1.基本语法
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
2.选项说明
-r 压缩目录
unzip选项 功能
-d<目录> 指定解压后文件的存放目录
3. 经验技巧
zip 压缩命令在window/linux都通用,可以压缩目录且保留源文件。
tar 打包
1.基本语法
tar [选项] XXX.tar.gz 将要打包进去的内容 功能描述:打包目录,压缩后的文件格式.tar.gz
2.选项说明
-z 打包同时压缩
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-x 解包.tar文件
df 查看磁盘空间使用情况
df: disk free 空余硬盘
1.基本语法
df 选项 (功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
2.选项说明
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
fdisk 查看分区
1.基本语法
fdisk -l (功能描述:查看磁盘分区详情)
2.选项说明
-l 显示所有硬盘的分区列表
3.经验技巧
该 命令必须在root用户下才能使用
4.功能说明
(1)Linux分区
Device:分区序列
Boot:引导
Start:从X磁柱开始
End:到Y磁柱结束
Blocks:容量
Id:分区类型ID
System:分区类型
(2)Win7分区
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源
定义与区别
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位(可以理解为进程是可以独立运行的)
线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。一个线程可以创建撤销另外一个线程(在1个进程中可以有多个线程,多个线程之间可以互相操作)
区别: 一个线程只能属于一个进程,而一个进程可以拥有多个线程。线程是进程工作中的最小单位。一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。同一个进程下的不同的多个线程,共享父进程的地址空间。线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步(中间件、消息队列)线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
进程与线程的优缺点
进程 优点
1.每个进程互相独立、不影响主程序的稳定性,子进程崩溃不影响其他进程。
2.通过增加CPU,就可以扩充性能。
3.可以尽量减少线程加锁与解锁的影响,极大的提高了性能。
进程 缺点
a)逻辑控制复杂,需要和主程序交互。
b)多进程调度开销大。
线程 优点
a)程序逻辑和控制方式简单
b)所有线程可以直接共享内存和变量等
c)线程方式消耗的总资源比进程方式少
线程 缺点
1.每个线程与主程序共用地址空间,最大内存地址受限。
2.线程之间的同步和加锁不易控制。
3.一个线程的崩溃可能影响到整个程序的稳定性
ps 查看当前系统进程状态
ps:process status 进程状态
1.基本语法
ps aux | grep xxx 功能描述:查看系统中所有进程
ps -ef | grep xxx 功能描述:可以查看子父进程之间的关系
2.选项说明
-a 选择所有进程
-u 显示所有用户的所有进程
-x 显示没有终端的进程
3.功能说明
(1)ps aux显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef显示信息说明
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
4.经验技巧
如果想查看进程的***CPU占用率和内存占用率***,可以使用aux;
如果想查看***进程的父进程ID***可以使用ef;
kill 终止进程
1.基本语法
kill [选项] 进程号 功能描述:通过进程号杀死进程
killall 进程名称 功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
2.选项说明
-9 表示强迫进程立即停止
pstree 查看进程树
1.基本语法
pstree [选项]
2.选项说明
-p 显示进程的PID
-u 显示进程的所属用户
top 查看系统健康状态
能够实时监控系统的运行状态,并且可以按照cup及内存进行排序
1.基本命令
top [选项]
2.选项说明
-d 秒数 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令
-i 使top不显示任何闲置或者僵死进程。
-p 监控指定的进程。当监控多个进程时,进程ID以逗号分隔。这个选项只能在命令行下使用
-h 帮助
3.top任务区命令(操作说明)
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top
z 彩色/黑白显示
4.查询结果字段解释
第一行信息为任务队列信息
12:26:46 系统当前时间
up 1 day, 13:32 系统的运行时间,本机已经运行1天
13小时32分钟
2 users 当前登录了两个用户
load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载值。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。【特别说明:在单核CUP中load average的值为1时表示满负荷状态。同理在多核CPU中满负载的load average的值为1*CPU核数】假设我们有一个8核cup,load average的值超过8时,说明是满负荷了
第二行为进程信息
Tasks: 95 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程。如果不是0,需要手工检查僵尸进程
第三行为CPU信息
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 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了
65800k buffers 作为缓冲的内存数量
第五行为交换分区(swap)信息
Swap: 524280k total 交换分区(虚拟内存)的总大小
0k used 已经使用的交互分区的大小
524280k free 空闲交换分区的大小
409280k cached 作为缓存的交互分区的大小
vmstat
可以监控操作系统的进程状态、内存、虚拟内存、磁盘IO、CPU的信息
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。
1.命令格式
2.命令参数说明
free
能够监控系统的内存使用状态。其中total:总计物理内存的大小;Used:已使用多大;Free:可用有多少;shard:多个进程共享的内存总额;buffers/cached:磁盘缓存大小。
crond 服务管理
1.重新启动crond服务
service crond restart
crontab 定时任务设置
1.基本语法
crontab [选项]
2.选项说明
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
3.参数说明
crontab -e
(1)进入crontab编辑界面。会打开vim编辑你的工作。
(2)特殊符号
(3)特定时间执行命令
RPM概述
RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe
是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。
RPM包的名称格式
Apache-1.3.23-11.i386.rpm
-“apache” 软件名称
-“1.3.23-11”软件的版本号,主版本和此版本
-“i386”是软件所运行的硬件平台,Intel 32位微处理器的统称
-“rpm”文件扩展名,代表RPM包
RPM查询命令(rpm -qa)
1.基本语法
rpm -qa (功能描述:查询所安装的所有rpm软件包)
2.经验技巧
由于软件包比较多,一般都会采取过滤。rpm -qa | grep rpm软件包
RPM卸载命令(rpm -e)
1.基本语法
rpm -e RPM软件包
rpm -e --nodeps 软件包
2.选项说明
-e 卸载软件包
–nodeps 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。
RPM安装命令(rpm -ivh)
1.基本语法
rpm -ivh RPM包全名
2.选项说明
-i -i=install,安装
-v -v=verbose,显示详细信息
-h -h=hash,进度条
–nodeps --nodeps,不检测依赖进度
YUM概述
YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装
YUM的常用命令
1.基本语法
yum [选项] [参数]
2.选项说明
表1-52
选项 功能
-y 对所有提问都回答“yes”
3.参数说明
install 安装rpm软件包
update 更新rpm软件包
check-update 检查是否有可用的更新rpm软件包
remove 删除指定的rpm软件包
list 显示软件包信息
clean 清理yum过期的缓存
deplist 显示yum软件包的所有依赖关系
重要性:学会了整个Linux服务器监控,可以说你的性能测试就搞定了一半了,他可以充当你的眼睛,去发现那些更多的性能问题,包含你的应用程序层面的问题,因为很多应用程序的问题能到直观的体现在服务器上的一些资源
性能测试目的
发现服务器的性能瓶颈。配置的不同能够承受的最大任务数不同,能够承载的压力也不同。
测试范围以及性能指标
1.CPU
2.内存
3.磁盘
4.网络
5.版本
测试环境和生产环境配置不同?
解决:通过多次压测来计算性能损耗***(比如集群,假设1台机器的性能是1,10台计算器集群的性能未必如设想的一样是10)
性能损耗的计算方式
多次压测后的性能预估(最少要做3~5次的性能测试观察性能损耗到底有多少,比如说你的性能测试环境是8核CPU、16G内存这样的环境、假设说你一开始是3台服务器,他的性能表现是怎么样的,5台服务器,他的性能表现又是怎么样的,8台又是怎么样的?我们期望的结果是像蓝线那样正常曲线,但是实际结果一定会像红线那样有性能损耗,当你的服务器越多,性能损耗可能就越多、如果说加服务器这种野蛮的方法就一定能无休止的增长我们的性能,一些土豪公司完全不用做性能测试,那还要做性能测试干什么?)也就说当我们真正把项目上到我们的生产环境的时候,你的测试报告里面要有一个性能预估的体现,体现的依据有一个非常重要的一点,就是***预估性能损耗指标(计算方式:相同脚本+相同场景+相同的并发用户数 然后增加你的服务器大概计算一下性能损耗,不一定说特别准确,所以只能叫预估)
服务器实时内存监控
***top、vmstat、free ***当然 top vmstat 也可以进行一些磁盘IO、CPU的一些监控,任何监控工具实际上底层都有可能是集成这些命令,当这些命令你会使用就,当用其他的工具的时候就对他们的基本运行原理基本也就是了然了
注意点:
vmstat 和 mpstat 命令的差别:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题
vmstat 中所有关于 CPU 的总结都适合 mpstat。**当您看到较低的 % idle 数字时,您知道出现了 CPU 不足的问题。**当您看到较高的 % iowait 数字时,您知道在当前负载下 I/O 子系统出现了某些问题
服务器实时网络监控
netstat
服务器实时磁盘监控
iostat是对系统磁盘IO操作进行监控,它的输出主要显示磁盘的读写操作的统计信息。同时给出cpu的使用情况
1.命令格式
iostat[参数][时间][次数]
2.命令功能
通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。
3.命令参数
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x [device]显示详细信息 输出指定要统计的磁盘设备名称,默认为所有磁盘设备
-V 显示版本信息
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
disk属性值说明:
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节
wkB/s: 每秒写K字节数。是 wsect/s 的一半
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)
avgqu-sz: 平均I/O队列长度
await: 平均每次设备I/O操作的等待时间 (毫秒)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比(繁忙程度)
备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。
万能的sar命令
简介: sar(System Activity Reporter, 系统活动情况报告): 是用于监控Linux系统各个性能的最优秀、最全面的工具之一,可以从多方面对系统的活动进行报告。
监控范围: 文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
常用格式
sar [ options ] [ [ ] ]
interval: 采样周期,单位是秒;
count:采样次数,默认值是连续采样;
options:命令行选项。
sar命令的选项很多,下面只列出常用选项
-A:所有报告的总和
-u:输出整体CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
如何使用sar获取以下性能分析数据:
整体CPU使用统计
各个CPU使用统计
内存使用情况统计
整体I/O情况
各个I/O设备情况
网络统计
输出项说明:
CPU:all表示统计信息为所有CPU的平均值。
%usr:CPU在用户态执行进程的时间百分比。
%nice:CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比。
%system:CPU处在内核态执行进程的时间百分比。
%iowait:CPU用于等待I/O操作占用CPU总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。
%idle:CPU空闲时间百分比。
输出项说明:
rd_sec/s: 每秒从设备读取的扇区数
wr_sec/s: 每秒往设备写入的扇区数
avgrq-sz: 发送给设备的请求的平均大小(以扇区为单位)
avgqu-sz: 发送给设备的请求队列的平均长度
await :服务等待I/O请求的平均时间,包括请求队列等待时间 (单位毫秒)
svctm :设备处理I/O请求的平均时间,不包括请求队列等待时间 (单位毫秒)
%util :一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比。
备注:
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
如果avgqu-sz比较大,也表示有当量io在等待。
输出 说明
IFACE 网络设备名
rxerr/s 每秒接收的坏包总数
txerr/s 传输包时每秒发生错误的总数
coll/s 传输包时每秒发生冲突(collision)的总数
rxdrop/s 接收包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txdrop/s 传输包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txcarr/s 传输包时,每秒发生的传输错误(carrier-error)的数量
rxfram/s 接收包时,每秒发生帧校验错误(frame alignment error)的数量
rxfifo/s 接收包时,每秒发生队列(FIFO)一出错误的数量
txfifo/s 传输包时,每秒发生队列(FIFO)一出错误的数量
***总结:
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑CPU存在瓶颈,可用 sar -u和 sar -q 等来查看
怀疑内存存在瓶颈,可用 sar -B、sar -r和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d等来查看