Linux常用命令小結

1. 磁盤使用情況

du -h  查看當前用戶每個文件的大小,格式化顯示

df  -h  磁盤使用情況

iostat -xm 3 磁盤的讀寫情況

2. VI常用命令

esc切換文件讀寫狀態,I鍵插入,O鍵追加

:q! 強制退出

:wq 保存後退出

:x  保存後退出

G 到文件尾部

1G到文件首 或者 gg

0或者^ 行首

$行尾

ctrl + f 向文件尾翻一頁

ctrl + b向文件首翻一頁

/patten 從光標開始處,向文件尾搜索patten

?patten 從光標處開始,向文件末搜索patten

: s /p1 /p2 /g 將當前行中所有p1全部替換爲P2

:n1,n2  s /p1 /p2 /g 將第n1到n2行中所有的p1全部替換爲p2

:g /p1 /s // p2 /g 將文件中的所有p1替換爲p2

:s/p1/p2/ 替換當前行第一個 p1 爲 p2
:s/p1/p2/g 替換當前行所有 p1 爲 p2
:n,$s/p1/p2/ 替換第 n 行開始到最後一行中每一行的第一個 p1 爲 p2
:n,$s/p1/p2/g 替換第 n 行開始到最後一行中每一行所有 p1 爲 p2
(n 爲數字,若 n 爲 .,表示從當前行開始到最後一行)
:%s/p1/p2/(等同於 :g/p1/s//p2/) 替換每一行的第一個 p1 爲 p2
:%s/p1/p2/g(等同於 :g/p1/s//p2/g) 替換每一行中所有 p1 爲 p2

dd 刪除一行

x 刪除一個字符

3. 查看機器負載情況

 top    按c鍵可以查看進程的描述信息

4. 查看機器信息

uname  查看系統情況

ifconfig 查看網絡IP

5. 基本命令

pwd 當前路徑地址

whereis 命令  命令所在的路徑

cd 目錄切換 如cd .. 切換到上層目錄

rm  刪除文件或目錄  -i 交互式參數,需用戶確認

                                  –r 目錄名:這個操作可以連同這個目錄下面的子目錄都刪除

                                  -f 文件/目錄:這個操作可以進行強制刪除

rmdir 刪除目錄   - p 遞歸刪除目錄

cp 文件目錄複製

 cp -r dir1 dir2 複製整個目錄: 若目錄dir2存在,則將目錄dir1,及其所有文檔和子目錄,複製到目錄dir2下,新目錄名稱

爲dir1. 若目錄dir2不存在,則將dir1,及其所有文檔和子目錄,複製爲目錄dir2.

mkdir  mydir 創建目錄mydir

mv  conf  conf_bak   使用mv命令來爲文件或目錄改名或將文件由一個目錄移入另一個目錄中

chmod u+x test.sh 改變文件的訪問權限,這裏是給腳本增加執行權限

echo test >> $(date -d "today" +"%Y%m%d_%H%M%S").txt

6. 查找命令

grep  "需要查找的文字"    查找的文件   如:grep "hello,world"  info.log

find pathname -options [-print -exec -ok ...]

7.打包

 tar -cvf     etc.tar /etc                僅打包,不壓縮!
 tar -zcvf    etc.tar.gz /etc          打包後,以 gzip 壓縮

tar -xvf tec.tar.gz                       解包並解壓縮

8. scp and ssh

ssh -A -p56789 [email protected]

scp -P56789  ./test.tar.gz   [email protected]:/home/myfolder/

SCP -r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。

         -p Preserves modification times, access times, and modes from the original file.

9 maven使用

mvn package -Dmaven.test.skip=true

10進程相關

ps -f -udir | grep "cron" 搜索dir用戶下所有包含cron字符的所有進程

killall -9  "rsync"  殺死所有包含rsync字符的所有進程

kill -9 1099  殺死進程編號爲1099的進程

ps -ef|grep sv_monitor|grep -v grep|cut -c 9-15|xargs kill -9 殺死包含sv_monitor的進程


11 ls 

ls -t1 info.log.* | head -n1 找出最後修改的哪一個log文件

ls -l | wc -l 統計文件個數

-t sort by last modification time

-1 list one file per line

head: -n N print the first N lines

12. md5sum

   man md5sum | col -b > md5sum.txt

   md5sum md5sum.txt

   md5sum md5sum.txt > hashfile

   md5sum –c  hashfile     # 驗證hashfile中包含的md5值和對應的文件,在執行該命令時是否仍然匹配, 如果此時test.c被修改了,該命令將返回不匹配的警告.

13. 查看linux版本

lsb_release -a 

uname -a

14. lsof 列出當前系統打開文件的工具

每行顯示一個打開的文件,若不指定條件默認將顯示所有進程打開的所有文件。lsof輸出各列信息的意義如下:
COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
TYPE:文件類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱

lsof  filename 顯示打開指定文件的所有進程
lsof -a 表示兩個參數都必須滿足時才顯示結果
lsof -c string   顯示COMMAND列中包含指定字符的進程所有打開的文件
lsof -u username  顯示所屬user進程打開的文件
lsof -g gid 顯示歸屬gid的進程情況
lsof +d /DIR/ 顯示目錄下被進程打開的文件
lsof +D /DIR/ 同上,但是會搜索目錄下的所有目錄,時間相對較長
lsof -d FD 顯示指定文件描述符的進程
lsof -n 不將IP轉換爲hostname,缺省是不加上-n參數
lsof -i 用以顯示符合條件的進程情況

15 crontab

基本格式 :
*  *  *  *  *  command
分  時  日  月  周      命令

第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令

*/5 * * * * /home/dir/test/bin/test.sh > /dev/null   每五分鐘執行一次腳本
45 23 * * * /home/dir/test/bin/test.sh > /dev/null 每天的23點45分執行一次腳本


16. 查看併發請求數及其TCP連接狀態

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
狀態:描述
  CLOSED:無連接是活動的或正在進行
  LISTEN:服務器在等待進入呼叫
  SYN_RECV:一個連接請求已經到達,等待確認
  SYN_SENT:應用已經開始,打開一個連接
  ESTABLISHED:正常數據傳輸狀態
  FIN_WAIT1:應用說它已經完成
  FIN_WAIT2:另一邊已同意釋放
  CLOSE_WAIT:等待所有分組死掉
  CLOSING:兩邊同時嘗試關閉
  TIME_WAIT:另一邊已初始化一個釋放
  LAST_ACK:等待所有分組死掉
awk,晚上找到一個簡單的例子
一個文檔test.txt內容格式如下:
a 6
b 8
a 9
左列是單詞,右列是單詞對應出現的次數,單詞可能重複出現。
怎麼用shell腳本統計出單詞出現的次數和?比如統計出:
a 15
b  8
awk '{a[$1] += $3;} END {for(i in a) print i,a[i]}' test.txt
假如需要以冒號:等分隔結果可以如下
awk '{a[$1] += $3;} END {for(i in a) print i,a[i]}' test.txt | awk { OFS=":"; print $1,$2}
再假如只輸出:分隔的第二個字段
awk '{a[$1] += $3;} END {for(i in a) print i,a[i]}' test.txt | awk { OFS=":"; print $1,$2} | awk -F :  {print $2}
17. 網絡
ifconfig  查看IP信息 (有可能在/sbin/ifconfig)
netstat -lntp 查看所有開放的端口
netstat -an | grep 8886 查看所有8886端口的連接
route -n 查看本機路由情況


  


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