-
Linux下用vim打開配置文件亂碼,在終端輸入:“LANG=”即可。
-
查看端口是否被佔用:
-
netstat -anp | grep port
netstat -ltn
-
lsof -i:port
- Shell腳本命令列表:
$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過個
$$ 是腳本運行的當前進程ID號
$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
-
find . -type f -name "*.sh" -type 查找某一類型的文件,諸如:b - 塊設備文件。d - 目錄。c - 字符設備文件。p - 管道文件。l - 符號鏈接文件。f - 普通文件。
- :n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 爲 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 爲 sky
-
chown 用戶名 文件路徑
-
chmod 777 test
-
adduser password
-
在PC機器上不能進行點播操作(只是針對沒有添加域名解析的PC機器),但是在別的電腦上可以,那麼就需要把別人的C:\Windows\System32\drivers\etc\hosts 覆蓋自己的這個目錄下的hosts文件。
-
12.C++中經常有代碼後面加了”\” 表示換行,說明下面一句和上面是同一行的。
-
du –sh 查看文件大小。
-
shell 2>&1: & 1 更準確的說應該是文件描述符1, 而1一般代表的就是STDOUT_FILENO,實際上這個操作就是一個dup2(2)調用.他標準輸出到all_result,然後複製標準輸出到文件描述符2(STDERR_FILENO),其後果就是文件描述符1和2指向同一個文件表項,也可以說錯誤的輸出被合併了.其中0表示鍵盤輸入 1表示屏幕輸出2表示錯誤輸出.把標準出錯重定向到標準輸出,然後扔到/DEV/NULL下面去。通俗的說,就是把所有標準輸出和標準出錯都扔到垃圾桶裏面。
- try_file
try_files $uri $uri/ /index.php?q=$uri&$args;
按順序檢查文件是否存在,返回第一個找到的文件。結尾的斜線表示爲文件夾 -$uri/。如果所有的文件都找不到,會進行一個內部重定向到最後一個參數。
-
date +%s 可以顯示UTC的大整數時間相當於OS:Millionseconds()。
-
date -d @1411266453 可以將時間轉換成當前的年月日格式。
-
date -d "1970-01-01 UTC 1411261790 seconds" 將一個隨意的UTC時間轉換爲當前時間。
-
ulimit -c unlimited 可以使系統產生core文件
-
“grep -v #” 獲取不包含#號的所有行,其中“\”是轉譯字符,
-
cut -d: -f1 獲取的文本以“:”爲分隔符,並且獲取第一區域的值。
- grep返回值:
成功,返回0;
失敗,文件存在,模板字符串不存在,返回1;
失敗,文件不存在,返回2;
- try_file
try_files $uri $uri/ /index.php?q=$uri&$args;
按順序檢查文件是否存在,返回第一個找到的文件。結尾的斜線表示爲文件夾 -$uri/。如果所有的文件都找不到,會進行一個內部重定向到最後一個參數。
-
umout .tmp可以解決因爲在工程挺值前刪除文件,造成的原有文件夾不能刪除的問題。
- 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 所指的結構中,函數的返回值可以用於判斷文件是否存在。
- inotify,可以用於監聽文件路徑或者文件。
int fd = inotify_init ();
int wd = inotify_add_watch (fd, path, mask);
int ret = inotify_rm_watch (fd, wd);
- 同步、異步、阻塞、非阻塞IO模型
最後,再舉幾個不是很恰當的例子來說明這四個IO Model:
有A(同步阻塞),B(同步非阻塞),C(異步阻塞),D(異步非阻塞)四個人在釣魚:
A用的是最老式的魚竿,所以呢,得一直守着,等到魚上鉤了再拉桿;
B的魚竿有個功能,能夠顯示是否有魚上鉤,所以呢,B就和旁邊的MM聊天,隔會再看看有沒有魚上鉤,有的話就迅速拉桿;
C用的魚竿和B差不多,但他想了一個好辦法,就是同時放好幾根魚竿,然後守在旁邊,一旦有顯示說魚上鉤了,它就將對應的魚竿拉起來;
D是個有錢人,乾脆僱了一個人幫他釣魚,一旦那個人把魚釣上來了,就給D發個短信。
- 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" )可以用來返回剩餘空間。
- libaio的工作流程
libaio工作流程:
io_prep_pread()/io_prep_pwrite() 設置讀寫操作參數
io_submit() 提交
io_getevents() 檢查結果
-
uname –a 查看系統所有信息,-r查看所有,如果是紅帽子,可以用cat /etc/issue
-
匹配所有空行:^[ \t]*$[\n\r]
-
解壓命令 tar -zvxf ***
-
通過ulimit -n,我們可以得到一個進程所能夠打開的fd的最大數.
-
pwdx pid用來查看正在運行的線程所在的目錄
-
stun服務器的啓動方法:./server -v -b -h 121.14.85.205 -a 121.14.85.206
-
pstack可以用來查看Linux程序運行過程中的堆棧。
-
rpm -qa|grep -i mysql用來檢查是否已經安裝了mysql
-
rm -f /etc/my.cnf 刪除mysql其他路徑下的配置和數據文件
-
rm -rf /var/lib/mysql刪除mysql其他路徑下的配置和數據文件
-
mysql> set GLOBAL max_connections=300;設置mysql的最大連接數
-
mysqladmin -uroot -pcoship variables檢查mysql的最大連接數。
-
tar -xzvf Redis_2.4.7.tar.gz解壓縮包。
-
getenforce 檢查seLinux的狀態
-
vi /etc/selinux/config在配置中關閉seLinux
-
setenforce 0使上面的配置生效。
-
service iptables status檢查防火牆狀態
-
chkconfig iptables off關閉防火牆,重啓後生效
-
service iptables stop 關閉防火牆及時生效 iptables –F也可以生效
-
rpm -ivh vsftpd-2.0.5-16.el5_4.1.x86_64.rpm強制安裝vsftp
-
/sbin/chkconfig --list vsftpd檢查ftp的啓動狀態
-
/sbin/chkconfig --level 2345 vsftpd on開啓或者關閉ftp的某個狀態
-
adduser -g ftp -s /sbin/nologin -d /mpeg cdnftper添加ftp用戶
-
chkconfig --list mysql檢查mysql是否隨機啓動
-
chkconfig --add mysql讓mysql隨機啓動。
-
tcpdump -i eth0 -t tcp -s 60000 -w diaoxian.cap 抓包
- tcpdump –I eth0 tcp port 554 –w test.cap
查看電腦配置
- cat /proc/cpuinfo 查看cpu
free -m 查看內存
fdisk -l查看硬盤分區
df -h 查看掛載目錄
ifconfig查看網卡信息
ethtool eth0查看詳西的網卡工作模式
lspic列出所有芯片信息,比如聲卡,顯卡,網卡等。
-
cat /etc/issue 查看當前系統的發佈版本
-
uname –a查看當前系統的內核信息
-
rpm -e --nodeps mysql-libs-5.1.73-3.el6_5.x86_64強制卸載mysql
-
select table_name,table_rows from tables where TABLE_SCHEMA = 'olaj' order by table_rows desc;
-
netstat –tnl | grep 3306
-
%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\&%./-~-]*)?/\ / 匹配鏈接。
-
grep -r -n '._LOG.[LoadXML|parse]' ./ grep的用法,-n表示行號, -i表示忽略大小寫。
- 清空系統日誌,騰出空間
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
- 查找當前目錄所有文件所佔的磁盤空間
du -lh --max-depth=1
-
g++ hello.cpp -save-temps 可以保存編譯時產生的臨時文件。
-
添加網絡鄰居:netsh -c "i i" add neighbors 13 "172.30.25.246" "b8-ca-3a-f2-f4-c8"
-
查看當前網絡的發送接收:dstat
- du -h --max-depth=1 work/testing/*可以查看目錄下的所有文件的佔用磁盤情況
71-73 略
- openssl engine –t查看是否有ssl硬件加速設備
- pgrep redis-server | wc –l查看啓動某個線程的數目。
- rsync -avlP --exclude="log" 把除去log的其他東西備份
- echo –e 允許後面的內容進行轉譯
- echo -e "\e[32;40;1;4m are success\e[0m"輸出的字體是帶顏色的
- #cat /proc/cpuinfo |grep "cores"|uniq 查看cpu核數
- getconf PAGESIZE 查詢nginx中fastcgi_buffer_size應該配置多少。
- 怎樣遍歷一些字段
startorder="redisserver,cpm,cls,cl,cg,rtcl,cdnadapter,ci"
for module in $(echo $startorder | tr ',' '\n')
do
done - 轉碼命令
./ffmpeg -i ./bjqn/DragonTV.Beijing.Youth.Ep02.HDTV.720p.x264-CHDTV.mkv -fpre vod -acodec copy -y ./bjqn02.mp4 - find ../download/ -maxdepth 1 -type f -mmin +120 | grep -v heartbeat.xml | xargs -n 1 rm -f
- sort -k3nr file
K3指按第三個域去排序
n 指定分類是域上的數字分類。
r 就是降序的意思 - 1>/dev/null表示將命令的標準輸出重定向到/dev/null
2>/dev/null表示將命令的錯誤輸出重定向到/dev/null - find . -name "*.c" | xargs grep main
- du –sk查看當前目錄已用空間。
- tar –jxvf tar-bz2的解壓命令
- stat -c %Y filename 檢查某文件的最後修改時間。
- mysql -uroot -pcoship dbname < dbname.sql mysql直接導入數據
- 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越界。
- SELECT TABLE_SCHEMA,TABLE_NAME,round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) as mb from information_schema.TABLES HAVING mb>500數據庫空間不夠,查看詳細。
- awk -F'[&,=,.,/]' 'NR==6{print $3}' tmpfile awk鎖定第幾行
- ps -A|awk '/進程名/{print $1}'查出某進程號。
- nohup ping www.ibm.com & 在後臺運行程序
- setsid ping www.ibm.com 在後臺運行程序
- (ping www.ibm.com &) 在後臺運行程序
- screen、disown也可以實現響應的功能。
- !! 執行上一次執行過的命令。
- !s 執行歷史中以s開頭的命令
- watch -d ls –l 讓某一命令持續執行默認兩秒一次
- pgrep ssh 查找出與ssh相關的進程的pid
- CTRL+d 快速推出登錄終端,CTRL+U刪除一整行(vim插入 模式有效)
- cd – 返回你上一次所在的目錄
- touch -c -t 0801010800 filename.c修改文件的時間
- $_上一個命令的最後一個參數
- ss –t –a 顯示tcp連接
- cat /proc/46720/environ 獲得當前進程依賴的環境變量.
- /proc/net/dev存儲了網卡信息;
- grep eth /proc/net/dev|awk -F : '{print $2}'|awk '{print $1, $9}' 查看網卡帶寬
-
/etc/passwd /etc/shadow存放Linux系統的用戶和密碼
- grep "http://202.105.136.35:18080/" -rl ./ 顯示含此條目的文件名
- awk 'END{print NR}' tmp;統計一個文本的行數。
- ps auxw|head -1;ps auxw|sort -rn -k3|head -10查看最耗cpu的10-個程序;
- 治療動態庫找不到:ln -s /usr/lib64/libcrypto.so libcrypto.so.6
- ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 查找殭屍進程
- ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 查找並kill掉殭屍進程
- 數據庫查詢實現笛卡爾積: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 … - ./ffmpeg -i /mpeg/ad1.ts 2>&1 | grep 'Duration' | cut -d ' ' -f 4,8 | sed s/,//獲取文件的碼率
- thread apply all bt gdb –c core.1111後,可用此命令查看所有線程。
-
netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]} 統計所有TCP鏈接的狀態數
- df –h [目錄名]可查詢當前目錄屬於哪個分區
- iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT打開防火牆的某個端口/etc/init.d/iptables save將防火牆設置保存。netstat -unltp | grep fdfs
- vim /etc/rc.d/rc.local設置開機啓動
-
CenterOS 設置防火牆firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd –reload - wget -S http://httpd.apache.org/images/httpd_logo_wide_new.png 2>&1 | grep ‘Accept-Ranges’
Accept-Ranges: bytes 測試服務器是否支持斷點續傳功能 - curl –range 0-99 http://images/billboard_iphone_hero.jpg測試服務器是否支持斷點續傳
- 後臺服務器是否支持長連接:netstat –n | grep TIME_WAIT,如果不支持長連接那麼就會有很多TIME_WAIT狀態。