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連接狀態
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
CLOSE_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
a 6
怎麼用shell腳本統計出單詞出現的次數和?比如統計出:
a 15
awk '{a[$1] += $3;} END {for(i in a) print i,a[i]}' test.txt