linux
linux运行级别 vim /etc/inittab
0停机
1单用户模式,用于系统维护,不能远程登录
2不联网的多用户状态
3 能联网的多用户状态
4暂时无
5图形界面
6重启,反复不断地重启
找回root密码:设置为单用户模式登录,用passwd root修改root密码。(单用户模式不需要root密码登录)
/etc/passwd 管理用户配置文件
/etc/shadow 用户口令配置
/etc/group 管理组信息
常用linux命令
touch{1..10}.txt
mkdir
mv [移动,重命名]
cp -r 目录 递归
rm -r 目录 递归
rmdir
cat/tac -n 文件名 | more (-n分行数,more分页)
more less 用于查看大型文件,不会一下子加载出来看到哪加载哪. (enter向下一页,space向下一行)
grep:在一堆文件中查找特定字符
>覆盖 >>追加
cal显示日历
删除java相关所有
rpm -qa | grep java | xargs sudo rpm -e --nodeps
常用快捷键:
shift + pageUp向上翻动
shift + pageDown 向下翻动
软连接(快捷方式): ln -s 文件地址 连接名
查找指令: whereis find locate
locate查询文件路径
先更新数据库updatedb; 再查找 locate hello.txt
whereis 只从数据库中查找,只能搜索二进制文件,源代码文件
find 强大 ,不但可以通过文件类型,文件名进行搜索,还可以通过文件时间,文件权限搜索
sudo find /tmp/ -name(-user -size) first.txt
sudo find /tmp -newer /tmp/homework 找到比homework更新的文件
文件压缩解压指令:
zip 打包后的名称 文件名(文件路径)
-r递归打包 -q安静模式 -1...9 文件压缩级别(9压缩的最狠,压缩体积最小,耗时最久)
unzip 解压
unzip 压缩文件.zip -d 指定目录
unzip -l 文件.zip (只查看内容不解压)
查看文件容量 du -h -d 文件名 (-h人类可读,-d 深度)
tar命令: tar -zcvf 压缩 tar -zxvf -C解压
tar -cf 打包名.tar 文件名(文件路径) 对文件进行打包成 打包名.tar
tar -xf 打包名.tar -C 路径 对打包名.tar进行解压到路径
磁盘管理:
主分区:最多创建四个,当存在四个的时候就没有扩展分区,也就没有逻辑分区
扩展分区:除了主分区以外,剩下的磁盘空间都为扩展分区,扩展分区不能直接使用
逻辑分区:在扩展分区基础上划分出的分区
(只有主分区和逻辑分区可以格式化
1-4号只能是主分区和扩展分区,逻辑分区从5号开始
扩展分区不能直接使用,扩展分区基础上的逻辑分区可以使用)
df 查看整体磁盘使用容量 df -h /etc (查看/etc下的磁盘容量)
du 查看文件夹容量 du -h /tmp (查看tmp目录下文件夹容量)
fdisk 磁盘分区
(-n添加新分区 -p 查看分区信息 -d 删除分区 -w 保存 -q直接退出)
格式化 mkfs(make filesystem) mkfs.ext 磁盘名
挂载磁盘到目录树 mount -o loop -t ext4 磁盘名 目录名
卸载已挂载磁盘 sudo unmount /mnt
帮助命令
something --help
man something
Linux添加定时任务 crontab
sudo cron -f & (启动crontab)
crontab -e (为当前用户添加定时任务)
(minute hour day month week command)
*所有
,和 1,10 第1分钟和第10分钟
-到 1-10 第1分钟到第10分钟
/n每 */3 每三个月执行一次
23-7/1 从晚上23点到7点 每一个小时执行一次
在crontab中%是有特殊含义的,表示换行的意思,如果要用的话必须进行转义 \%
date ‘+%Y%M%D’ 改成 date ‘+\%Y\%M\%D’
Cut命令:
cut /etc/passwd -d “:” -f 2,6 打印/etc/passwd 以”:”为分隔符,第二个和第六个字段
cut /etc/passwd -c -5 打印/etc/passwd 文件中每一行的前5个字符
grep匹配字符串搜索:
-n匹配行和行号 -i忽略大小写
export | grep “.*txt” 查找以*txt结尾的环境变量
wc统计文本
wc -l 统计行数
wc -w 统计单词数
wc -c 统计字节数
sort排序
cat /etc/passwd | sort
正则表达式regex
*表示前面的字符出现0-n次
+表示前面的字符至少出现一次
?表示前面的字符最多出现一次
z]匹配任意小写字母 a-z
进程管理:
ps -aux 显示所有进程信息
kill -9 pid 强制结束进程
创建进程并设置优先级: nice -n -5 vim&
对已经存在进程修改优先级: renice -5 pid
linux系统变慢 查询
LINIX常用命令: (系统变慢原因 逐个排查)
1. 查看整机 top
top查看当前机器使用情况
结果参数:
负载均衡 load average: 0.08, 0.20, 0.23 三个值代表1分钟 5分钟 15分钟系统平均负载值, 系统负载均衡 三个值相加 /3 * 100% 如果高于 60%说明系统负担压力重
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
uptime 简单版top
2. 查看CPU vmstat
vmstat - n 2 3 采样时间每次间隔2秒 采样3次
结果参数:
r 正在运行或等待cpu的进程数 理论上不能超过cpu总核数的两倍
b 等待资源的进程数 如磁盘I/O 网络I/O等
us 用户进程消耗CPU时间百分比 如果长期大于50% 需要优化程序
sy 系统进程消耗CPU时间百分比
us+sy 如果大于20CPU任务重 如果大于80说明CPU不足
id cpu空闲率 越高越好
mpstat -P All 2 每两秒钟查看一次cpu状况
内存 free
free -m 查看内存
硬盘 df
df -h 查看磁盘使用情况
磁盘IO iostat
iostat -xdk 2 3 每两秒打印一次磁盘IO情况 一共三次
rKB/s 每秒读 wKB/s 没秒写 util 一秒钟有百分之几的时间用于IO操作,接近100%时表示带宽跑满
网络IO ifstat
ifstat 1 每秒打一次网络IO情况
ps -ef | grep java 获取java进程号
pidstat -u 1 -p 进程号 每秒钟 打印一次该进程号cpu使用情况
pidstat -p 进程号 -r 2 每两秒钟 打印一次该进程号的内存占用情况
pidstat -d 2 -p 进程号 每两秒钟 打印一次磁盘IO情况
排查实战;
top 命令 找到cpu占比最高的进程
ps -ef 找到对应的进程号
ps -mp 进程号 -o thread,tid,time 找出进程中具体的线程号 tid
将10进制的线程号转为16进制 (英文字母小写)
jstack 进程号 | grep tid(十六进制的线程号) 查看日志