文章目录
Linux指令
常用指令
磁盘管理
- ls指令
ls(list)功能:列出目录内容
格式:ls[参数](参数少部分有顺序要求)[目录](不写查看当前目录)
-a or -all 查看所有文件和目录
-l 详细格式列表
-t 用文件和目录的更改时间排序
-r 反向排序
-h 友好的显示方式 ll -h
常用 ls -l 等同于ll 例如 ll /home/
- cd指令
cd(change directory)功能:切换目录
语法:cd[目录]
常用
cd ~ ,切换到当前用户目录(用户主目录)
cd / ,跟目录
cd - ,上一次访问的目录即后退
cd .. ,上一级目录
cd 目录名称 ,访问下一级目录
cd ,缺省,切换到当前用户目录
- pwd指令
pwd(print working directory)功能:显示工作目录(当前目录)
- mkdir命令
mkdir(make directory)功能:创建目录
-p 父目录不存在情况下线生成父目录
-v 显示命令执行过程中的详细信息
- clear伪清屏命令
文件管理
- cat命令 快速查看整体内容,文件不过太大
cat(catenate)功能:显示文本文件内容
语法:cat 文件名称 ,显示指定文件的所有内容
- more命令
more功能:分页显示文件内容,支持直接跳行等功能
操作
Enter 向下n行,默认一行
空格键 向下滚动一屏or Ctrl+F
B 返回上一屏or Ctrl+B
q 退出more
Ctrl+c强制退出
example:more /root/install.log
- less命令
less功能:分页显示文件内容,操作更详细
-m 显示类似more命令的百分比
-N 显示每行的行号
操作
空格键:前进一页
b:后退一页
Enter:前进一行 or 方向键向下
y:后退一行 or 方向键向下
/字符串:向下搜索
?字符串:向上搜索
v:进入vim编辑器
q:退出
example:less -mN /root/install.log
- tail命令:常用于看日志.log
功能:显示指定文件末尾内容
-n<行数> 显示行数
-f 循环读取 (可以不停的查看最新信息)
example:ping 127.0.0.1 > ip.log & (&表示后台运行)
tail -f ip.log
文档编辑
系统命令
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mtpyn9ce.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
chmod 增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
网络配置
初始化虚拟机
执行命令
vi /etc/sysocnfig/network-scripts/ifcfg-ens33,将ONBOOT=NO改为yes 网络支持
yum -y install perl gcc gcc-c++ make cmake kernel kernel-headers kernel-devel net-tools 基本工具依赖
其中 yum search ifconfig 得到信息 ifconfig命令依赖net-tools
高频命令
查找文件:
在根目录/下查找包含kafka的文件
find / -name '*kafka*'
查找.log后缀 包含elk的行
find / -name "*.log" | xargs grep "elk"
高亮显示 kafka
find / -name '*kafka*' |grep --color kafka
查找进程所在目录
ps aux | grep 进程名称
ll /proc/pid
cwd符号链接的是进程运行目录;
exe符号连接就是执行程序的绝对路径;
cmdline就是程序运行时输入的命令行命令;
environ记录了进程运行时的环境变量;
fd目录下是进程打开或使用的文件的符号连接
如:
ps aux | grep job
ll /proc/22212
显示 cwd -> /usr/local/job1
查看系统资源:
内存:free
free -m 单位 M
磁盘:lsblk
cpu:lscpu
查找进程:ps
查找进程名称包含java的进程
ps -ef | grep java
查找进程名称包含java不包含grep的进程
-v相当于not
-e相当于and
-E "pattern1|pattern2" 相当于or
ps -ef | grep java | grep -v grep
ps -aux 和 ps -ef 显示信息类似但是风格不一样
System V风格和BSD 风格
ps aux 是BSD风格
ps -ef 是System V Style风格
显示磁盘容量:
df -h
排查磁盘占用情况:
du -sh /* 当前文件夹下所有文件及文件夹占用情况
du -h --max-depth=1 ;Linux 查找占用空间最大的文件与目录
ls –lhS 将文件以从大到小顺序展现
rm –f xxx.log 删除日志
/usr/sbin/lsof|grep deleted 确认删除文件是否被占用
kill -9 xxx杀死进程
排查内存占用情况:ps
ps aux | sort -k4nr | head -n 10
vim基本操作:
一般模式(默认)
i:insert插入模式
v:visual模式
移动光标选择复制内容
y 复制光标选中内容
yy 复制整行
在以上模式按Esc退出到一般模式
在一般模式:wq 保存退出
:q 直接退出
查看服务器是否开放某端口:netstat
tcp端口:>netstat -ntpl
udp端口:>netstat -nupl
查看所有连接
netstat -natp
查看程序端口号通信
根据线程号查询正在运行的程序的port(端口号)
netstat -anop | grep pid(程序的线程号)
查看TCP连接
统计聚合
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSE_WAIT 16
ESTABLISHED 126
TIME_WAIT 297
指定端口号的tcp统计
netstat -n |grep -i ":80" | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSED 没有使用这个套接字[netstat 无法显示closed状态]
LISTEN 套接字正在监听连接[调用listen后]
SYN_SENT 套接字正在试图主动建立连接[发送SYN后还没有收到ACK]
SYN_RECEIVED 正在处于连接的初始同步状态[收到对方的SYN,但还没收到自己发过去的SYN的ACK]
ESTABLISHED 连接已建立
CLOSE_WAIT 远程套接字已经关闭:正在等待关闭这个套接字[被动关闭的一方收到FIN]
FIN_WAIT_1 套接字已关闭,正在关闭连接[发送FIN,没有收到ACK也没有收到FIN]
CLOSING 套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认[在FIN_WAIT_1状态下收到被动方的FIN]
LAST_ACK 远程套接字已关闭,正在等待本地套接字的关闭确认[被动方在CLOSE_WAIT状态下发送FIN]
FIN_WAIT_2 套接字已关闭,正在等待远程套接字关闭[在FIN_WAIT_1状态下收到发过去FIN对应的ACK]
TIME_WAIT 这个套接字已经关闭,正在等待远程套接字的关闭传送[FIN、ACK、FIN、ACK都完毕,这是主动方的最后一个状态,在过了2MSL时间后变为CLOSED状态]
注意 TIME_WAIT 的数量
-- 查询指定端口80端口连接
netstat -nat|grep -i ":80"
-- 统计80端口连接数
netstat -nat|grep -i ":80"|wc -l
-- 统计httpd协议连接数
ps -ef|grep httpd|wc -l
查看进程或线程资源:top
查看进程资源
top [-d number] | top [-bnp]
top -d 5 -bn 1 -i -c
-d:top命令显示页面刷新时间,默认5秒
-b:以批次的方式执行top
-n:与-b配合使用,表示需要进行几次top命令的输出结果
-p:指定特定的pid进程号进行观察
-i -c:查看每个用户的执行的具体命令,类似于ps -f 进程id
执行top命令后
按 小写x 默认按cpu排序
按 大写M 内存排序 P cpu排序 N 启动时间排序
排查线程 cpu 飙升
top -Hp [pid] 进程号命令找到 CPU 消耗最多的线程号(列名仍然为 PID)
top -Hp 11211
printf "%x\n" 上面的列表把pid转为16进制
printf "%x\n" 27181
6a2d
jstack 进程号 | grep 16进制线程号 -A 10 命令找到 CPU 消耗最多的线程方法堆栈
非java使用 perf top -p 27181
yum install perf 安装
查看系统版本:
uname -a 查看当前系统版本
uname -r:发行版号 3.10
3.10.0-693.2.2.el7.x86_64
uname -v: 内核编译日期
#1 SMP Tue Sep 12 22:26:13 UTC 2017
uname -o:操作系统
GNU/Linux