锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【Linux】 Linux的多年工作经验总结,高频知识和技术原理

时间:2022-11-19 01:30:01 df37nc连接器

前面的主要内容是工作中常用的东西,属于经验总结类

后面重点是IO也是多路复用Linux最常见的技术点

VIM
命令模式
a——插入当前光标后的内容
i——插入当前光标前的内容
A——光标行尾插入内容
I——光标行首插入内容
o——光标所在行的后一行插入新行
O——在光标所在行的前一行插入新行
G——移动到最后一行
gg/1G——移动到首行
#G——移动到指定行#是数字
:n——跳到n行
ctrl f/ctrl b 前后翻页
ctrl d/ctrl u 前后翻半页
编辑模式
dd——删除光标所在行
ndd——从光标处删除5行
yy——复制光标所在行
nyy——从光标处复制5行
n——下一个字符串显示搜索命令定位
N——显示搜索命令定位的最后一个字符串
u——撤销上一步的操作
p——将之前删除或复制的数据粘贴到光标后面
:w——保存
:q——退出
:q!——强制退出
:set nu——显示行号,:set nonu——不显示
:命令-执行命令
:整数-跳转到银行
:s/one/two——将当前光标排名第一one替换成two
:s/one/two/g——将当前光标行所有one替换成two
:%s/one/two/g——全文one替换成two
:n,ms/one/two/g——n到m行替换
?abc——从下到上搜索abc字符串
/abc——从上到下搜索abc字符串
ESC
退出编辑模式

常用命令
find path -name "*.py"——查找path路径下的后缀是py的文件
tar 打包/解压
打包——tar -cvf xxx.tar.gz xxx
解压——tar -xvf xxx.tar.gz
grep
grep 'fatal\|error\|critical' /var/log/nginx/error.log——或搜索\转义
grep -E 'fatal|error|critical' /var/log/nginx/error.log——或者搜索,不需要转义
grep -i ——忽略大小写搜索
grep -w 'fatal' /var/log/nginx/error.log——搜索fatal单词字符串,不加-w,只要该行包含fatal即输出
grep -v abc ——不包含查找
grep -C 10 xxx ——匹配前后10行显示
> 重定向覆盖
>> 重定向追加
管道符 | —— 作为另一个命令输入的命令输入
awk
awk -F\| '{print $1,$4}' a.txt——按照|分割后,打印第一个和第四个
uniq
uniq a.txt——重复输出去除后的行
uniq -c a.txt——输出重复行和重复次数
sort
sort a.txt——ASCII排序

系统命令
date —— 查看系统时间
cal ——日历,-y查看一年的日历
su - 用户 ——直接切换用户su切换到root
top
P——按照CPU使用排序
M——按内存使用排序
T——按照累计CPU排序
top - 14:46:14 up 16 days, 4:04, 1 user, load average: 0.01, 0.02, 0.05 机器时间 机器的连续运行时间 在线用户数量 系统负载(1min 5min 15min) 详情——cat /proc/loadavg
ps
-ef:To see every process on the system using standard syntax
aux:To see every process on the system using BSD syntax
-eo:To see every process with a user-defined format
-mp:列出指定过程的子过程
-L:显示线程,可能使用LWP和NLWP列
ps -ef | grep 'xx'
ps aux | grep 'xx'
ps au --sort -pcpu | more:查看哪些过程CPU占用率最高
ps -eo stat,pid,user,%cpu,%mem,time,cmd:检查过程状态
ps -eo stat,pid,user,%cpu,%mem,time,cmd | grep -e '^[R]':查看运行中的进程状态
ps au -L | grep R:检查操作过程 线程状态
ps -mp -o stat,tid,user,%cpu,%mem,time,wchan | sort -rn:根据进程id检查其线程状态
ps -Lp cu | more:查看JAVA每个线程的过程CPU占用率
ps -efL | wc -l:列出机器总线程数
查看系统——cat /etc/redhat-relese
    查看内核——uname -a 或 cat /proc/version
    tar
        压缩
            tar –cvf xx.tar /tmp/ --exclude /tmp/test.txt /opt/ -> 打包为tar包
            tar –czvf xx.tar /tmp/ --exclude /tmp/test/ /opt/ -> 打包为tar.gz包
        解压
            tar –xvf xx.tar -> 解压tar包
            tar -xzvf xx.tar.gz -> 解压tar.gz
    网络
        统计网络连接状态
            netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
                TIME_WAIT 814
CLOSE_WAIT 1
FIN_WAIT1 1
ESTABLISHED 634
SYN_RECV 2
LAST_ACK 1
    nc
        参数
            -g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
        TCP端口扫描
            # nc -v -z -w2 192.168.0.3 1-100 
192.168.0.3: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.0.3] 80 (http) open
(UNKNOWN) [192.168.0.3] 23 (telnet) open
(UNKNOWN) [192.168.0.3] 22 (ssh) open
            扫描192.168.0.3 的端口 范围是 1-100
        扫描UDP端口
            # nc -u -z -w2 192.168.0.1 1-1000 //扫描192.168.0.3 的端口 范围是 1-1000
        扫描指定端口
            # nc -nvv 192.168.0.1 80 //扫描 80端口
(UNKNOWN) [192.168.0.1] 80 (?) open
y  //用户输入
        测试网络连通性
            nc -zv 172.21.44.85 8379

CPU
    查看物理CPU个数:cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
    load值持续大于0.7,必须开始找问题出在哪里,防止情况恶化;
load值持续大于1.0,解决问题已迫在眉睫;
load值持续大升高达到5.0,表示各种请求几乎得不到响应,机器几近崩溃;
对于多核机器,则需要根据CPU个数来判断系统负载是否过高。如,若认为0.7算是单核机器负载的安全线的话,则四核机器的负载最好保持在3(4*0.7 = 2.8)以下。

内存
    free -m
    访问纳秒级 ns   单位字节

磁盘
    df -h 查看磁盘大小
    du -h /apprun 列出apprun目录下的文件和文件夹大小
    访问微秒级 us  单位字节

网络
    netstat
        Proto:协议(tcp, udp, udpl, raw)
Recv-Q:网络接收队列,接收的网络数据,但还未被用户程序接收的字节数
Send-Q:网络发送队列,发送的网络数据,但还未被对端主机ACK的字节数
Local Address:本地IP+端口
Foreign Address:对端IP+端口
State:连接状态,详见Java网络编程系列之TCP连接状态
PID/Program name:进程id/程序名称
        netstat -naltup
netstat -naltup | uniq | wc -l
netstat -naltp | egrep 'LISTEN|ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | awk '{print $6}'| sort | uniq -c | sort -rn
    tcpdump
        tcpdump host 10.253.8.222 -> 监听本机和指定主机的通信
tcpdump host ! 10.253.8.222 -> 监听本机和指定主机之外的其他主机的通信
tcpdump host 10.253.8.222 and 10.37.18.28 -> 监听特定主机之间的通信
tcpdump host 10.253.8.222 and ! 10.37.18.28 -> 监听10.253.8.222和除10.37.18.28之外主机的通信
tcpdump port 28051 and host 10.253.8.222 -> 监听本机和指定主机在特定端口上的通信
tcpdump port ! 28051 and host 10.253.8.222 -> 监听本机和指定主机在非特定端口上的通信
tcpdump tcp port 28051 and host 10.253.8.222 -> 监听本机和指定主机在特定端口上的tcp通信
tcpdump tcp -s 0 -c 1000 -n -w /tmp/tcpdump_save.cap and port 28051   -c指定抓多少个包

系统参数
    文件句柄数
        ulimit -a——查看
        cat /proc/sys/fs/file-max——系统全局参数
        /etc/security/limits.conf——修改
            *               soft    nproc  512000
*               hard    nproc  512000
*               soft    nofile  512000
*               hard    nofile  512000
*               soft    stack   512000
*               hard    stack   512000
*            soft memlock unlimited 
*         hard memlock unlimited 

IO模型
    传统阻塞IO BIO
        一个独立的Acceptor线程来监听客户端连接
        每当有客户端来连接,就分配一个线程来处理
        客户端连接多的情况,线程数多,资源瓶颈
        建立连接后,线程阻塞读写
        举例
            餐厅点餐
            来一位客户,一位服务员等待着点餐
            服务员就是一个线程,一直等着你点菜,什么也干不了
    非阻塞IO  NIO
        用户态线程会一直轮询内核态数据是否准备好,会一直占用CPU   O(N)
        减少了线程数
    IO多路复用
        多路
            对比:同步阻塞
                线程A发起read请求
                内核等待数据到达
                数据拷贝
                read完成
                全程用户线程阻塞
                必须多线程处理多个socket请求
            用户可以在一个线程内同时处理多个socket的IO请求
            在同一个线程内同时处理多个IO请求的目的
        监听多个描述符,一旦某个描述符就绪,能够通知应用程序读写,需要select poll epoll来完成
        程序一次系统调用传入N个client,由内核自己完成遍历,返回可用的socket,客户端再recv确定的socket
        select
            O(N)
            当有IO事件发生,需要轮询所有的描述符,找出正确读写的描述符
            最大连接数限制
            每次传递大量的FD给内核
            每次都要重新遍历FD
        Linux 同步IO多路复用器
            需要客户端自己去读取数据
            只能拿到状态
            减少了系统调用次数
        poll
            O(N)
            没有最大连接数限制,链表存储
        epoll
            O(1)
            事件驱动
            mmap
        见redis 思维导图详细说明
    strace追踪
        strace -ff -o xx java xxx
 

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章