Linux系统常用命令
1、基础命令
1.1、查看命令
> ls
ls # 查看指定目录下的文件和文件夹
ls -l # 简写 ll,查看指定目录下的文件和文件夹的详细信息
> cat
# 查看文档,常用于查看内容比较少的文档
cat 路径/文档名称
> head与tail
# 查看指定位置的文档,如果不指定数字,默认查看10行
# 备注: -/+num num代表数字
# 备注:-n 代表参数
head -10 文档名 # 输出文档前10行
tail -20 文档名 # 输出文档最后20行
tail -f 文档名 #动态输出文档的后10行,常用于查看启动日志的输出信息
tailf 同 tail -f
tail -fn -100 文档名 #动态查看文档最后多少行的日志
> more,less
# more 功能类似于cat,more可以进行上下翻页
more
less 上下键
> pwd
# 查看当前目录的绝对路径
pwd
1.2、查找
> grep
# 在文档中查看
grep -i 关键字 文档
-i #忽略大小写
# 例如查看日志中的错误
grep -i error catalina.out
> find
# 查找文档或目录
find 查找路径 -iname 关键字
find 查找路径 -type f/d # f为文档,d为目录
参数:
-iname #忽略大小写
# 例如
find /* -type f -iname *logs*
1.3、其他基础命令
> mdir与touch
# mkdir 新建文件夹,touch 新建文档
mkdir 路径/新文件夹名称
mkdir -p 路径/文件夹1/文件夹2
-p # 作用1:递归新建多个子目录,作用2:判断目录是否存在,如果不存在则创建,如果存在,则正常退出
touch 路径/新文档
> curl
curl -I http://ip或域名地址 #查看返回状态码
curl -X GET/POST -I #指定请求方法
> ifconfig
ifconfig 网卡名 #查看指定网卡的信息
> ip
ip a s 网卡名 #查看指定网卡的信息
1.4、切换
> cd
cd ./目录名 #切换到当前目录下的一个子目录下
cd ../目录名 #切换到上一级目录下
cd - #切换到上一次所在的目录
1.5、echo
# 输出,最常用命令如下
echo 123 > 路径/123.txt
# 情况日志
echo "" > 路径/name.log
# 生产一个新文档
echo "" > 路径/name.log
2、网络
2.1、常用命令
> netstat
netstat -ntpl #查看所有的端口信息
netstat -ntpl |grep :端口 #查看指定的的端口信息
netstat -ntpl |grep 关键字 #查看一个服务的端口在不在
> lsof
lsof -i:端口号 # 常用于查看端口信息
> iperf
# 网络测速
udp模式下
服务端:iperf -u -s 回车
客户端:iperf -u -c 服务端IP -b 100M -t 60
tcp模式下
服务端:iperf -s 回车
客户端:iperf -c 服务端ip -P 30 -t 60 -i 1
客户端:iperf -c server-ip -d -t 60
# 参数详解
-u:udp协议
-b:udp模式下,单位bits/sec,默认为1Mb/s,设置每秒的带宽
-t:设置传输的总时间,iperf在指定时间内,重复的发送指定长度的数据包,默认为10秒钟。
-P:客户端向服务端发起的线程总数
-d:运行双测试模式。这将使服务器端反向连接到客户端,使用-L 参数中指定的端口
> telnet
# 测速端口通不通
telnet ip/域名 端口
> ping linux
ping -c # 指ping的次数
ping -i # 指ping的间隔
ping -w # 指ping不通时间隔多久退出
例如:ping -c 3 -i 0.2 -w 3 www.baidu.com
> ping windows
ping -n # 指ping的次数
ping -l # 定义数据包大小
3、CPU内存磁盘等物理资源查看
3.1、磁盘常用命令
> du
# 计算文件大小
du -sh 目录或文档
du -x -h --max-depth=1 路径 #统计指定路径下的所有文档大小
du -sh ./* |sort -rh #统计文档大小并排序
> df
df -hT #查看磁盘分区 使用量
3.2、CPU与内存
> sar
sar -u 1 5 #输出5次cpu使用率,间隔1s
sar -r 1 5 #输出5次内存使用率,间隔1s
> free
free -mh # 查看内存的利用率
4、进程
4.1、常用命令
> lsof
lsof -i:端口
> netstat
netstat -ntpl
netstat -ntpl |grep 关键字
关键字可以为:进程名称(java),pip号,端口等其他关键字
> ps
ps -ef |grep 关键字
ps -aux |grep 关键字
# 关键字可以为:进程名称,进程号,等等
5、测试人员常用命令
5.1、查看服务状态
> 1、查看 <<服务进程>> 是否存在
ps -ef |grep -i 程序目录名称
# 比如查看 放学系统程序是否正常
ps -ef |grep offline_leave
root 8132 1 0 Aug03 ? 01:46:38 /erp/program/jdk1.8.0_202/bin/java -Duser.timezone=Asia/Shanghai org.springframework.boot.loader.JarLauncher --management.info.build.mode=full --logging.path=/erp/edu/dev/s8-offline_leave-3146/log --logging.file=/erp/edu/dev/s8-offline_leave-3146/log/application.log --server.port=3146 bootClassPath=/BOOT-INF/classes
> 2、根据 进程号 查 <<端口号>>
netstat -ntpl |grep 8132
tcp 0 0 0.0.0.0:3146 0.0.0.0:* LISTEN 8132/java
tcp 0 0 0.0.0.0:20886 0.0.0.0:* LISTEN 8132/java
> 3、根据服务进程信息 找到 程序部署目录
cd /erp/edu/dev/s8-offline_leave-3146/
> 4、查看日志中有没有error
grep -i error 日志名
grep -i fatal 日志名
> 5、动态显示日志最后多少行
# 有三种写法
tail -200f 日志名
tail -f 200 日志名
tailf -200 日志名
# 动态匹配最后多少行日志中的error,fatal
tail -20f 日志名 |grep -i error
tail -20f 日志名 |grep -i fatal
5.2、打包,解压
> 1、打包
# zip包
zip -r 名称.zip 目录/*
> 2、解压
# 解压war包
unzip 名称.war
# 解压jar包
unzip 名称.jar
# 解压zip包
unzip 名称.zip
5.3、代码升级备份
> 1、全量升级备份 —>备份文件或目录
# 备份目录
## 使用日志格式备份
mv code{,.$(date +%F).bak} ==> code.2022-08-23.bak
## 或者是自定义
mv code{,.自定义.bak} ==> mv code{,.123.bak} ==> code.123.bak
# 备份文件 只需要把 code 换成文件即可
> 2、增量升级备份
# 备份目录
cp -r code code.时间.bak
-r 为递归
# 备份文件
cp 123.txt 123.txt.时间.bak
> 3、回退
# 相当于重命名
mv code.2022-08-23.bak code
mv 123.txt.时间.bak 123.txt
> 4、对比文件/目录内容是否一样
对比文件
# 方法一
diff 文件1 文件2
# 方法二
md5sum 文件1
md5sum 文件2
对比目录
diff -r 目录1 目录2
6、研发人员常用命令
6.1、基础命令
> 1、删除/创建文件或文件夹
# 创建文件,两种方式
echo > 文件名.txt
touch 文件名.txt
# 创建文件夹(目录)
mkdir 目录名
# 删除文件
rm 文件名
# 删除目录
rm -r 目录名
> 2、more,less 查看文档内容
more /var/log/message # 按enter键向后翻页,不支持回退,按q退出
less /var/log/message # 按上下键 向前/向后 翻页,按q退出
> 3、排序
# 按时间正序排序
ls -lt 或 ll -t
# 按时间倒序排序
ll -ltr 或 ll -tr
# 按时间正序排序,显示前20个
ls -lt |head -20
# 按大小排序
du -sh ./* |sort -rh
# 按大小排序,显示前20个
du -sh ./* |sort -rh |head -20
# 输出时,去除重复的行
sort -u
> find查找文件或目录
find /路径 -type d/f -iname "*name*"
-typd d # 查找类型为目录
-type f # 查找类型为文档
-iname # 忽略大小写
-mmin +/- 数字 # + 代表多少分钟之前,- 代表多少分钟之内
# 例如查找5分钟以内的日志
find logs/* -mmin -5 -exec ls -l {} \;
-mtime +/- 数字 # + 代表多少天之前,- 代表多少天之内
# 例如查10天以内的日志
find logs/* -mtime -10 -exec ls -l {} \;
> grep查找文档内容
# 基本用法
grep 参数 关键词 文件名称
grep -i error 日志 # -i 是忽略大小写
grep -i fatal 日志
grep -in error 日志 # -n 是输出匹配到的内容所在的行
6.2、快捷键
> 1、vim基础语法
用法:vim 文本名称
# 匹配内容
:set ignorecase # 忽略大小写
:set nu # 显示行信息
/error # 匹配error,按n切换到下一个,按N切换到上一个
# 编辑
在ESC模式下,按a,i,o进入编辑模式
a # 从当前位置的下一位开始编辑
i # 从当前位置开始编辑
o # 从当前位置的下一行开始编辑
# vim编辑器快捷键
shift +^ # 光标移至行首
shift +$ # 光标移至行尾
shift +e # 以空格为分割,移至内容末尾
shift +w # 以空格为分割,移至下个内开头
shift +b # 以空格为分割,光标向前移动
> 2、命令行快捷键
# 命令行:
ctrl +l # 清屏
ctrl +u # 清理光标之前的内容
ctrl +k # 清理光标之后的内容
ctrl +a # 光标移至行首
ctrl +e # 光标移至行尾
ctrl +h # 删除前一个位置的内容
ctrl +w # 删除以空格分割的内容
ctrl +p # 历史命令向上翻
6.3、网络
# 测试网络是否正常,常用命令
ping IP/域名
# 测试端口是否正常,
telnet ip/域名 端口
nc -zv ip/域名 端口
# 查看tcp协议端口状态
netstat -ntpl |grep 端口/服务进程
# 查看tcp协议下某个端口的连接状态
netstat -antpl |grep 端口
# 测试 域名地址 通不通
curl -m 3 -I http(s)://地址
-m 最大访问时间,单位为秒
curl -X POST "" http(s)://地址
-X 指定请求方式
# 6.4、测试端口是否正常,
telnet ip/域名 端口
nc -zv ip/域名 端口
# 6.5、 查看tcp协议端口状态
netstat -ntpl |grep 端口/服务进程
# 查看tcp协议下某个端口的连接状态
netstat -antpl |grep 端口
# 测试 域名地址 通不通
curl -m 3 -I http(s)://地址
-m 最大访问时间,单位为秒
curl -X POST "" http(s)://地址
-X 指定请求方式