1. Linux下用vim打開配置文件亂碼,在終端輸入:“LANG=”即可。
2. 查看端口是否被占用:
3. netstat -anp | grep port
netstat -ltn
4. lsof -i:port
5. Shell腳本命令列表:
$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過個
$$ 是腳本運行的當前進程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狀態。
