常用Linux命令整理

PS:整理一下日常工作中用到的linux命令,偶爾忘記了也可以快速回憶

ssh

登錄遠程服務器,shh 用戶名@IP地址,例如 `ssh [email protected]`。登錄之後,如果想退出,可以使用`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&param2=value" https://api.github.com

iptables

1、使用iptables -nvL查看防火牆開放的端口

14199675-0e78aca2e2e24f7a.png

image.png

如圖: 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 端口號,如果對應端口顯示情況如下:

14199675-711426599436d14a.png

image.png


如圖,表示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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章