PS:整理一下日常工作中用到的linux命令,偶爾忘記了也可以快速回憶
ssh
登錄遠程服務器,shh 用戶名@IP地址,例如 `ssh huangy@10.111.32.21`。登錄之后,如果想退出,可以使用`logout`退出。
常用參數:
(1)-p : 指定遠程服務器的端口
tail
從末尾查看文件,常用`tail -f XXXX`
常用參數:
(1)-f : 查看文件的新添加的內容
(2)-n : n可以是任意數字,查看從末尾開始的n行
head
從頭查看文件,常用`tail -100 XXXX`
常用參數:
(1)-n : n可以是任意數字,查看從頭開始的n行
ps
查看名稱對應的進程,常用`ps aux | grep XXX`,ps aux按照指定格式打印進程信息。
ps aux輸出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND<br>
格式說明:
USER: 行程擁有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的記憶體使用率
VSZ: 占用的虛擬記憶體大小
RSS: 占用的記憶體大小
TTY: 終端的次要裝置號碼 (minor device number of tty)
STAT: 該行程的狀態,linux的進程有5種狀態:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
注: 其它狀態還包括W(無駐留頁), <(高優先級進程), N(低優先級進程), L(內存鎖頁).
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令
free
查看內存使用情況,常用`free -m`
真正未用到的內存數(可用內存):free+buffers+cached 的值,也就是+ buffers/cache。如果這個值太小,說明內存不足了。可以考慮把其他較小的項目內存弄小
老版本的linux,沒有+ buffers/cache字段,可以使用available字段觀察
top
查看內存和CPU的使用情況
lsof
查看文件的打開情況
scp
下載文件到本地,常用 `scp 登錄名@IP:路徑 本地路徑`
另外,如果從線上機器下載文件的時候,線上機器一般不會開放22端口,因此,往往需要選擇別的端口,這時候可以用到-P參數,指定端口。例如:`scp -P 50022 登錄名@IP:路徑 本地路徑`
zcat
查看壓縮包內容,常和grep一起使用,`zcat 文件名 | grep '查找的內容' --color`
cat
查看文件內容,常和grep一起使用,`cat 文件名 | grep '查找的內容' --color`
grep
1、匹配文本內容,常用grep -E '查找的內容'
文件名。更多用法參考:https://www.cnblogs.com/leo-li-3046/p/5690613.html
參數:
--color 把匹配的內容顯示為紅色
-E 使用正則匹配
-A10 顯示匹配行后面10行
-B10 顯示匹配行前面10行
-C10 顯示匹配行前后10行
-c 顯示匹配行的計數
2、grep實現and語義:grep 'pattern1' filename | grep 'pattern2'
,不過一般情況下,搜索日志需要搜索整個文件,因此使用cat和grep搭配使用:cat filename | grep 'pattern1' | grep 'pattern2'
3、假如一頁無法顯示完,需要grep、cat、more結合使用,例如 cat install.log | grep “i686”| more
。
(1)在more 文件名
下,空格
向后一頁,ctrl + B
往前一頁。在cat install.log | grep “i686”| more
情況下,無法使用ctrl + B
往前一頁
(2)在這種情況下,推薦使用cat test.text | grep -C100 '2' | less
,可以達到more一樣的效果,d
往后翻頁,b
往前翻頁
curl
1、默認模擬get請求:curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
2、模擬post請求:curl -u username --data "param1=value1¶m2=value" https://api.github.com
iptables
1、使用iptables -nvL
查看防火墻開放的端口
如圖: dpt:9001表示9001端口開放; dpts:31000:38000表示31000到38000之間的端口開放
2、開放端口:
// 開放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
// 開放范圍的端口
iptables -A INPUT -p tcp --dport 4800:4900 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 4800:4900 -j ACCEPT
// 保存配置:
/etc/rc.d/init.d/iptables save
// 重啟服務:
/etc/init.d/iptables restart
netstat
1、使用netstat -anp |grep 端口號
,如果對應端口顯示情況如下:
如圖,表示3306端已經被占用
telnet
1、登錄遠程:telnet ip port
,比如說telnet localhost 8080
剪切文本
假如需要先進行正則匹配,然后再剪切出所需要的文本,該怎么做?
只是利用grep,正則匹配返回的是一整行,如果我只想要其中某部分呢?
我提供一個方法(網上各位大神肯定有更好的哈):
zcat wechat-union-core-2018-09-19.*.log.zip | grep 'asyncLog upload, statParamMap' | cut -d { -f 2 | cut -d } -f 1
(1)先利用grep篩選出滿足條件的行
(2)然后利用cut -d對行進行分割,文中是利用“{”及“}”做了2次分割
(3)再利用-f參數,選擇需要的部分,文中先選擇了第2部分,在此基礎上,再選擇第1部分
PS:這種方法的使用場景還是比較狹隘,望賜教
參考:
https://www.cnblogs.com/gbyukg/p/3326825.html
https://www.cnblogs.com/zongfa/p/7967935.html