常见linux命令

一、基础知识

1.1 Linux系统的文件结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/bin        二进制文件,系统常规命令
/boot 系统启动分区,系统启动时读取的文件
/dev 设备文件
/etc 大多数配置文件
/home 普通用户的家目录
/lib 32位函数库
/lib64 64位库
/media 手动临时挂载点
/mnt 手动临时挂载点
/opt 第三方软件安装位置
/proc 进程信息及硬件信息
/root 临时设备的默认挂载点
/sbin 系统管理命令
/srv 数据
/var 数据
/sys 内核相关信息
/tmp 临时文件
/usr 用户相关设定

1.2 Linux系统命令行的含义

1
2
3
4
5
6
示例:root@app00:~# 
root //用户名,root为超级用户
@ //分隔符
app00 //主机名称
~ //当前所在目录,默认用户目录为~,会随着目录切换而变化,例如:(root@app00:/bin# ,当前位置在bin目录下)
# //表示当前用户是超级用户,普通用户为$,例如:("yao@app00:/root$" ,表示使用用户"yao"访问/root文件夹)

1.3 命令的组成

1
示例:命令 参数名 参数值

二、基础操作

2.1 关闭系统

1
2
3
4
(1)立刻关机
shutdown -h now 或者 poweroff
(2)两分钟后关机
shutdown -h 2

2.2 重启系统

1
2
3
4
(1)立刻重启
shutdown -r now 或者 reboot
(2)两分钟后重启
shutdown -r 2

2.3 帮助命令(help)

1
ifconfig  --help     //查看 ifconfig 命令的用法

2.4 命令说明书(man)

1
man shutdown         //打开命令说明后,可按"q"键退出

2.5 切换用户(su)

1
2
su yao               //切换为用户"yao",输入后回车需要输入该用户的密码
exit //退出当前用户

三、目录操作

3.1 切换目录(cd)

1
2
3
4
5
6
7
cd /                 //切换到根目录
cd /bin //切换到根目录下的bin目录
cd ../ //切换到上一级目录 或者使用命令:cd ..
cd ~ //切换到home目录
cd - //切换到上次访问的目录
cd xx(文件夹名) //切换到本目录下的名为xx的文件目录,如果目录不存在报错
cd /xxx/xx/x //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全

3.2 查看目录(ls)

1
2
3
4
ls                   //查看当前目录下的所有目录和文件
ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果一样
ls /bin //查看指定目录下的所有目录和文件

3.3 删除目录与文件(rm)

1
2
3
4
5
6
rm 文件名              //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
rm -r 文件夹名 //递归删除当前目录下此名的目录
rm -rf 文件夹名 //递归删除当前目录下此名的目录(不询问)
rm -rf * //将当前目录下的所有目录和文件全部删除
rm -rf /* //将根目录下的所有文件全部删除【慎用!相当于格式化系统】

3.4 修改目录(mv)

1
2
3
mv 当前目录名 新目录名        //修改目录名,同样适用与文件操作
mv /usr/tmp/tool /opt ///usr/tmp目录下的tool目录剪切到 /opt目录下面
mv -r /usr/tmp/tool /opt //递归剪切目录中所有文件和文件夹

3.5 拷贝目录(cp)

1
2
cp /usr/tmp/tool /opt       ///usr/tmp目录下的tool目录复制到 /opt目录下面
cp -r /usr/tmp/tool /opt //递归剪复制目录中所有文件和文件夹

3.6 搜索目录(find)

1
find /bin -name 'a*'        //查找/bin目录下的所有以a开头的文件或者目录

3.7 查看当前目录(pwd)

1
pwd                         //显示当前位置路径

四、文件操作

4.1 新增文件(touch)

1
touch  a.txt         //在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间

4.2 删除文件(rm)

1
2
rm 文件名              //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)

4.3 编辑文件(vi、vim)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
vi 文件名              //打开需要编辑的文件
--进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode
命令模式
-刚进入文件就是命令模式,通过方向键控制光标位置,
-使用命令"dd"删除当前整行
-使用命令"/字段"进行查找
-按"i"在光标所在字符前开始插入
-按"a"在光标所在字符后开始插入
-按"o"在光标所在行的下面另起一新行插入
-按":"进入底行模式
插入模式
-此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""
-按"ESC"进入底行模式
底行模式
-退出编辑: :q
-强制退出: :q!
-保存并退出: :wq
## 操作步骤示例 ##
1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车 //保存并退出编辑
2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车 //撤销本次修改并退出编辑
## 补充 ##
vim +10 filename.txt //打开文件并跳到第10
vim -R /etc/passwd //以只读模式打开文件

4.4 查看文件

1
2
3
4
cat a.txt          //查看文件最后一屏内容
less a.txt //PgUp向上翻页,PgDn向下翻页,"q"退出查看
more a.txt //显示百分比,回车查看下一行,空格查看下一页,"q"退出查看
tail -100 a.txt //查看文件的后100行,"Ctrl+C"退出查看

4.5 给文件替换字符串(sed)

1
2
3
4
5
6
# 在输出或打印中,替换字符串。并不改变原文件内容
sed '作用范围s/替换查找目标/替换成为/替换目标option' 文件名

# 替换字符串,并更改原文件内容
# 在sed后面加 -i,即编辑文档“edit files in place”选项
sed -i '作用范围s/替换查找目标/替换成为/替换目标option' 文件名

例,sed ‘s/cat/dog/g’ pet.txt
在全局范围(s前的作用范围无内容)查找cat并替换为dog,作用范围内每一行出现的不仅第一个目标,而是所有目标都会被替换(g)。

1
2
# 作用范围在全文
sed 's/cat/dog/g' pet.txt

指定行,写上行号;指定某行到某行,用逗号连接行号

1
2
3
4
5
6
7
8
9
10
11
# 作用范围在第1行
sed '1s/cat/dog/g' pet.txt

# 作用范围在第6行到第10行
sed '6,10s/cat/dog/g' pet.txt

# 作用范围在第6行到最后一行
sed '6,$s/cat/dog/g' pet.txt

# 作用范围在指定行到其后2行,用加号(减号不可用)
sed '1,+2s/cat/dog/g' pet.txt

五、文件权限

5.1 权限说明

1
2
3
4
5
6
文件权限简介:'r' 代表可读(4),'w' 代表可写(2),'x' 代表执行权限(1),括号内代表"8421法"
##文件权限信息示例:-rwxrw-r--
-第一位:'-'就代表是文件,'d'代表是文件夹
-第一组三位:拥有者的权限
-第二组三位:拥有者所在的组,组员的权限
-第三组三位:代表的是其他用户的权限

5.2 文件权限

who 用户类型 说明
u user 文件所有者
g group 文件所有者所在组
o others 所有其他用户
a all 所有用户, 相当于 ugo
+ 为指定的用户类型增加权限
- 去除指定用户类型的权限
= 设置指定用户权限的设置,即将用户类型的所有权限重新设置
1
2
普通授权    chmod +x a.txt    
8421法 chmod 777 a.txt //1+2+4=7,"7"说明授予所有权限

八进制语法:

chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。

# 权限 rwx 二进制
7 读 + 写 + 执行 rwx 111
6 读 + 写 rw- 110
5 读 + 执行 r-x 101
4 只读 r– 100
3 写 + 执行 -wx 011
2 只写 -w- 010
1 只执行 –x 001
0 000

六、打包与解压

6.1 说明

1
2
3
4
.zip.rar        //windows系统中压缩文件的扩展名
.tar //Linux中打包文件的扩展名
.gz //Linux中压缩文件的扩展名
.tar.gz //Linux中打包并压缩文件的扩展名

6.2 打包文件

1
2
3
4
tar -zcvf 打包压缩后的文件名 要打包的文件
参数说明:z:调用gzip压缩命令进行压缩; c:打包文件; v:显示运行过程; f:指定文件名;
示例:
tar -zcvf a.tar file1 file2,... //多个文件压缩打包

七、其他常用命令

7.1 find

1
2
3
4
5
6
find . -name "*.c"     //将目前目录及其子目录下所有延伸档名是 c 的文件列出来
find . -type f //将目前目录其其下子目录中所有一般文件列出
find . -ctime -20 //将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find /var/log -type f -mtime +7 -ok rm {} \; //查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find . -type f -perm 644 -exec ls -l {} \; //查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find / -type f -size 0 -exec ls -l {} \; //为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径

7.2 whereis

这个命令可以用来查找二进制(命令)、源文件、man文件。与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广

1
whereis ls             //将和ls文件相关的文件都查找出来

7.3 which

1
2
说明:which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
which bash //查看指令"bash"的绝对路径

7.4 sudo

1
2
3
4
5
6
说明:sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。需要输入自己账户密码。
使用权限:在 /etc/sudoers 中有出现的使用者
sudo -l //列出目前的权限
$ sudo -u yao vi ~www/index.html //sudo -u指定用户执行命令,以 yao 用户身份编辑 home 目录下www目录中的 index.html 文件
普通用户切换到root用户下:sudo -i
root用户切换到普通用户下:su testuser

7.5 grep

1
2
3
grep -i "the" demo_file              //在文件中查找字符串(不区分大小写)
grep -A 3 -i "example" demo_text //输出成功匹配的行,以及该行之后的三行
grep -r "ramesh" * //在一个文件夹中递归查询包含指定字符串的文件

7.6 service

1
2
3
4
说明:service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径
service ssh status //查看服务状态
service --status-all //查看所有服务状态
service ssh restart //重启服务

7.7 free

1
2
3
说明:这个命令用于显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况 
free -g //以G为单位输出内存的使用量,-g为GB,-m为MB,-k为KB,-b为字节
free -t //查看所有内存的汇总

img

total:表示物理,内存总量
used:总计分配给缓存(包含Buffer和cache)使用的数量,但其中可能部分缓存并未实际使用
free:未被分配的内存。是真正尚未被使用的物理内存数量。
shared:共享内存,一般系统不会用到,这里也不讨论
buff:系统分配但未被使用的buffers数量
cache:系统分配但未被使用的cache数量
(cache是cpu和内存之间的,buffer是内存和磁盘之间的,都是为了解决速度不对等的问题。
缓存(cache)是把读取过来的数据保存起来,重新读取时若命中,就不去硬盘了,若没有命中就去读硬盘,其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读取的内容不断往后排,直至从中删除。
缓冲(buffer)时根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的的反复寻道,从而提高系统性能,linux有一个守护进程定期清空缓冲内容(即写入磁盘)。
buffer是即将要写入磁盘的,而cache是被从磁盘中读出来的。)
available:和free是有区别的,是实际可以用的最大空间。是应用程序认为可用内存数量,available = free + buff/cache (注:只是大概的计算方法)Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,对于内核来说,buffer 和 cache 其实都属于已经被使用的内存。但当应用程序申请内存时,如果 free 内存不够,内核就会回收 buffer 和 cache 的内存来满足应用程序的请求。这就是稍后要说明的 buffer 和 cache。

7.8 top

1
top               //显示当前系统中占用资源最多的一些进程, shift+m 按照内存大小查看

img

各行参数信息:


第一行:

12:18:39 系统当前时间
392 days, 17:32 系统从开机到现在的时间
1 user 当前用户数

load average: 5.44, 6.00, 6.10 系统1分钟、5分钟、15分钟的CPU负载信息

第二行:

532 total:当前有532个任务,也就是532个进程。
2 running:2个进程正在运行
529 sleeping:529个进程睡眠
0 stopped:停止的进程数

1 zombie:僵死的进程数

第三行:

Cpu(s):表示这一行显示CPU总体信息

8.1us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
2.4sy:内核占用CPU时间百分比
0.0ni:改变过优先级的进程占用CPU的百分比
89.0 id:空闲CPU时间百分比
0.2wa:等待I/O的CPU时间百分比
0.0hi:CPU硬中断时间百分比
0.3si:CPU软中断时间百分比
注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;


第四行:

Men:内存的意思

65281768k total:物理内存总量
30484308k used:使用的物理内存量
3235388k free:空闲的物理内存量

31562072k buff/cache:用作内核缓存的物理内存量

第五行:

Swap:交换空间

total:交换区总量
used:使用的交换区量
free:空闲的交换区量

avail Men:实际最大可用交换区总量

进程信息:

PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

然后按特定按键 就能很清楚的查看到cpu和内存的使用情况

① 键入大写P,结果按CPU占用降序排序, %CPU

img

② 键入大写M,结果按内存占用降序排序, %MEN

img

7.9 df

1
2
说明:显示文件系统的磁盘使用情况
df -h //一种易看的显示

7.10 mount

1
2
mount /dev/sdb1 /u01              //挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上
dev/sdb1 /u01 ext2 defaults 0 2 //添加到fstab中进行自动挂载,这样任何时候系统重启的时候,文件系统都会被加载

7.11 uname

1
2
说明:uname可以显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息 
uname -a

7.12 yum

1
2
3
4
说明:安装插件命令
yum install httpd //使用yum安装apache
yum update httpd //更新apache
yum remove httpd //卸载/删除apache

7.13 rpm

1
2
3
4
说明:插件安装命令
rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm //使用rpm文件安装apache
rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm //使用rpm更新apache
rpm -ev httpd //卸载/删除apache

7.14 date

1
date -s "01/31/2010 23:59:53"   ///设置系统时间

7.15 wget

1
2
3
4
说明:使用wget从网上下载软件、音乐、视频 
示例:wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
//下载文件并以指定的文件名保存文件
wget -O nagios.tar.gz http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

7.16 ftp

1
2
ftp IP/hostname    //访问ftp服务器
mls *.html - //显示远程主机上文件列表

7.17 scp

1
2
3
4
5
6
7
8
9
scp /opt/data.txt  192.168.1.101:/opt/    //将本地opt目录下的data文件发送到192.168.1.101服务器的opt目录下

scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/
scp -r /home/space/music/ www.runoob.com:/home/root/others/

7.18 cpu信息

1
2
3
4
5
6
7
8
9
看cpu信息
cat /proc/cpuinfo

查看系统平均负载
cat /proc/loadavg
0.08 0.06 0.10 1/442 8347
前三项分别是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载为在特定时间间隔内运行队列中的平均进程数,包括正在CPU上运行或者等待运行的进程。
第四项,分子是正在运行的进程数,分母是进程总数。
最后一项是最近运行的进程ID号。

7.19 网络负载

1.查看服务器网络端口

ifconfig

2.ethtool命令查看宽带大小

三、nload命令实时统计网卡带宽使用率

没有nload命令的需要下载;

yum -y install nload

#等待下载完

#直接使用命令查看

nload

四、dstat -n命令实时监测网络的状态

下载yum install dstat

dstat -n

7.20 vmstat

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控,是对系统的整体情况进行统计。

1
2
3
4
$ vmstat
procs -----------memory----------- --swap-- --io-- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 14376368 161976 1130836 0 0 0 3 2 2 0 0 100 0 0

我们只关注cpu列:
us:用户进程执行时间百分比
sy:系统进程执行时间百分比
id:空闲时间百分比
wa:等待IO时间百分比
st:被虚拟机偷走的cpu时间百分比

7.21 iostat命令

iostat是I/O statistics(输入/输出统计)的缩写,iostat将对系统的磁盘操作活动进行监视。iostat命令主要是用来查看IO使用状况,也可以查看cpu使用情况。

1
2
3
4
5
6
7
8
Linux 3.10.0-862.3.2.el7.x86_64 (instance-34rgafwb)     01/03/2020     _x86_64_    (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.17 0.02 0.15 0.00 0.00 99.64

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.94 0.30 18.15 5030634 302731996
vdb 0.00 0.00 0.00 6252 148

avg-cpu 行是CPU平均使用率,与前述命令类似:

  %user:CPU处在用户模式下的时间百分比。

  %nice:CPU处在带NICE值的用户模式下的时间百分比。

  %system:CPU处在系统模式下的时间百分比。

  %iowait:CPU等待输入输出完成时间的百分比。

  %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

  %idle:CPU空闲时间百分比。

7.22 sar命令

sar(System Activity Reporter,系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。我们现在只关注CPU使用率和系统负载。

  • 输出CPU使用率的统计信息
1
2
3
4
5
sar 10 3    //每10秒采样一次,连续采样3
sar -u 10 3  //同上
sar       //输出全天cpu使用率的统计信息
sar -p     //同上
sar -P ALL 2 3  //每2秒采样一次,连续采样3次,输出CPU每个核心的使用率

输出如下:

1
2
3
4
5
6
7
8
# sar -u 10 3
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test) 01/03/2020 _x86_64_ (8 CPU)

02:26:29 PM CPU %user %nice %system %iowait %steal %idle
02:26:39 PM all 0.28 0.00 0.31 0.01 0.01 99.38
02:26:49 PM all 0.33 0.03 0.31 0.05 0.03 99.26
02:26:59 PM all 0.29 0.00 0.35 0.03 0.03 99.31
Average: all 0.30 0.01 0.33 0.03 0.02 99.32

CPU列的 “all” 说明统计信息是所有cpu使用率的平均值,数字 “x” 说明此统计信息是CPU核心x的使用率。各列数据的意义与前述几个命令一样,不再赘述。

  • 系统平均负载

监控进程队列长度和平均负载,每10秒采样一次,连续采样3次:

1
2
3
4
5
6
7
8
# sar -q 1 3
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test) 01/03/2020 _x86_64_ (8 CPU)

03:01:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
03:01:02 PM 0 512 0.06 0.03 0.00
03:01:03 PM 0 512 0.06 0.03 0.00
03:01:04 PM 0 512 0.06 0.03 0.00
Average: 0 512 0.06 0.03 0.00

输出项说明:

  runq-sz:运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
  plist-sz:进程列表中的进程(processes)和线程数(threads)的数量
  ldavg-1:最近1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,以下类似
  ldavg-5:最近5分钟的CPU平均负载
  ldavg-15:最近15分钟的CPU平均负载

7.23 mpstat命令

mpstat是MultiProcessor Statistics的缩写,是一个实时系统监控工具,输出CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU系统里,其不但能查看所有CPU的平均统计信息,而且能够查看特定CPU的信息。

  • 显示所有CPU整体(平均)使用状况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# mpstat        //不带参数时,输出为从系统启动以来的平均值
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test) 01/03/2020 _x86_64_ (8 CPU)

03:14:40 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:14:40 PM all 1.59 0.05 0.74 0.05 0.00 0.04 0.03 0.00 97.51

# mpstat 1 5 //每1秒收集一次,共5次
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test) 01/03/2020 _x86_64_ (8 CPU)

03:25:58 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:25:59 PM all 0.13 0.00 0.25 0.00 0.00 0.00 0.00 0.00 99.62
03:26:00 PM all 0.38 0.00 0.38 0.00 0.00 0.13 0.00 0.00 99.12
03:26:01 PM all 2.01 0.00 1.01 0.00 0.00 0.00 0.13 0.00 96.86
03:26:02 PM all 0.38 0.00 0.38 0.00 0.00 0.00 0.00 0.00 99.25
03:26:03 PM all 0.25 0.00 0.25 0.00 0.00 0.13 0.00 0.00 99.37
Average: all 0.63 0.00 0.45 0.00 0.00 0.05 0.03 0.00 98.85
  • 显示所有CPU的使用状况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# mpstat -P ALL 10 20  //每10秒收集一次数据,共20次
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test) 01/03/2020 _x86_64_ (8 CPU)

03:12:59 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:13:09 PM all 0.41 0.00 0.34 0.03 0.00 0.05 0.04 0.00 99.13
03:13:09 PM 0 1.01 0.00 0.70 0.20 0.00 0.00 0.00 0.00 98.09
03:13:09 PM 1 1.21 0.00 0.71 0.00 0.00 0.40 0.20 0.00 97.47
03:13:09 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:13:09 PM 3 0.10 0.00 0.30 0.00 0.00 0.00 0.00 0.00 99.60
03:13:09 PM 4 0.30 0.00 0.30 0.00 0.00 0.00 0.00 0.00 99.40
03:13:09 PM 5 0.50 0.00 0.40 0.00 0.00 0.00 0.00 0.00 99.10
03:13:09 PM 6 0.10 0.00 0.10 0.00 0.00 0.00 0.00 0.00 99.80
03:13:09 PM 7 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 99.80
....

  输出项说明:

  %usr:表示处理用户进程所使用CPU的百分比

  %nice:表示使用nice命令对进程进行降级时CPU的百分比

  %sys:表示内核进程使用的CPU百分比

  %iowait:表示等待进行I/O所使用的CPU时间百分比

  %irq:表示用于处理系统中断的CPU百分比

  %soft:表示用于软件中断的CPU百分比

  %steal:显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比

  %guest:显示运行虚拟处理器时CPU花费时间的百分比

  %idle:显示CPU的空闲时间百分比

7.24 uptime命令

uptime命令是一个简单的获取系统总共运行时长,以及最近1分钟、5分钟、15分钟的平均负载的工具。uptime命令输出内容与top命令输出首行内容一样,不再赘述。

1
2
# uptime
15:40:19 up 203 days, 23:15, 2 users, load average: 0.01, 0.01, 0.00

7.25 pidstat命令

pidstat命令主要用于监控全部或指定进程占用系统资源的情况。

1
2
3
4
5
6
7
8
9
10
11
# pidstat
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test) 01/03/2020 _x86_64_ (8 CPU)

03:48:26 PM PID %usr %system %guest %CPU CPU Command
03:48:26 PM 1 0.00 0.01 0.00 0.01 5 init
03:48:26 PM 2 0.00 0.00 0.00 0.00 1 kthreadd
03:48:26 PM 3 0.00 0.00 0.00 0.00 0 migration/0
03:48:26 PM 4 0.00 0.00 0.00 0.00 0 ksoftirqd/0
03:48:26 PM 6 0.00 0.00 0.00 0.00 0 watchdog/0
03:48:26 PM 7 0.00 0.00 0.00 0.00 1 migration/1
....

八、系统管理

8.1 防火墙操作

1
2
3
4
5
6
7
8
9
10
service iptables status      //查看iptables服务的状态
service iptables start //开启iptables服务
service iptables stop //停止iptables服务
service iptables restart //重启iptables服务
chkconfig iptables off //关闭iptables服务的开机自启动
chkconfig iptables on //开启iptables服务的开机自启动
##centos7 防火墙操作
systemctl status firewalld.service //查看防火墙状态
systemctl stop firewalld.service //关闭运行的防火墙
systemctl disable firewalld.service //永久禁止防火墙服务

8.2 修改主机名(CentOS 7)

1
hostnamectl set-hostname 主机名

8.3 查看网络

1
ifconfig

ifconfig和ip addr这两个命令返回的都是机器的网卡信息,其中包含了网卡的 MAC 地址和 IP 地址,有了这两个地址才能进行网络通信,其中ifconfig命令默认显示当前已启动的网卡信息,而ip addr 会显示当前所有网卡信息,包括已启动和未启动的网卡信息,如果需要显示全部网卡信息需要输入命令ifconfig -a命令。

8.4 修改IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
修改网络配置文件,文件地址:/etc/sysconfig/network-scripts/ifcfg-eth0
------------------------------------------------
主要修改以下配置:
TYPE=Ethernet //网络类型
BOOTPROTO=static //静态IP
DEVICE=ens00 //网卡名
IPADDR=192.168.1.100 //设置的IP
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.1.1 //网关
DNS1=192.168.1.1 //DNS
DNS2=8.8.8.8 //备用DNS
ONBOOT=yes //系统启动时启动此设置
-------------------------------------------------
修改保存以后使用命令重启网卡:service network restart

8.5 配置映射

1
2
3
4
5
6
修改文件: vi /etc/hosts
在文件最后添加映射地址,示例如下:
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
配置好以后保存退出,输入命令:ping node1 ,可见实际 ping 的是 192.168.1.101

8.6 查看进程

1
ps -ef         //查看所有正在运行的进程

8.7 结束进程

1
2
kill pid       //杀死该pid的进程
kill -9 pid //强制杀死该进程

8.8 查看链接

1
2
3
4
5
6
命令	           说明
netstat -anp 显示系统端口使用情况
netstat -nupl UDP类型的端口
netstat -ntpl TCP类型的端口
netstat -l 只显示所有监听端口
netstat -lt 只显示所有监听tcp端口
1
2
3
ping IP        //查看与此IP地址的连接情况
netstat -an //查看当前系统端口
netstat -an | grep 8080 //查看指定端口

8.9 快速清屏

1
ctrl+l        //清屏,往上翻可以查看历史操作

8.10 远程主机

1
ssh IP       //远程主机,需要输入用户名和密码

8.11 软硬链接(ln)

1
ln [参数][源文件或目录][目标文件或目录]

软链接

  • 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  • 2.软链接可以 跨文件系统 ,硬链接不可以
  • 3.软链接可以对一个不存在的文件名进行链接
  • 4.软链接可以对目录进行链接

硬链接

  • 1.硬链接,以文件副本的形式存在。但不占用实际空间。
  • 2.不允许给目录创建硬链接
  • 3.硬链接只有在同一个文件系统中才能创建

给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:

1
ln -s log2013.log link2013

给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同

1
ln log2013.log ln2013

8.12 进程优先级(nice)

Linux nice命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。

使用权限:所有使用者。

设置程序运行时的优先级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# vi & //后台运行
[1] 15297
# nice vi & //设置默认优先级
[2] 15298

[1]+ Stopped vi
# nice -n 19 vi & //设置优先级为19
[3] 15299

[2]+ Stopped nice vi
# nice -n -20 vi & //设置优先级为 -20
[4] 15300

[3]+ Stopped nice -n 19 vi
# ps -l //显示进程
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 15278 15212 0 80 0 - 1208 wait pts/2 00:00:00 bash
0 T 0 15297 15278 0 80 0 - 2687 signal pts/2 00:00:00 vi
0 T 0 15298 15278 0 90 10 - 2687 signal pts/2 00:00:00 vi
0 T 0 15299 15278 1 99 19 - 2687 signal pts/2 00:00:00 vi
4 T 0 15300 15278 3 60 -20 - 2687 signal pts/2 00:00:00 vi
4 R 0 15301 15278 0 80 0 - 625 - pts/2 00:00:00 ps

[4]+ Stopped nice -n -20 vi

将 ls 的优先序加 1 并执行

1
nice -n 1 ls

将 ls 的优先序加 10 并执行

1
nice ls
-------------本文结束感谢您的阅读-------------