系统版本划分
目前主流的linux发行版本系统有如下几种:RedHat、Fedora、Ubuntu、Debian、Suse、CentOS,他们之间的关系如下:
https://download.csdn.net/download/qq_36236038/12643290
shell脚本
$()和 ` ` :
在 bash shell 中,$( ) 与` ` (反引号) 都是用来做命令替换用(commandsubstitution)的。
例如 version=$(uname -r)和version=`uname -r`都可以是version得到内核的版本号
各自的优缺点:
1. ` ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。但反单引号容易打错或看错。
2. $()并不是所有shell都支持。
1. $$ Shell本身的PID(ProcessID) 2. $! Shell最后运行的后台Process的PID 3. $?最后运行的命令的结束代码(返回值)
4. $- 使用Set命令设定的Flag一览 5. $*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
6. $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
7. $# 添加到Shell的参数个数 8. $0Shell本身的文件名 9.$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
${}命令
为了完整起见,我这里再用一些例子加以说明 ${ } 的一些特异功能:
假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
我们可以用 ${ } 分别替换获得不同的值:
${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是去掉左边(在鉴盘上 # 在 $ 之左边)
% 是去掉右边(在鉴盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2
我们也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my
shell命令
双击tab键,然后y,可以看到linux中支持的所有的命令
查看系统版本
1 cat /etc/issue 查看发行版本 ,这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。
2 cat /proc/version 查看内核版本
3uname -a 查看内核版本
less命令(向前等于向下pageDown)
n向下查找对对应的搜索词
N反向搜索
空格键 =page down =Ctrl+F向前翻页
b向上翻一页(向后翻一页)pageup =ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
enter键=向下一行
q退出命令
g移动到第一行
G移动到最后一行
d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行
grep 命令
标准unix/linux下的grep通过下面參数控制上下文
grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
grep -B 5 foo file 显示foo及前5行
grep -A 5 foo file 显示foo及后5行
curl命令
curl ifconfig.me(curl ifconfig.me/all)可以获取当前linux机器的外网地址
-s 只输出错误信息 -X 指定请求方法 -x指定机器代理 -v输出详细过程
可以根据-v来输出整个调用过程和数据,一般有调用到springmvc服务和没调用到该服务都是报404,区别在于没有调用到该服务,就没有您试图访问的页面没有找到
可以根据上面这个判断是否调用连接正常
网络排查命令(ping,telnet,tracert,pathping,nslookup,mtr,dig)
一般在Windows来判断网络连通性可以使用ping和tracet,ping可以用来判断丢包率,而tracet可以用来跟踪路由,在linux中有一个更好的网络连通性判断工具,可以结合ping nslookup tracert来判断网络相关特性,这个命令就是mtr。
1ping
2.telnet 有可能
3.tracert
4.nslookup :将域名解析成ip
5.mtr
6.dig
进程 端口号
ps -ef -aux都可以实现进程PID和进程名的互查
lsof -i | grep pid或者netstat -anp (-ano) | grep pid可以根据pid查询port
lsof (list open file)
losf -i:port 可以输出port对应的端口号
rz和sz linux与Windows互传文件命令
文件读取
du(Disk Usage)-h filepath 直接得出人好识别的文件大小
ls -lh filepath h表示human, 加-h参数得到人好读的文件大小
nohub命令
输入输出重定向
https://blog.csdn.net/An1090239782/article/details/103478896
AWK和sed
awk -F"," '{if($2>0){print $0}}'
linux函数详解
fork和COW机制
fsync
grep 问题
grep 在tailf后面写的时候需要带上双引号,否则的话就查不到东西
netstat 用法
例子1:netstat -a 表示查询所有网络进程端口。
例子2:netstat -at 表示查询所有网络进程的tcp通信端口。
例子3:netstat -au 表示查询所有网络进程的udp通信端口。
例子4:netstat -l 表示只查询处于监听状态的端口。
例子5:netstat -n 表示查询时不使用别名,转换成数字显示。
例子6:netstat -p 表示查询进程程序名。
例子7:netstat -anp 表示查询所有网络进程端口时使用数字方式显示并且显示相关的程序名。
例子8:netstat -anp | sshd 表示查询sshd进程的端口详细信息。
windows命令
windows也有管道概念
grep对应findstr