目录
- head命令
- tail命令
- tar命令
- ping命令
- ssh命令
- 管道命令
- ps命令
- kill命令
- top命令
- grep命令
- find命令
- su命令
- 前台和后台任务
- 磁盘空间
- 内存空间
- wc命令
- netstat命令
- vi命令
1. head命令
用来查看文件的前几行(默认10行)的内容
查看redis.config前10行
1
2
3
4
5
6
7
8
9
10
11
12
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# head redis.conf
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
#
# ./redis-server /path/to/redis.conf
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
-n
查看前n行
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# head -20 redis.conf
2. tail命令
查看文件末尾的内容(默认10行)。
查看redis.config末尾10行信息
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# tail redis.conf
-n
查看末尾n行
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# tail -20 redis.conf
-f,–follow
当文件有继续输入时,继续打印输出。
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# tail -f -20 redis.conf
-f -n连用
这个时候不能使用-n,直接输数字。
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# tail -f 20 redis.conf
3. tar命令
tape archive
将一个文件或者目录打包压缩成一个文件,或者将解压。 打包:仅仅是将一根文件或者目录下的所有内容汇总成一个总文件而已。 压缩:通过某些算法(gzip,bzip2)进行压缩成更小的文件。
tar zcvf src.tar.gz src/
将src目录打包并压缩成 src.tar.gz文件。
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# tar zcvf src.tar.gz src/
tar命令是汇总成 “.tar” 文件。z 选项是采用gzip算法压缩成 “.gz” 文件。
tar ztvf src.tar.gz
查看压缩包里面的内容。
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# tar ztvf src.tar.gz
tar zxvf src.tar.gz
解压
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# tar zxvf src.tar.gz
4. ping命令
用于测试2台主机之间的网络是否连接。
ping www.baidu.com
查看当前主机与百度服务器的网络情况。 其中百度域名可以替换成IP地址
1
2
3
4
5
6
7
8
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=52 time=6.51 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=52 time=6.55 ms
^C
--- www.a.shifen.com ping statistics ---
14 packets transmitted, 14 received, 0% packet loss, time 13014ms
rtt min/avg/max/mdev = 6.512/6.577/6.756/0.077 ms
ctrl + c中断ping
-c
ping的次数。
1
2
3
4
5
6
7
8
9
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=52 time=5.58 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=52 time=5.59 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=52 time=5.60 ms
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 5.581/5.594/5.605/0.061 ms
5. ssh命令
用于一台主机远程登录另外一台主机。
ssh 远程主机用户名@远程主机IP
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# ssh wsk1103@192.168.18.18
如果当前主机的用户名和远程主机的用户一致,则可以省略。
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# ssh 192.168.18.18
-p
指定访问的端口,默认是22
1
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# ssh -p 33 192.168.18.18
6. | 管道命令
管道|,能够将上一个命令的正确执行输出到下一个命令,作为下一个命令的标准输入。一般是与其他命令常用,最常用的是grep一起使用。
7. ps命令
process status 进程状态
用于查看当前系统运行的进程状态信息。该命令选项非常多,介绍常用。
-ef
查看当前系统所有的进程信息
1
2
3
4
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jan15 ? 00:00:55 /usr/lib/systemd/systemd --switched-r
root 2 0 0 Jan15 ? 00:00:00 [kthreadd]
字段说明
字段 | 说明 |
---|---|
UID | 进程所属用户ID |
PID | 进程ID,杀进程就是杀这个 |
PPID | 进程的父ID |
C | CPU的使用率 |
STIME | 进程的启动时间 |
TTY | 开始此进程的终端设备。”?”:系统启动。”tty1”到”tty6”:本机上的登录者的程序。”pst/0”:网络连接进来的主机的程序。 |
TIME | 进程使用CPU的总时间 |
CMD | 启动进程的命令和参数 |
aux组合
查看当前系统所有的进程信息
1
2
3
4
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 125108 3644 ? Ss Jan15 0:55 /usr/lib/systemd/sys
root 2 0.0 0.0 0 0 ? S Jan15 0:00 [kthreadd]
字段说明
字段 | 说明 |
---|---|
USER | 进程的拥有者 |
PID | 进程ID |
%CPU | 进程占用的CPU百分比 |
%MEN | 进程占用的内存百分比 |
VSZ | 进程使用的虚拟内存大小,单位KB |
RSS | 进程占用固定内存大小,单位KB |
TTY | 开始此进程的终端设备。”?”:系统启动。”tty1”到”tty6”:本机上的登录者的程序。”pst/0”:网络连接进来的主机的程序。 |
STAT | 进程的状态,常见有: R:正在运行或者可运行状态 S:处于休眠状态,等待被唤醒 Z:僵尸进程,程序已经终止,但是进程无法正常退出 T:已停止或处于被追踪状态 D:不可中断,一般是在等I/O <:优先级高的进程 N:优先级低的进程 s:进程领导者,一般会有子进程 l:多线程的 |
START | 进程的启动时间 |
TIME | 进程使用CPU的总时间 |
COMMAND | 启动进程的命令和参数 |
-eo 组合
自定义显示的进程信息字段
1
2
3
4
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# ps -eo user,pid,pcpu,pmem,cmd
USER PID %CPU %MEM CMD
root 1 0.0 0.1 /usr/lib/systemd/systemd --switched-root --system --deserial
root 2 0.0 0.0 [kthreadd]
–sort -pcpu
对指定的字段进行排序显示,其中pcpu可以换成其他字段。- 表示降序, + 表示升序。
1
2
3
4
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# ps aux --sort -pcpu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jenkins 11019 0.2 27.8 2710924 525164 ? Ssl Mar25 4:14 /etc/alternatives/ja
找出最占内存的10个进程
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# ps -aux --sort -pmem | head
8. kill命令
杀死一个进程。
可以给定一个进程具体的信号,如果没有明确的信号,则默认发生 15 信号。
信号说明
信号 | 说明 |
---|---|
2 | 中断信号,Ctrl + c |
9 | 强制终止 |
15 | 终止信号 |
19 | 暂停信号,Ctrl + z |
kill -9 8080
强制终止进程为 8080 的进程。
kill 9 与kill -9 的区别
kill 9:只是告诉进程你需要终止运行,但是并不会立刻终止,而是先释放占用的资源或者做其他事情。 kill -9:立刻终止进程,无法反抗。
9. top命令
查看进程占用系统资源的实时动态列表信息
top
每隔3秒刷新一次
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# top
第一行,系统整体信息的统计
- 23:45:10 当前时间
- up 70 days, 9:20 系统连续运行时间
- 1 user 当前登录用户数
- load average: 0.00, 0.01, 0.05 系统分别在1,5,15分钟内的负载均衡
第二行,进程的统计信息
- 68 total, 进程的总数
- 1 running,正在运行的进程数
- 67 sleeping,休眠的进程数
- 0 stopped,停止的进程数
- 0 zombie,僵尸进程数
第三行,CPU的统计信息
- 0.3 us,用户占用的CPU百分比
- 0.0 sy,内核占用的CPU百分比
- 0.0 ni,
- 99.7 id,空闲的CPU百分比
- 0.0 wa,
- 0.0 hi,
- 0.0 si,
- 0.0 st
第四行,内存的统计信息
- 1883724 total,物理内存总大小
- 85128 free,空闲可用物理内存大小
- 776548 used,已用物理内存大小
- 1022048 buff/cache缓冲内存大小
第五行,交换区的统计信息
- 0 total,交换分区的总大小
- 0 free,可用
- 0 used.已用
- 907264 avail Mem
因为top命令是按照单个CPU的核数来算的,所以有的时候,CPU的占比率会超过100%。例如一台服务器CPU为2核,那么CPU使用率理论可用达到200%。
当物理内存不够的时候,Linux有一个OOM-killer(Out of Memory killer)机制,他会直接杀死内存占比最高的那个进程。
top命令第一行的load average 也是一个比较直观的反应当前系统的性能情况。当数值在0.00-1.00之间浮动,则表示当前系统状态良好。当然如果,一台服务器是2核,那么理论上负载能力可以达到2.00.当系统平均负载达到总数的70%时,就要分析原因了。分析的重点主要是后2个值。
进程区信息字段说明
字段 | 说明 |
---|---|
PID | 进程ID |
USER | 进程拥有者 |
VIRT | 进程使用的虚拟内存总大小,KB |
RES | 进程使用的物理内存总大小,KB |
SHR | 进程使用的共享内存总大小,KB |
%CPU | 上次更新到现在的CPU时间占比 |
%MEM | 进程所占的物理内存百分比 |
COMMAND | 启动进程的命令和参数 |
top命令支持按键响应事件。
按键 | 说明 |
---|---|
P(shift + p) | 按%CPU降序排序 |
M(shift + m) | 按%MEM降序排序 |
N(shift + n) | 按PID降序排序 |
1(数字1) | 查看每个核的CPU使用情况 |
s | 刷新的时间间隔,默认是5秒 |
q | 退出 |
-d
查看列表信息的刷新时间间隔,默认是5秒
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# top -d 7
-p
查看指定的进程ID信息
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# top -p 8181
10. grep命令
搜索文本内容,从大量的数据中快速搜索。
grep redis redis.config
从redis.config中,搜索redis出现的行
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# grep redis redis.config
-n,–line-number
搜索到后,显示行号
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# grep -n redis redis.config
-e,–regexp
搜索多个
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# grep -e Redis -e redis redis.config
同时搜索redis和Redis
–color
将搜索结果高亮显示
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# grep --color redis redis.config
-E,–extended-regexp
等效 egrep,用正则表达式搜索
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# egrep '\bre' redis.config
-v,–invert-match
反转查找
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# ps -ef | grep nginx | grep -v java
查找nginx进程,并且将 grep java 行的信息排查掉
-r,–recursive
搜索一个目录下的所有文件
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# grep -r redis redis/
11. find命令
查找文件
find [查找的目录] [选项] [参数]
-name
按照文件的名称查找
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# find / -name redis
-type
根据文件的类型查找
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# find / -type d -name redis
文件类型说明
文件类型 | 说明 |
---|---|
f | 普通文件 |
d | 目录 |
l | 符号链接 |
-nmin
查找指定时间内被更改过的文件或者目录
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# find / -name redis -mmin -5
查找5分钟前
12. su命令
切换用户身份。
su
等效 su root
su wsk
切换到wsk用户,当前目录路径不会变
su - wsk
切换到wsk用户,并且目录变更为wsk的home下。
13. 前台和后台任务
后台进程也叫守护进程,是运行在系统后台的进程。
命令的末尾加 &
将一个进程放到后台系统去运行,则在命令的末尾加 &
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# java -jar test.jar &
nohup command &
一般情况下,当用户退出终端后,那么启动的进程也会随着退出,为了使进程不随退出终端而退出,使用 nohup command &
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# nohup java -jar test.jar &
默认情况下,nohup命令会将进程的输出打印到当前目录下的“nohup.out”文件中。
当我们不想输出到“nohup.out”的时候,可以指定输出路径。
1
[root@izwz9ga6l7ls6ozy9ylwbdz ~]# nohub java -jar test.jar >/dev/null 2>&1 &
其中 >/dev/null 的:
> 表示重定向到某地地方。默认是标准输出,也就是 > 等效 1>
/dev/null:系统的空设备文件,经常到垃圾箱使用。这里不会输出任何的东西。
2>&1 表示:
>& 是等同于 的意思
2>&1表示将标准错误重定向到与标准输出相同的地方。
总的来说,这条命令就是输入和输出都不需要显示在终端上。
0,1,2说明
文档类型 | 符号 | 说明 |
---|---|---|
stdin | 0 | 标准输入 |
stdout | 1 | 标准输出 |
stderr | 2 | 标准错误 |
jobs
后台的任务,可以使用命令jobs命令来查看
1
2
3
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# jobs
[1]- Stopped vi redis.conf
[2]+ Stopped vi sentinel.conf
其中,[num] 表示任务序号, + 表示默认选择的任务, - 表示任务需要通过任务序号来选择。
fg [num]
使用fg [num] 可以将一个后台任务切换到前台。
通过Ctrl + z也可以将一个进程暂停并且放到后台去。
bg [num]
将后台暂停的任务变为继续运行。
kill %num
杀死后台任务
14. 磁盘空间
df 和 du 就可以查看磁盘空间
df
disk free
磁盘可用空间,用于查看服务器磁盘空间情况。
1
2
3
4
5
6
7
8
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 4.3G 33G 12% /
devtmpfs 910M 0 910M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 316K 920M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
tmpfs 184M 0 184M 0% /run/user/0
du
disk usage
磁盘使用情况,查看文件或者目录占用的磁盘空间
1
2
3
4
[root@izwz9ga6l7ls6ozy9ylwbdz redis]# du redis-5.0.3 -h
24K redis-5.0.3/utils/releasetools
24K redis-5.0.3/utils/lru
15. 内存空间 free
查看系统内存的使用情况。
1
2
3
4
[root@izwz9ga6l7ls6ozy9ylwbdz redis]# free -h
total used free shared buff/cache available
Mem: 1.8G 759M 68M 324K 1.0G 885M
Swap: 0B 0B 0B
16. wc命令 free
word count
单词统计
用于统计文本
-c,–bytes
统计字符数
1
2
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# wc -c redis.conf
62170 redis.conf
-w,–words
统计单词数
1
2
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# wc -w redis.conf
10732 redis.conf
-l,–lines
统计行数
1
2
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# wc -l redis.conf
1379 redis.conf
17. netstat命令 free
查看系统的网络情况
-ant组合
查看所有TCP连接情况信息
- -a,-all 显示所有socket链接
- -n,-numeric 显示使用数字类型的IP地址
- -t,tcp 只显示TCP的链接
1
2
3
4
5
6
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:8585 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
-lntp 组合
查看系统监听端口的所有进程信息
- -l,只显示监听的socket链接
- -n,-numeric 显示使用数字类型的IP地址
- -t,tcp 只显示TCP的链接
- -p,显示进程PID和进程名称
1
2
3
4
5
6
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8585 0.0.0.0:* LISTEN 11019/java
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1474/
端口占用
查看端口被占用
1
2
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# netstat -lntp | grep 8585
tcp 0 0 0.0.0.0:8585 0.0.0.0:* LISTEN 11019/java
可以看到8585端口被进程PID为11019的程序占用。
统计端口链接数
1
2
3
[root@izwz9ga6l7ls6ozy9ylwbdz redis-5.0.3]# netstat -ant | grep 8585 | wc -l
1
18. vi命令 free
vi编辑器。
有3种模式:
- 命令模式:可以删除,复制等操作
- 插入模式:可以插入文本
- 底行模式:设置编译器,字符查找,文件保存和退出等。
命令模式
按键说明
按键 | 说明 |
---|---|
j | 光标向下移动 |
k | 光标向上移动 |
h | 光标向左移动 |
l | 光标向右移动 |
gg | 文首 |
G | 文末 |
nG | n是一个数字,定位到第N行 |
0 | 行首 |
^ | 行首 |
$ | 行尾 |
dd | 删除光标所在行 |
yy | 复制光标所在行 |
x | 光标从高亮处(包括高亮处)向后删除字符 |
X | 光标从高亮处(不包括高亮处)向后删除字符 |
p | 将复制的内容粘贴在光标所在行的下一行 |
P | 将复制的内容粘贴在光标所在行的上一行 |
u | 还原 |
. | 重复动作 |
?word | 向上查找word字符串 |
/word | 向下查找 |
n | 同向搜索 |
N | 反向搜索 |
进入插入模式
按键 | 说明 |
---|---|
i | 在光标高亮处之前插入 |
I | 在光标所在行的行首插入 |
a | 在光标的高亮处之后插入 |
A | 在光标所在行的行尾插入 |
o | 在光标所在行的下一行插入一个空行 |
O | 在光标所在行的下上一行插入一个空行 |
Exc | 退出插入模式,回到命令模式 |
在命令模式,进入底行模式
按键 | 说明 |
---|---|
:w | 保存 |
:q | 退出 |
:w! | 强制写入 |
:q! | 强制退出 |
:wq | 保存退出 |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:nohl | 退出匹配的高亮显示 |
:s/表达式/替换字符/ | 替换当前行匹配到的第一处 |
:s/表达式/替换字符/g | 替换当前行匹配到的所有处 |
:%s/表达式/替换字符/g | 替换文档中匹配到的所有处 |
ZZ | 保存退出 |
ZQ | 不保存退出 |