Linux - 後端開發常用指令
壓縮
- 壓縮/解壓縮
# 壓縮 tar -zcvf dst.tar.gz src1 src2 ... # 解壓縮 tar -xvf dst.tar.gz # 排除version control的檔案(.svn|.git)進行壓縮 tar --exclude-vcs -cvf dst.tar src
- tar目錄結構
# ex: /tmp/1/2/3/4/a.txt # 當前目錄:/tmp
command | tar檔結構 |
---|---|
tar -cf a.tar 1/2/3/4 | 1/2/3/4/a.txt |
tar -cf a.tar -C 1/2/3/ 4 | 4/a.txt |
檔案
搜尋
# 找所有檔案 | 排除.svn檔 | 全部刪除 find -type f -name '*.*' | grep -v "\.svn" | xargs rm -v
搜檔後利用指令處理
find . -name '*' -exec ls -l {} \; => ls -l A; ls -l B; ls -l C; find . -name '*' | xargs ls -l => ls -l A B C
-exec
類似foreach
,xargs
則是build成command的參數搜尋過期檔案
# greater than n days find . -type f -name '*' -mtime +n # exactly n days find . -type f -name '*' -mtime n # less than n minutes find . -type f -name '*' -mmin -n
檔案絕對路徑
readlink -f ${target_file}
dirname/basename
s="a/b/c/d/123.txt" dirname $s => "a/b/c/d" basename $s => "123.txt"
建立softlink
ln -sf ${target} ${link_name}
SCP (Secure Copy),遠端拷貝
scp -i ${keyFile} ${filepath} username@${ip}:/path/to/dst
streaming查看log檔尾
tail -f ${log_path}
全文檢索
- 全文檢索
# grep # @param: n - 列出行號 # @param: H - 列出檔名 # @param: R,r - 遞迴 # @param: i - ignore-case grep "${keyword}" $files -nHri grep "${keyword}" * -nHri # * : all files # 特定檔案 # @param: --include - filename pattern grep --include "*.java" "${keyword}" * -nHr grep "${keyword}" * -nHr | grep '\.java' (同上,但效率差很多!)
目錄結構的md5
# md5sum指令
echo -n "str" | md5sum
# 列出目錄結構(和time無關),再md5
find . -name * | xargs ls -lu --full-time | awk '{print $9}' | md5sum
find /path -type f -name * -exec md5sum {} + | awk '{print $1}' | sort | md5sum
效能監控
top -d1 -b -p 1 # 查看cpu,按1可看多核情況
free -s 1 # 查看記憶體
iostat -xd 1 20 # 查看io
vmstat 1 # 查看虛擬憶體體, process, ...
crontab
# 每小時
0 * * * * root run_task.sh && run_task2.sh
# 每天03:00
0 3 * * * root run_task.sh
# 每天03:00, 06:00
0 3,6 * * * root run_task.sh
# 每t分鐘
*/t * * * * root run_task.sh
# 每週五16:30
30 16 * * 5 root run_task.sh
# 每週日16:30
30 16 * * 0 root run_task.sh
# 每月1日04:42
42 4 1 * * root run_task.sh
curl
curl -X POST $url \
-H "Content-Type: application/json" \
-H "$key: $value" \
-d "your_post_data_to_server" \
--connect-timeout 5
開機loader
- 使用者開機啟動程序
/etc/rc.d/rc.local
- 更細的設定
# level 0: halt(直接關機) # K: 關機 # S: 開機 /etc/rc0.d/K01xxx # 依序由K01->K02->...->K99 /etc/rc0.d/K02xxx ... /etc/rc0.d/K99xxx /etc/rc0.d/S01xxx /etc/rc0.d/S02xxx ... /etc/rc0.d/S99xxx ... # level 1 /etc/rc1.d/... # level 3: 含有網路功能的文字模式 /etc/rc3.d/... ... # level 6: reboot, 重開機 /etc/rc6.d/...