系統
機器啓動
poweroff
reboot
shutdown -r now
修改密碼
passwd root
查看 CPU
cat /proc/cpuinfo | grep "processor" | wc -l
查看系統內存情況
free -m
查看系統信息
uname -a
cat /proc/version
cat /etc/redhat-release
軟鏈接
ln -s source dest
防火牆
service iptables start
service iptables stop
壓縮解壓
zip -r mydata.zip mydata
unzip my data -d mydatabak
tar zcf mydata.tar.gz mydata
tar zxf mydata.tar.gz
更新文件配置
source /etc/profile
機器是多少位
file /sbin/init 或者 file /bin/ls
環境變量
env
用戶切換
su root
exit
日期
date -d @1361542596 +"%Y-%m-%d %H:%M:%S"
進程絕對路徑
top -c
htop
ls -l /proc/pid
ps -ef
文本
awk
awk 動作 文件名
echo 'this is a test' | awk '{print $0}'
echo 'this is a test' | awk '{print $3}'
awk -F ':' '{ print $1 }' demo.txt
echo 'this is a test' | awk '{print $NF}'
awk -F ':' '{print $1, $(NF-1)}' demo.txt
awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt
sed
字符串處理
sed -i "s/jack/tom/g" test.txt
sed -i "s/\/usr\/local\/bin/\/usr\/bin/g" /etc/init.d/fdfs_storaged
grep
命令 | 描述 |
---|---|
-l | 列出文件名 |
-r | 遞歸遍歷文件夾 |
-n | 顯示文件行數 |
-E | 查找多個 |
-i | 大小寫匹配查找字符串 |
-w | 匹配整個單詞,而不是字符串 |
–include | 搜索指定文件 |
# 找出文件(filename)中包含123或者包含abc的行
grep -E '123|abc' filename
# 只匹配整個單詞,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
grep -w pattern files
# 文件中查找字符串
grep "update" moment_audit.log | wc -l
# 遞歸文件夾在指定文件查找字符串
grep -r "pic" --include "*.md" .
磁盤文件
ls
選項 | 描述 |
---|---|
-a | 列出目錄所有文件,包含以.開始的隱藏文件 |
-A | 列出除.及…的其它文件 |
-r | 反序排列 |
-t | 以文件修改時間排序 |
-S | 以文件大小排序 |
-h | 以易讀大小顯示 |
-l | 除了文件名之外,還將文件的權限、所有者、文件大小等信息詳細列出來 |
# 文件個數
# 不含子文件
ls -l |grep "^-"|wc -l
# 包括子文件
ls -lR|grep "^-"|wc -l
tree
顯示目錄結構
tree /dir/ -L 1
du
用於顯示目錄或文件的大小。
選項 | 描述 |
---|---|
-h | 以K,M,G爲單位,提高信息的可讀性。 |
-s | 僅顯示總計。 |
# 查看文件夾剩餘空間
du -sh dir
df
Linux df命令用於顯示目前在Linux系統上的文件系統的磁盤使用情況統計。
# 查看磁盤空間
df -h
tail
tail -f file
tail -f file | grep '123'
find
find path -option [ -print ] [ -exec -ok command ] {} \;
選項 | 描述 |
---|---|
-name name, -iname name | 文件名稱符合 name 的文件。iname 會忽略大小寫 |
-size | 文件大小 |
-type | 文件類型 f 一般文件 d 目錄 |
# 查找刪除文件
find / -name "*.mp3" |xargs rm -rf
# 查詢最近兩個小時修改過的文件
find /work/imdev/IM3.0 -iname "*" -mmin -120 -type f
# linux 命令行轉換,將源碼文件 tab 替換爲 4 個空格
find . -regex '.*\.h\|.*\.hpp\|.*\.cpp' ! -type d -exec bash -c 'expand -t 4 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;
# linux 命令行轉換,將源碼文件 tab 替換爲 4 個空格
find . -regex '.*\.h\|.*\.hpp\|.*\.cpp' ! -type d -exec bash -c 'expand -t 4 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;
# 查找大於 500 字節的文件,並且刪除。
find ./ -size +500 | xargs rm -f
# 找出空文件
find / -type f -size 0 -exec ls -l {} \;
# 在某路徑,查找帶 xxx 關鍵字的所有文件,列出文件完整路徑,文件行數。
find ~/src/other/c_test -name '*.cpp' -type f | xargs grep -n 'include'
# 將文件轉換爲 unix 格式
find . -type f -exec dos2unix {} \;
git
git 命令查看簡單文檔或 man git
參數 | 描述 |
---|---|
pull | 拉取文件 |
push | 提交文件 git push -u origin master |
log | 文件是否存在 獲取簡單的日誌 git log --pretty=oneline |
status | 目錄文件狀態 git status . |
checkout | 檢索文件 git checkout sync_pic.sh |
clone | 拉取源碼 git clone https://github.com/enki/libev.git |
remote | 查看 git 項目路徑 git remote -v |
權限
執行權限
chmod +x bus
chown -Rf imdev:imdev ./
進程線程
查找進程
ps aux | grep _proxy_srv
進程啓動絕對路徑
ps -ef | grep xxx
ll /proc/pid | grep exe
查進程名稱對應的 pid
ps -ef | grep process_name | grep -v "grep" | awk '{print $2}'
pidof redis-server
進程啓動時間
ps -p PID -o lstart
ps -ef | grep redis | awk '{print $2}' | xargs ps -o pid,tty,user,comm,lstart,etime -p
查看線程
top -H -p pid
ps -efL | mysql | wc -l
pstree -p 1234 | wc -l
網絡
scp
- scp -P端口號 本地文件路徑 username@服務器ip:目的路徑
- 從服務器下載文件到本地,scp -P端口號 username@ip:路徑 本地路徑
scp -P端口號 username@ip:路徑 本地路徑
scp -r [email protected]:/home/hhx/srv_20150120.tar.gz .
scp /Users/wenfahua/src/other/c_test/normal/proc/main.cpp [email protected]:/home/other/c_test/normal/proc
ssh
ssh -p22 [email protected]
tcpdump
Linux tcpdump命令用於傾倒網絡傳輸數據
https://www.runoob.com/linux/linux-comm-tcpdump.html
選項 | 描述 |
---|---|
-c | <數據包數目> 收到指定的數據包數目後,就停止進行傾倒操作。 |
-i | <網絡界面> 使用指定的網絡截面送出數據包。 |
-n | 不把主機的網絡地址轉換成名字。 |
-q | 快速輸出,僅列出少數的傳輸協議信息。 |
-v | 詳細顯示指令執行過程。 |
-vv | 更詳細顯示指令執行過程。 |
-w | <數據包文件> 把數據包數據寫入指定的文件。 |
tcpdump port 80 and host www.baidu.com
tcpdump host 192.168.100.18 and dst host 10.10.10.122
tcpdump -i eth0 -vnn dst host 10.10.10.122
tcpdump -i eth0 -vnn src host 192.168.100.18 and dst port 8060
#生產環境內網抓包。
tcpdump -i eth1 port 12911 -vvvv -nnn -w 123.cap
#內循環 127.0.0.1
tcpdump -i lo port 8333
tcpdump -i eth0 host api.fyber.com and port 80 -w 123.cap
wget
wget http://debuginfo.centos.org/6/x86_64/glibc-debuginfo-2.12-1.80.el6.x86_64.rpm
netstat
netstat 命令用於顯示網絡狀態
netstat [-acCeFghilMnNoprstuvVwx][-A<網絡類型>][--ip]
選項 | 描述 |
---|---|
-a | 顯示所有連線中的Socket。 |
-l | 顯示監控中的服務器的Socket。 |
-n | 直接使用IP地址,而不通過域名服務器。 |
-p | 顯示正在使用Socket的程序識別碼和程序名稱。 |
-t | 顯示TCP傳輸協議的連線狀況。 |
-u | 顯示UDP傳輸協議的連線狀況。 |
netstat -nat|grep -i "80"|wc -l
lsof
lsof -i:30004
shell
語法
for
for p in paths
do
done
if
if [ ! -d "$dir" ]; then
else
fi
參數 | 描述 |
---|---|
-d | 文件夾是否存在 |
-x | 文件是否有執行權限 |
-f | 文件是否存在 |
其它
有空格的路徑 grep 操作。
infos=`grep -r $src_pic_path --include '*.md' . | tr " " "\?"`
有空格路徑進行 sed 操作。
sed -i '' "s:$src_pic_path:\.\/pic:g" $file
命令
xargs
是給命令傳遞參數的一個過濾器
find /etc -name "*.conf" | xargs ls –l
cat url-list.txt | xargs wget –c
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
工具
top
#顯示完整命令
top -c
# 查看字段解析
shift + f
# 內存排序
shift + m
# cpu 排序
shit + p
htop
iftop
nload
nethogs
iotop
vmstat
命令查看內存轉換情況,跟蹤轉換的頻率
swap 原因:系統內存不足會產生 swap,磁盤的速度讀寫速度是比較慢的,這會影響性能。
free
top
vmstat
vmstat 1 每秒輸出一次統計結果
不是 swap 空間佔用性能就會下降,要看 si so 頻率。
strace
#跟蹤具體的進程信息
strace -p <PID>
#統計
strace -cp <PID>
#單獨跟蹤某個被定位的內核函數
strace -T -e clone -p <PID>
#顯示調用高耗能內核函數的業務代碼。
strace-eclone php -r 'exec("ls");'
gdb
參考 https://blog.csdn.net/men_wen/article/details/75220102
命令 | 操作 |
---|---|
r | 運行調試 |
n | 下一步 |
c | 繼續運行 |
ctrl + c | 中斷信號 |
c/continue | 中斷後繼續運行 |
s | 進入一個函數 |
finish | 退出函數 |
l | 列出代碼行 |
b | 斷點 顯示斷點列表 info b 刪除斷點 delete 清除斷點 clear |
n | 下一步 |
until | 跳至行號 until |
p | 打印 打印數組信息 p *array@len p/x 按十六進制格式顯示變量 |
bt/backtrace | 堆棧bt <-n> -n表一個負整數,表示只打印棧底下n層的棧信息。 |
f/frame | 進入指定堆棧層 f |
thread apply all bt | 顯示線程所有堆棧 |
attach | 綁定進程調試 attach <-p pid> |
detach | 取消綁定調試進程 |
disassemble | 看二進制數據 disassemble |
x | 查看內存 |
focus | 顯示源碼界面 |
display | 顯示變量 |
info registers | 查看寄存器 |
gcc
GNU Compiler Collection的縮寫。最初是作爲C語言的編譯器,現在已經支持多種語言了,如C、C++、Java、Pascal、Ada、COBOL語言等。
選項 | 描述 |
---|---|
-o | 生成目標( .i 、 .s 、 .o 、可執行文件等) |
-c | 通知 gcc 取消鏈接步驟,即編譯源碼並在最後生成目標文件。 |
-E | 只運行 C 預編譯器 |
-S | 告訴編譯器產生彙編語言文件後停止編譯,產生的彙編語言文件擴展名爲 .s |
-Wall | 使 gcc 對源文件的代碼有問題的地方發出警告 |
-Idir | 將dir目錄加入搜索頭文件的目錄路徑 |
-Ldir | 將dir目錄加入搜索庫的目錄路徑 |
-llib | 連接lib庫 |
-g | 在目標文件中嵌入調試信息,以便gdb之類的調試程序調試 |