1. 程式人生 > >整理文檔-基本命令小知識(比較亂)

整理文檔-基本命令小知識(比較亂)

去除 $nf 小數 tac 單獨使用 區別 內多 多個 針對

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

#####################
網絡知識
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 猜測功能 猜測主機是什麽系統
Shift + 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 [email protected]:/home/test"
while inotifywait -rqq -e modify,move,create,delete,attrib $FROM_DIR
do
$RSYNC_CMD
done &

###############

整理文檔-基本命令小知識(比較亂)