1. 程式人生 > >Linux經常用到的命令

Linux經常用到的命令

1. Linux下用vim開啟配置檔案亂碼,在終端輸入:“LANG=”即可。

2. 檢視埠是否被佔用:

3. netstat -anp | grep port

    netstat -ltn

4. lsof -i:port

5. Shell指令碼命令列表:

$# 是傳給指令碼的引數個數

$0 是指令碼本身的名字

$1 是傳遞給該shell指令碼的第一個引數

$2 是傳遞給該shell指令碼的第二個引數

[email protected] 是傳給指令碼的所有引數的列表

$* 是以一個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,引數可超過個

$$ 是指令碼執行的當前程序ID號

$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤

6. find . -type f -name "*.sh" -type 查詢某一型別的檔案,諸如:b - 塊裝置檔案。d - 目錄。c - 字元裝置檔案。p - 管道檔案。l - 符號連結檔案。f - 普通檔案。

7. :n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky

:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky

8. chown 使用者名稱 檔案路徑

9. chmod 777 test

10. adduser password

11. 在PC機器上不能進行點播操作(只是針對沒有新增域名解析的PC機器),但是在別的電腦上可以,那麼就需要把別人的C:\Windows\System32\drivers\etc\hosts 覆蓋自己的這個目錄下的hosts檔案。

12. 12.C++中經常有程式碼後面加了”\” 表示換行,說明下面一句和上面是同一行的。

13. du –sh 檢視檔案大小。

14. shell 2>&1: & 1 更準確的說應該是檔案描述符1, 而1一般代表的就是STDOUT_FILENO,實際上這個操作就是一個dup2(2)呼叫.他標準輸出到all_result,然後複製標準輸出到檔案描述符2(STDERR_FILENO),其後果就是檔案描述符1和2指向同一個檔案表項,也可以說錯誤的輸出被合併了.其中0表示鍵盤輸入 1表示螢幕輸出2表示錯誤輸出.把標準出錯重定向到標準輸出,然後扔到/DEV/NULL下面去。通俗的說,就是把所有標準輸出和標準出錯都扔到垃圾桶裡面。

15. try_file

try_files $uri $uri/ /index.php?q=$uri&$args;

按順序檢查檔案是否存在,返回第一個找到的檔案。結尾的斜線表示為資料夾 -$uri/。如果所有的檔案都找不到,會進行一個內部重定向到最後一個引數。

16. date +%s 可以顯示UTC的大整數時間相當於OS:Millionseconds()。

17. date -d @1411266453 可以將時間轉換成當前的年月日格式。

18. date -d "1970-01-01 UTC 1411261790 seconds" 將一個隨意的UTC時間轉換為當前時間。

19. ulimit -c unlimited 可以使系統產生core檔案

20. “grep -v \#” 獲取不包含#號的所有行,其中“\”是轉譯字元,

21. cut -d: -f1 獲取的文字以“:”為分隔符,並且獲取第一區域的值。

22. grep返回值:

成功,返回0;

失敗,檔案存在,模板字串不存在,返回1;

失敗,檔案不存在,返回2;

23. try_file

try_files $uri $uri/ /index.php?q=$uri&$args;

按順序檢查檔案是否存在,返回第一個找到的檔案。結尾的斜線表示為資料夾 -$uri/。如果所有的檔案都找不到,會進行一個內部重定向到最後一個引數。

24. umout .tmp可以解決因為在工程挺值前刪除檔案,造成的原有資料夾不能刪除的問題。

25. stat()

相關函式:fstat, lstat, chmod, chown, readlink, utime

標頭檔案:#include <sys/stat.h> #include <unistd.h>

定義函式:int stat(const char * file_name, struct stat *buf);

用來將引數file_name 所指的檔案狀態, 複製到引數buf 所指的結構中,函式的返回值可以用於判斷檔案是否存在。

26. inotify,可以用於監聽檔案路徑或者檔案。

int fd = inotify_init ();

int wd = inotify_add_watch (fd, path, mask);

int ret = inotify_rm_watch (fd, wd);

27. 同步、非同步、阻塞、非阻塞IO模型

最後,再舉幾個不是很恰當的例子來說明這四個IO Model:

有A(同步阻塞),B(同步非阻塞),C(非同步阻塞),D(非同步非阻塞)四個人在釣魚:

A用的是最老式的魚竿,所以呢,得一直守著,等到魚上鉤了再拉桿;

B的魚竿有個功能,能夠顯示是否有魚上鉤,所以呢,B就和旁邊的MM聊天,隔會再看看有沒有魚上鉤,有的話就迅速拉桿;

C用的魚竿和B差不多,但他想了一個好辦法,就是同時放好幾根魚竿,然後守在旁邊,一旦有顯示說魚上鉤了,它就將對應的魚竿拉起來;

D是個有錢人,乾脆僱了一個人幫他釣魚,一旦那個人把魚釣上來了,就給D發個簡訊。

28. popen()函式用建立管道的方式啟動一個程序,並呼叫shell.因為管道是被定義成單向的,所以type引數只能定義成只讀或者只寫,不能是兩者同時,結果流也相應的是隻讀或者只寫.

command引數是一個字串指標,指向的是一個以null結束符結尾的字串,這個字串包含一個shell命令.這個命令被送到/bin/sh以-c引數執行,即由shell來執行.type引數也是一個指向以null結束符結尾的字串的指標,這個字串必須是'r'或者'w’來指明是讀還是寫.

popen()函式的返回值是一個普通的標準I/O流,它只能用pclose()函式來關閉,而不是fclose().函式.向這個流的寫入被轉化為對command命令的標準輸入;而command命令的標準輸出則是和呼叫popen(),函式的程序相同,除非這個被command命令自己改變.相反的,讀取一個“被popen了的”流,就相當於讀取command命令的標準輸出,而command的標準輸入則是和呼叫popen,函式的程序相同.

注意,popen函式的輸出流預設是被全緩衝的.

pclose函式等待相關的程序結束並返回一個command命令的退出狀態,就像wait4函式一樣方

可以用來在程式中返回命令結果:popen( "ls -l", "r" );可以返回檔案列表;

popen( "du -sk", "r" )可以用來返回剩餘空間。

29. libaio的工作流程

libaio工作流程:

io_prep_pread()/io_prep_pwrite() 設定讀寫操作引數

io_submit() 提交

io_getevents() 檢查結果

30. uname –a 檢視系統所有資訊,-r檢視所有,如果是紅帽子,可以用cat /etc/issue

31. 匹配所有空行:^[ \t]*$[\n\r]

32. 解壓命令 tar -zvxf ***

33. 通過ulimit -n,我們可以得到一個程序所能夠開啟的fd的最大數.

34. pwdx pid用來檢視正在執行的執行緒所在的目錄

35. stun伺服器的啟動方法:./server -v -b -h 121.14.85.205 -a 121.14.85.206

36. pstack可以用來檢視Linux程式執行過程中的堆疊。

37. rpm -qa|grep -i mysql用來檢查是否已經安裝了mysql

38. rm -f /etc/my.cnf 刪除mysql其他路徑下的配置和資料檔案

39. rm -rf /var/lib/mysql刪除mysql其他路徑下的配置和資料檔案

40. mysql> set GLOBAL max_connections=300;設定mysql的最大連線數

41. mysqladmin -uroot -pcoship variables檢查mysql的最大連線數。

42. tar -xzvf Redis_2.4.7.tar.gz解壓縮包。

43. getenforce 檢查seLinux的狀態

44. vi /etc/selinux/config在配置中關閉seLinux

45. setenforce 0使上面的配置生效。

46. service iptables status檢查防火牆狀態

47. chkconfig iptables off關閉防火牆,重啟後生效

48. service iptables stop 關閉防火牆及時生效 iptables –F也可以生效

49. rpm -ivh vsftpd-2.0.5-16.el5_4.1.x86_64.rpm強制安裝vsftp

50. /sbin/chkconfig --list vsftpd檢查ftp的啟動狀態

51. /sbin/chkconfig --level 2345 vsftpd on開啟或者關閉ftp的某個狀態

52. adduser -g ftp -s /sbin/nologin -d /mpeg cdnftper新增ftp使用者

53. chkconfig --list mysql檢查mysql是否隨機啟動

54. chkconfig --add mysql讓mysql隨機啟動。

55. tcpdump -i eth0 -t tcp -s 60000 -w diaoxian.cap 抓包

56. tcpdump –I eth0 tcp port 554 –w test.cap

檢視電腦配置

57. cat /proc/cpuinfo 檢視cpu

free -m 檢視記憶體

fdisk -l檢視硬碟分割槽

df -h 檢視掛載目錄

ifconfig檢視網絡卡資訊

ethtool eth0檢視詳西的網絡卡工作模式

lspic列出所有晶片資訊,比如音效卡,顯示卡,網絡卡等。

58. cat /etc/issue 檢視當前系統的釋出版本

59. uname –a檢視當前系統的核心資訊

60. rpm -e --nodeps mysql-libs-5.1.73-3.el6_5.x86_64強制解除安裝mysql

61. select table_name,table_rows from tables where TABLE_SCHEMA = 'olaj' order by table_rows desc;

62. netstat –tnl | grep 3306

63. %s/((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?/\ / 匹配連結。

64. grep -r -n '.*_LOG.*[LoadXML|parse]' ./ grep的用法,-n表示行號, -i表示忽略大小寫。

65. 清空系統日誌,騰出空間

rm -rf /var/log/*.gz

rm -rf /var/log/*.1

echo "" > /var/log/dmesg

echo "" > /var/log/kern.log

echo "" > /var/log/messages

echo "" > /var/log/syslog

66. 查詢當前目錄所有檔案所佔的磁碟空間

du -lh --max-depth=1

67. g++ hello.cpp -save-temps 可以儲存編譯時產生的臨時檔案。

68. 新增網路鄰居:netsh -c "i i" add neighbors 13 "172.30.25.246" "b8-ca-3a-f2-f4-c8"

69. 檢視當前網路的傳送接收:dstat

70. du -h --max-depth=1 work/testing/*可以檢視目錄下的所有檔案的佔用磁碟情況

71-73 略

74. openssl engine –t檢視是否有ssl硬體加速裝置
75. pgrep redis-server | wc –l檢視啟動某個執行緒的數目。
76. rsync -avlP --exclude="log" 把除去log的其他東西備份
77. echo –e 允許後面的內容進行轉譯
78. echo -e "\e[32;40;1;4m are success\e[0m"輸出的字型是帶顏色的
79. #cat /proc/cpuinfo |grep "cores"|uniq 檢視cpu核數
80. getconf PAGESIZE 查詢nginx中fastcgi_buffer_size應該配置多少。
81. 怎樣遍歷一些欄位
startorder="redisserver,cpm,cls,cl,cg,rtcl,cdnadapter,ci"
for module in $(echo $startorder | tr ',' '\n')
do
done
82. 轉碼命令
./ffmpeg -i ./bjqn/DragonTV.Beijing.Youth.Ep02.HDTV.720p.x264-CHDTV.mkv -fpre vod -acodec copy -y ./bjqn02.mp4
83. find ../download/ -maxdepth 1 -type f -mmin +120 | grep -v heartbeat.xml | xargs -n 1 rm -f
84. sort -k3nr file
K3指按第三個域去排序
n 指定分類是域上的數字分類。
r 就是降序的意思
85. 1>/dev/null表示將命令的標準輸出重定向到/dev/null
2>/dev/null表示將命令的錯誤輸出重定向到/dev/null
86. find . -name "*.c" | xargs grep main
87. du –sk檢視當前目錄已用空間。
88. tar –jxvf tar-bz2的解壓命令
89. stat -c %Y filename 檢查某檔案的最後修改時間。
90. mysql -uroot -pcoship dbname < dbname.sql mysql直接匯入資料
91. SELECT table_name,column_name,column_type from information_schema.COLUMNS where TABLE_SCHEMA="ott_r002_portalms" and data_type in ('int','bigint','decimal')防止ID越界。
92. SELECT TABLE_SCHEMA,TABLE_NAME,round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) as mb from information_schema.TABLES HAVING mb>500資料庫空間不夠,檢視詳細。
93. awk -F'[&,=,.,/]' 'NR==6{print $3}' tmpfile awk鎖定第幾行
94. ps -A|awk '/程序名/{print $1}'查出某程序號。
95. nohup ping www.ibm.com & 在後臺執行程式
96. setsid ping www.ibm.com 在後臺執行程式
97. (ping www.ibm.com &) 在後臺執行程式
98. screen、disown也可以實現響應的功能。
99. !! 執行上一次執行過的命令。
100. !s 執行歷史中以s開頭的命令
101. watch -d ls –l 讓某一命令持續執行預設兩秒一次
102. pgrep ssh 查找出與ssh相關的程序的pid
103. CTRL+d 快速推出登入終端,CTRL+U刪除一整行(vim插入 模式有效)
104. cd – 返回你上一次所在的目錄
105. touch -c -t 0801010800 filename.c修改檔案的時間
106. $_上一個命令的最後一個引數
107. ss –t –a 顯示tcp連線
108. cat /proc/46720/environ 獲得當前程序依賴的環境變數.
109. /proc/net/dev儲存了網絡卡資訊;
110. grep eth /proc/net/dev|awk -F : '{print $2}'|awk '{print $1, $9}' 檢視網絡卡頻寬
111. /etc/passwd /etc/shadow存放Linux系統的使用者和密碼

112. grep "http://202.105.136.35:18080/" -rl ./ 顯示含此條目的檔名
113. awk 'END{print NR}' tmp;統計一個文字的行數。
114. ps auxw|head -1;ps auxw|sort -rn -k3|head -10檢視最耗cpu的10-個程式;
115. 治療動態庫找不到:ln -s /usr/lib64/libcrypto.so libcrypto.so.6
116. ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 查詢殭屍程序
117. ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 查詢並kill掉殭屍程序
118. 資料庫查詢實現笛卡爾積:select x+y+1 ,x+y+1 from (select 0 as x from dual union select 1 from dual union select 2 from dual) a,(select 0 as y from dual union select 1 from dual union select 2 from dual) b;
批繫結:FORALL i IN 1 .. 10000000
INSERT a …
119. ./ffmpeg -i /mpeg/ad1.ts 2>&1 | grep 'Duration' | cut -d ' ' -f 4,8 | sed s/,//獲取檔案的位元速率
120. thread apply all bt gdb –c core.1111後,可用此命令檢視所有執行緒。
121. netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]} 統計所有TCP連結的狀態數

122. df –h [目錄名]可查詢當前目錄屬於哪個分割槽
123. iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT開啟防火牆的某個埠/etc/init.d/iptables save將防火牆設定儲存。netstat -unltp | grep fdfs
124. vim /etc/rc.d/rc.local設定開機啟動
125. CenterOS 設定防火牆firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd –reload

126. wget -S http://httpd.apache.org/images/httpd_logo_wide_new.png 2>&1 | grep ‘Accept-Ranges’
Accept-Ranges: bytes 測試伺服器是否支援斷點續傳功能
127. curl –range 0-99 http://images/billboard_iphone_hero.jpg測試伺服器是否支援斷點續傳
128. 後臺伺服器是否支援長連線:netstat –n | grep TIME_WAIT,如果不支援長連線那麼就會有很多TIME_WAIT狀態。