Linux常用的命令

  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表示沒有錯誤,其他表示有錯誤

  1. find . -type f -name "*.sh" -type 查找某一類型的文件,諸如:b - 塊設備文件。d - 目錄。c - 字符設備文件。p - 管道文件。l - 符號鏈接文件。f - 普通文件。

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

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

  1. chown 用戶名 文件路徑

  2. chmod 777 test

  3. adduser password

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

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

  6. du –sh 查看文件大小。

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

  8. try_file

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

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

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

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

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

  4. ulimit -c unlimited 可以使系統產生core文件

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

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

  7. grep返回值:

成功,返回0;

失敗,文件存在,模板字符串不存在,返回1;

失敗,文件不存在,返回2;

  1. try_file

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

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

  1. umout .tmp可以解決因爲在工程挺值前刪除文件,造成的原有文件夾不能刪除的問題。

  2. 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 所指的結構中,函數的返回值可以用於判斷文件是否存在。

  1. inotify,可以用於監聽文件路徑或者文件。

int fd = inotify_init ();

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

int ret = inotify_rm_watch (fd, wd);

  1. 同步、異步、阻塞、非阻塞IO模型

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

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

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

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

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

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

  1. 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" )可以用來返回剩餘空間。

  1. libaio的工作流程

libaio工作流程:

io_prep_pread()/io_prep_pwrite() 設置讀寫操作參數

io_submit() 提交

io_getevents() 檢查結果

  1. uname –a 查看系統所有信息,-r查看所有,如果是紅帽子,可以用cat /etc/issue

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

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

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

  5. pwdx pid用來查看正在運行的線程所在的目錄

  6. stun服務器的啓動方法:./server -v -b -h 121.14.85.205 -a 121.14.85.206

  7. pstack可以用來查看Linux程序運行過程中的堆棧。

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

  9. rm -f /etc/my.cnf 刪除mysql其他路徑下的配置和數據文件

  10. rm -rf /var/lib/mysql刪除mysql其他路徑下的配置和數據文件

  11. mysql> set GLOBAL max_connections=300;設置mysql的最大連接數

  12. mysqladmin -uroot -pcoship variables檢查mysql的最大連接數。

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

  14. getenforce 檢查seLinux的狀態

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

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

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

  18. chkconfig iptables off關閉防火牆,重啓後生效

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

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

  21. /sbin/chkconfig --list vsftpd檢查ftp的啓動狀態

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

  23. adduser -g ftp -s /sbin/nologin -d /mpeg cdnftper添加ftp用戶

  24. chkconfig --list mysql檢查mysql是否隨機啓動

  25. chkconfig --add mysql讓mysql隨機啓動。

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

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

查看電腦配置

  1. cat /proc/cpuinfo 查看cpu

free -m 查看內存

fdisk -l查看硬盤分區

df -h 查看掛載目錄

ifconfig查看網卡信息

ethtool eth0查看詳西的網卡工作模式

lspic列出所有芯片信息,比如聲卡,顯卡,網卡等。

  1. cat /etc/issue 查看當前系統的發佈版本

  2. uname –a查看當前系統的內核信息

  3. rpm -e --nodeps mysql-libs-5.1.73-3.el6_5.x86_64強制卸載mysql

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

  5. netstat –tnl | grep 3306

  6. %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\&%./-~-]*)?/\ / 匹配鏈接。

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

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

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

  1. 查找當前目錄所有文件所佔的磁盤空間

du -lh --max-depth=1

  1. g++ hello.cpp -save-temps 可以保存編譯時產生的臨時文件。

  2. 添加網絡鄰居:netsh -c "i i" add neighbors 13 "172.30.25.246" "b8-ca-3a-f2-f4-c8"

  3. 查看當前網絡的發送接收:dstat

  4. du -h --max-depth=1 work/testing/*可以查看目錄下的所有文件的佔用磁盤情況

71-73 略

  1. openssl engine –t查看是否有ssl硬件加速設備
  2. pgrep redis-server | wc –l查看啓動某個線程的數目。
  3. rsync -avlP --exclude="log" 把除去log的其他東西備份
  4. echo –e 允許後面的內容進行轉譯
  5. echo -e "\e[32;40;1;4m are success\e[0m"輸出的字體是帶顏色的
  6. #cat /proc/cpuinfo |grep "cores"|uniq 查看cpu核數
  7. getconf PAGESIZE 查詢nginx中fastcgi_buffer_size應該配置多少。
  8. 怎樣遍歷一些字段
    startorder="redisserver,cpm,cls,cl,cg,rtcl,cdnadapter,ci"
    for module in $(echo $startorder | tr ',' '\n')
    do
    done
  9. 轉碼命令
    ./ffmpeg -i ./bjqn/DragonTV.Beijing.Youth.Ep02.HDTV.720p.x264-CHDTV.mkv -fpre vod -acodec copy -y ./bjqn02.mp4
  10. find ../download/ -maxdepth 1 -type f -mmin +120 | grep -v heartbeat.xml | xargs -n 1 rm -f
  11. sort -k3nr file
    K3指按第三個域去排序
    n 指定分類是域上的數字分類。
    r 就是降序的意思
  12. 1>/dev/null表示將命令的標準輸出重定向到/dev/null
    2>/dev/null表示將命令的錯誤輸出重定向到/dev/null
  13. find . -name "*.c" | xargs grep main
  14. du –sk查看當前目錄已用空間。
  15. tar –jxvf tar-bz2的解壓命令
  16. stat -c %Y filename 檢查某文件的最後修改時間。
  17. mysql -uroot -pcoship dbname < dbname.sql mysql直接導入數據
  18. 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越界。
  19. SELECT TABLE_SCHEMA,TABLE_NAME,round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) as mb from information_schema.TABLES HAVING mb>500數據庫空間不夠,查看詳細。
  20. awk -F'[&,=,.,/]' 'NR==6{print $3}' tmpfile awk鎖定第幾行
  21. ps -A|awk '/進程名/{print $1}'查出某進程號。
  22. nohup ping www.ibm.com & 在後臺運行程序
  23. setsid ping www.ibm.com 在後臺運行程序
  24. (ping www.ibm.com &) 在後臺運行程序
  25. screen、disown也可以實現響應的功能。
  26. !! 執行上一次執行過的命令。
  27. !s 執行歷史中以s開頭的命令
  28. watch -d ls –l 讓某一命令持續執行默認兩秒一次
  29. pgrep ssh 查找出與ssh相關的進程的pid
  30. CTRL+d 快速推出登錄終端,CTRL+U刪除一整行(vim插入 模式有效)
  31. cd – 返回你上一次所在的目錄
  32. touch -c -t 0801010800 filename.c修改文件的時間
  33. $_上一個命令的最後一個參數
  34. ss –t –a 顯示tcp連接
  35. cat /proc/46720/environ 獲得當前進程依賴的環境變量.
  36. /proc/net/dev存儲了網卡信息;
  37. grep eth /proc/net/dev|awk -F : '{print $2}'|awk '{print $1, $9}' 查看網卡帶寬
  38. /etc/passwd /etc/shadow存放Linux系統的用戶和密碼

  39. grep "http://202.105.136.35:18080/" -rl ./ 顯示含此條目的文件名
  40. awk 'END{print NR}' tmp;統計一個文本的行數。
  41. ps auxw|head -1;ps auxw|sort -rn -k3|head -10查看最耗cpu的10-個程序;
  42. 治療動態庫找不到:ln -s /usr/lib64/libcrypto.so libcrypto.so.6
  43. ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 查找殭屍進程
  44. ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 查找並kill掉殭屍進程
  45. 數據庫查詢實現笛卡爾積: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 …
  46. ./ffmpeg -i /mpeg/ad1.ts 2>&1 | grep 'Duration' | cut -d ' ' -f 4,8 | sed s/,//獲取文件的碼率
  47. thread apply all bt gdb –c core.1111後,可用此命令查看所有線程。
  48. netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]} 統計所有TCP鏈接的狀態數

  49. df –h [目錄名]可查詢當前目錄屬於哪個分區
  50. iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT打開防火牆的某個端口/etc/init.d/iptables save將防火牆設置保存。netstat -unltp | grep fdfs
  51. vim /etc/rc.d/rc.local設置開機啓動
  52. CenterOS 設置防火牆firewall-cmd --zone=public --add-port=5000/tcp --permanent
    firewall-cmd –reload

  53. wget -S http://httpd.apache.org/images/httpd_logo_wide_new.png 2>&1 | grep ‘Accept-Ranges’
    Accept-Ranges: bytes 測試服務器是否支持斷點續傳功能
  54. curl –range 0-99 http://images/billboard_iphone_hero.jpg測試服務器是否支持斷點續傳
  55. 後臺服務器是否支持長連接:netstat –n | grep TIME_WAIT,如果不支持長連接那麼就會有很多TIME_WAIT狀態。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章