整理文档-基本命令小知识(比较乱)
获取公网地址:curl ipinfo.io/ip
获取局域网ip: ipconfig getifaddr en0
网速测试:speedtest-cli --server 2406 --simple
校验:shasum -a 256
随机生成密码:openssl rand -base64 20
断点下载:wget -c
1.tcpping tcp和udp协议 使用syc ack 状况判断 ping icmp协议
2.tracert window 路由及延迟查看
3.缓存cache及buffer缓冲 sync清理缓存
缓存清理 echo 3 > /proc/sys/vm/drop_cache (可以echo 0 1 2 3)
4.mdadm raid阵列制作 mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sd{a,b,c}
5.rz sz linux窗口模式下载上传
6.u盘启动盘制作 使用制作工具(u盘装机大师 u启 等)下载工具 运行工具 加入镜像文件 制作
7.lsblk fdisk arp
#####################
网络知识
dstat linux 下查看查看网速
1.颜色设置命令 \[\e[30;40m\]#####\[\e[0m\]
2.lokkit -s http -s ssh 防火墙打开对于端口
3.mtr ping命令和traceroute的结合 并事实更新情况 linux常用网络检查 mtr -r -c 30 -s 1024 www.baidu.com
4.traceroute 检查连通性 数据包的发送过程查看
5.tcpdump [options] [not ] proto dir type
options :-D 列出能监控的端口 加到 -i后面
-i 指定接口
-XX 输出包头数据
-vvv 显示详细输出
-nn 不解析未域名 不解析端口
-c 制定抓包的个数
proto :协议 udp/tcp/icmp/arp/ip/ether
dir : 制定方向 dst src src and dst src or dst
type: port host net portrange
telnet 通过用户名和密码远程端口
iostat -d -x 1 100,查看系统io的使用情况(-d 是查看disk, -c是查看cpu), -x是查看更多信息,1是1秒刷新一次,100是查看一百次
strace https://linux.cn/article-3935-1.html https://www.cnblogs.com/ccorz/p/Linux-strace-zhui-zong-ming-ling-xiang-jie.html
sed
awk
GC情况呢?在JVM虚拟机后加上参数-XX:+PrintGCDateStamps -XX:+PrintGCDetails
jps 显示java进程id
ps -mp 10880 -o THREAD,tid,time|sort -rn|more 查看pid为10880的线程情况 tid 时间 cpu百分比等 查看占用教大的
jmap 检查jvm进程情况(所占内存大小 对象数量) jmap -dump:live,file=b.map 22467 将jps id为22467的快照信息存储到b.map中
jmap -histo jpsid 查看进程相关信息 大小数量
jstat 监控jvm垃圾回收 gc情况监控 jstat -gcutil jpsid 主要查看fgc(full gc 次数 )fgct(full gc时间 ) 较大九可能程序有问题 垃圾回收不掉
jstat -gc 12538 5000 jpsid 5秒打印一次12538的gc情况
top -p pid -H 查看当前进程中cpu线程
ps -T -p pid 查看当前进程线程
printf ‘%x\n’ 数字 打印为16进制
jstack -pid |grep 16进制pid号
curl ifconfig.me/all 查看服务器的外网ip
unzip 可以直接减压war包
nmap nmap -sn 172.20.100.0/24 扫描一个网段
namp -iL TEST.txt 扫描 txt文件中的ip
nmap 172.20.100.0/24 -exclude 172.20.100.33 扫面除了那个的
namp -p80,22,23 172.20.100.99 扫描主机上的端口
-sS SYN方式扫描
-sT TCP方式扫描
-sU UDP 方式扫描
-sF FIN方式扫描
-sP ping 扫描
-sL 隐藏真实ip的想主机发送数据包
-PN 表示不ping目标主机 因为有些服务器有防火墙
-O 检测主机的 操作系统类型 -osscan-guess 猜测功能 猜测主机是什么系统
nc工具 :功能强大的网络工具 :https://blog.51cto.com/11736068/2326337
hift + Insert 向终端内粘贴文本
CTRL + U 剪切光标
CTRL + Y 粘贴前的内容
nohup 与 disown -a 将其放到后台运行。这样即使退出ssh登陆后,命令仍会在目标机器上运行
echo命令中使用-e选项启用'\'转义,将'\n'解析成换行
xargs 常结合管道 | 使用 将前面结果输出处理
-n表示已几个字符为一行输出
tee
windows上 运行--regedit(注册表)
运行--services.msc(服务)
运行--gpedit.msc(ce)
doc 窗口 wmic --》 cpu get * #查看cpu情况
########
elk
gitlab
partprobe /dev/vdb
1、查询是否锁表
show open tables where in_use>0;
2、查询进程
show processlist
查询到相对应的进程,然后 kill id
3、查看正在锁的事务
select * from information_schema.innodb_locks;
4、查看等待锁的事务
select * from information_schema.innodb_lock_waits;
---------------------
tcp连接数查看:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ipcs
1. 命令格式
ipcs [resource-option] [output-format]
ipcs [resource-option] -i id
2. 命令功能
提供IPC设备的信息
3. 使用方法
resource选项:
ipcs -m 查看系统共享内存信息
ipcs -q 查看系统消息队列信息
ipcs -s 查看系统信号量信息
ipcs [-a] 系统默认输出信息,显示系统内所有的IPC信息
ipcrm
1. 命令功能
通过指定ID删除删除IPC资源,同时将与IPC对象关联的数据一并删除,只有超级用户或IPC资源创建者能够删除
2. 使用方法
ipcrm -M shmkey
移除用shmkey创建的共享内存段
ipcrm -m shmid
移除用shmid标识的共享内存段
ipcrm -S semkey
移除用semkey创建的信号量
ipcrm -s semid
移除用semid标识的信号量
ipcrm -Q msgkey
移除用msgkey创建的消息队列
ipcrm -q msgid
移除用msgid标识的消息队列
tr 'a-z' 'A-Z' 大小写转换
下面是 screen 常用命令
在 screen 中执行
Ctrl+a+n 切换到下一个窗口
Ctrl+a+p 切换到前一个窗口(与 Ctrl+a+n 相对)
Ctrl+a+0..9 切换到窗口 0..9
Ctrl+a+d 暂时断开(detach)当前 screen 会话,但不中断 screen 窗口中程序的运行
在 shell 中执行
screen -ls 列出当前所有的 session
screen -r stack 回到 devstack 这个 session
缓存
异步
并发
分布式
##############
vi /etc/sysctl.conf
fs.nr_open=100000000 #单个进程打开文件数量 默认:1048576
fs.file-max=100000000 #所有进程可以打开文件数量
net.ipv4.ip_local_port_range = 1024 65535 #可用端口数量修改 1024一下为操作系统保留(这样设置可能会导致服务监听端口被占用而无法启动)
net.ipv4.ip_local_reserved_ports = 5222, 5269, 5280-5390 #占用local_port时会排除掉这些保留端口,避免服务端口被占用无法启动情况
vi /etc/security/limits.conf
* hard nofile 4194304 #硬资源文件描述符数量限制(一个tcp连接都要占用一个文件描述符),设置不能高于nr_open,否则不能ssh登陆
* soft nofile 4194304
执行完毕后执行sysctl -p
###################
程序调优
:
Erlang虚拟机调优:
erl +P 10000000 #进程数量 默认262144,通常为2的n次方
erl +t 10000000 #原子数量 默认1048576
erl +Q 10000000 #端口数量 范围1024-134217727 linux:65536 windows:8192
压测工具使用Tsung
常见的性能瓶颈包括CPU/内存/磁盘IO/网络带宽等,其中每一项都有一到多个简单实用的工具: 对于CPU和内存,我们只要使用top就可以了;对于磁盘IO,可以用iotop或iostat;对于网络带宽,可以使用iftop。
#############
grep
-n 行号
-r 逐级匹配,对象可以是目录
-i 忽略大小写
-E 模式扩展表达式
-c 显示匹配的行数
cut
-c 以任意字符为单位分割 eg:cut -c 4-10 test.txt#打印第4-10个字符
-d 自定义分界符
-f 与-d连用 指定显示那个区域 eg: cut -d " " -f2 test.txt #打印以空格为边界的第二个字段内容
sort
-k 定义边界符为边界的第几个字段排序 eg sort -k 2 #默认以空格为边界 ,以第二个字段排序
-n 依照数值的大小排序 ,默认就是以数字大小排序
-r 以相反的顺序来排序
-t 制定分界符 eg:sort -t 'e' -k 2 -r test.txt
-u 去除k行重复行(以指定的 k来排序的重复行)
uniq
-c 行首显示重复行的次数
-u 显示没有出现过重复的行
seq
seq 5 --> 1 2 3 4 5
seq 2 4 2 3 4 5
{1..10}--> 1 2 3 4 5 6 7 8 9 10
tr
转换或伤处文件中的字符
a-z 任意小写
A-Z 任意大写
0-9 任意数字
也可自定义转换特定字段
eg1:echo 'this is a test' |tr a-z A -Z #小写转换为大写
THIS IS A TEST
eg2:
cat test
this is leo1
this is leo2
cat test |tr -d 's' #删除所有行的s字符
thi s leo1
thi s leo2
$0 当前脚本文件名
$$ 当前shell的id 如为shell脚本就是该脚本的进程id
$* 传递给脚本的所有参数的罗列
$# 传递给脚本或函数的个数
$? 上一个命令的退出状态
条件表达式
[ expression]
[[ expression]] 支持正则匹配 [[ =~ ]]比[]通用
test expression
! 非 条件结果取反 条件为假取真
-a 和关系[]表达式中用 都为真才为真
-o 或 关系 []表达式中使用 有一真为真
&& 逻辑和 [[]]和[]都可用
|| 逻辑或 [[]]和[]都可用
echo ${a-"ok"} #没有定义a或a值为空则当此输出为ok,但没赋值给a,如a定义了不会赋值给a
echo ${a="ok"}#没有定义a或a值为空则输出为ok 并赋值a为ok 如a已定义不会赋值给a
+ - * / %(取余)
echo ${!n*} 或echo ${!n@} #搜索已定义以n开头的变量
$(()) 和$[] 运算表达式
let 赋值并运算 支持 ++ -- 脚本中常用
expr 乘法徐娇反斜杠转义 \*
bc 计算器 支持浮点
$[RANDOM%62] 随机数范围1-62
${#变量名}#统计变量名的长度
字符串截取:
${变量名;起始位置:长度} # 从0开始 ,不能分段
expr substr $变量名 起始位置 长度 #从1开始 不常用
cut -b 起始位置-结束位置 #截取指定字符 从1开始 eg: cut -b 3,5,8 只截取这几个位置,可以分成几段
区别:第一种方式只能连续匹配 cut能够分段匹配
字符串替换
${变量名/old/new}#替换第一个
${变量名//old/new} #替换所有
${变量名/#old/new}#前缀匹配才替换 ,old可以为一个正则表达式
${变量名/%old/new} #后缀匹配才替换
字符串掐头去尾
${变量名#*关键词} #从左匹配,去除所有直到遇到第一个关键词
${变量名##*关键词}#从左匹配,去除所有直到最后一个关键词(最长匹配)
${变量名%关键词*} #从右开始,去除所有直到遇到第一个关键词
${变量名%%关键词*}#从右开始,去除所有直到遇到最后一个关键词
*可代表要去除的
基本正则表达式:
^ 匹配行首
$ 匹配结尾
[] 集合,匹配集合中的任意单个字符
[^] 对集合取反
. 匹配任意单个字符
* 匹配前一个字符任意次 不能单独使用
\{n,m\} 匹配前一个字符n到m次
\{n\} 匹配前一个字符n次
\{n,\} 匹配前一个字符n次以上
扩展正则表达式
+ 最少匹配一次
? 最多匹配一次
{n,m} 匹配n到m次
() 组合为整体,保留 后面可用\1 调用
| 或者
\b 单词边界
[:alnum:] 等效a-zA-Z0-9
[:alpha:] 等效a-zA-Z
[:lower:] 等效a-z
[:upper:] 等效A-Z
[:digit:] 等效0-9
[:space:] 匹配任意空白字符,等效\t\n\r\f\v
[:graph:] 非空白字符
[:blank:] 空格与定位字符
[:cntrl:] 控制字符
[:print:] 可显示的字符
[:punct:] 标点符号字符
[:xdigit:] 十六进制
awk sed grep egrep 都是正则 其他都是通配符 通配符一般针对目录,正则针对文件内容
grep支持基本表达式
egrep 支持扩展表达式
sed
sed的工作原理:sed读取一行,首先将这行放入到缓存中,然后,才对这行进行处理,处理完成以后,将缓冲区的内容发送到终端,存储sed读取到的内容的缓存区空间称之为:模式空间(Pattern Space)
sed [选项][sed命令][输入文件]
选项:
-r 开启支持扩展正则
-n 取消默认的软件输出 常与p连用
-i 直接修改内容
-e 一行命令可以执行多条sed命令
命令:
a 追加 在指定行后添加一行或多行文本
d 删除指定的行
p 打印模式空间内容 与-n连用
c 取代指定的行
i 在行前插入
特殊符号
! 指定行以外运行命令
sed -n '/时间1/,/时间2/'p test.log eg:sed -n '/2015-05-04 09:25:55/,/2015-05-04 09:28:55/'p /home/wwwlogs/access.log
awk
awk [options] 'pattern {action}' file 只能单引
options awk参数
'pattern {action}' 模式动作
pattern 找谁
action 干啥
-F 定界符 也可用正则便是定界符
NR 行数
NF 字段
$0 输出整个字段
~ 表示正则匹配
eg:
awk 'NR>=2&&NR<=5{print $0}' /etc/passwd
awk -F ':' '$5~/root/' test
-BEGIN模式:awk读取文件之前处理
-END模式:awk读取文件之后处理
awk -F ':' 'BEGIN{print "username","bash type"}{print $1,$NF}END{print "end of file"}' test
cat test | awk -F '/+' '{h[$2]++}END{for (i in h) print i,h[i]}
expect
yum -y install expect
vim expect_ssh.sh
#!/bin/bash
expect << EOF
spawn ssh 172.25.0.10
#//创建交互式进程
expect "password:" { send "123456\r" } #//自动发送密码
expect "# { send "pwd > /tmp/$user.txt \r" } #//发送命令
expect "#" { send "exit\r" }
EOF
iops 吞吐量测试
https://blog.csdn.net/luyegang1/article/details/74453879
echo
-n 不输出末尾换行符
-e 允许反斜杠转义,常用于输出颜色
k8s
组成:
cluster :计算、网络、存储的集合 代表整个k8s整体
master :cluster的大脑 负责调度
node:运行容器应用。由master干你
pod :K8S最小工作单位 每个pod包含一个或多个容器
rsync +inotify
rysync:系统自带
inotify:
wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
rysync
-a 归档模式 相当于-rlptgoD
-v 显示详细操作信息
--delete 删除目标文件夹内多余的文档
-n 测试同步过程 不做实际修改
-z 传输过程中启用压缩/解压
--password-file=FILE 从FILE中得到密码
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--progress 显示备份过程
--backup :对目标上已存在的文件做一个备份,备份的文件名后默认使用"~"做后缀
--existing 是只更新目标端已存在的文件。
--ignore-existing 是更新目标端不存在的文件
inotify
-m 始终监控
-r 递归监控
@<file> 目录递归监控 排除监控
-q 静默监控
--exclude <pattern> :通过模式匹配来指定不被监控的文件,区分大小写
--excludei <pattern>:通过模式匹配来指定不被监控的文件,不区分大小写
-e
access:文件被访问
modify:文件被写入
attrib:元数据被修改。包括权限、时间戳、扩展属性等等
close_write:打开的文件被关闭,是为了写文件而打开文件,之后被关闭的事件
close_nowrite:read only模式下文件被关闭,即只能是为了读取而打开文件,读取结束后关闭文件的事件
close:是close_write和close_nowrite的结合,无论是何种方式打开文件,只要关闭都属于该事件
open:文件被打开
moved_to:向监控目录下移入了文件或目录,也可以是监控目录内部的移动
moved_from:将监控目录下文件或目录移动到其他地方,也可以是在监控目录内部的移动
move:是moved_to和moved_from的结合
moved_self:被监控的文件或目录发生了移动,移动结束后将不再监控此文件或目录
create:在被监控的目录中创建了文件或目录
delete:删除了被监控目录中的某文件或目录
delete_self:被监控的文件或目录被删除,删除之后不再监控此文件或目录
umount:挂载在被监控目录上的文件系统被umount,umount后不再监控此目录
isdir :监控目录相关操作
eg:
#!/bin/bash
FROM_DIR="/home/test/"
RSYNC_CMD="rsync -az --delete $FROM_DIR root@172.20.101.29:/home/test"
while inotifywait -rqq -e modify,move,create,delete,attrib $FROM_DIR
do
$RSYNC_CMD
done &
###############