常用命令
ps -ef 查询所有进程,包含启动信息,启动用户、进程id
pmap -x 查询进程内存占用
top 查看系统运行情况,查看负载,内存占用,cpu占用,用M按内存排序,用P按照cpu占用排序。top -Hp 制定进程输出线程信息。
du -h --max-depth=1 查看当前一级目录下的文件大小,不指定深度则当前目录下每个字目录都会列出来
df -h df是查看磁盘总使用情况,-h是方便阅读
printf 标准化输出,可以用于输出格式化数。比如pritf %x 转换16进制输出,%d输出10进制,%o输出8进制。
lsof -i:端口号 查看端口占用
netstat -ntlp 查看所有tcp端口占用,通过grep搜索
awk命令
vim命令 dd删除整行数据
free -h 查看内存
grep 查询文本、-a 10查后面10条,-b 查前面,-10查前后。配合tail -n 1只返回对应匹配的最后一行,配合 head -1查询匹配的第一行
less 看日志,FF到最后
tail -f 监控日志,-n 指定输出行
cat 查看文件
cp -rf 复制文件和覆盖
mv 移动和重命名
which 查找配置命令的文件
mkdir 创建文件夹
touch 创建空白文件
awk
sent
tar -xzvf 解压
vim命令大全
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;
排查cpu占用高
- 查找cpu进程占用cpu最高的,
top
后p根据cpu排序 printf %x 进程id
获得进程id对应16进制的数。top -Hp 进程id
,查找进程中线程占用情况。
p表示查看指定进程中的线程信息,H表示查看开启线程查看。Shift+H可以开启关闭线程显示jstack 进程id | grep -A 20 线程id
。查看占用高的线程堆栈信息,从而看到是哪一行代码有问题。
5种io模型
- 同步阻塞io。需要等待数据准备好(读取网络数据、文件数据等到内核空间),需要等待数据从内核空间复制到用户空间
- 同步非阻塞io。不需要等待数据准备好,需要等待数据从内核空间复制到用户空间
- 同步多路复用io。通过集合存储多个文件描述符,同时监听处理多个io。select poll epoll
- 信号驱动式io。通过信号告知应用程序数据已准备好,应用程序通过系统调用将数据从内核空间复制到用户空间。
- 异步io。两步都不需要等待,不需要阻塞等待数据复制到用户空间,在数据复制到用户空间后,通过回调,通知应用程序处理 </