资讯详情

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

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

后面重点是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 <pid> -o stat,tid,user,%cpu,%mem,time,wchan | sort -rn:根据进程id检查其线程状态 ps -Lp <pid> 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  

标签: df37nc连接器

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

锐单商城 - 一站式电子元器件采购平台