記錄Linux中遇到的技巧

壓縮排除.svn目錄

打包test目錄,排除其中全部子目錄中的.svn文件夾:html

# tar -zcf test.tar.gz test/ --exclude=.svn
# zip -qr test.zip test/ -x "**/.svn**"

npm安裝模塊命令

npm安裝模塊時常常出現權限錯誤,能夠用下面的參數:java

# npm install --unsafe-perm=true --allow-root

建立免密登陸

在須要免密登陸的發起端執行,命令2中使用接收端的用戶名和IP:node

# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub [username]@[ip address]

時間同步

安裝crontab,配置每6個小時向ntp服務器同步一次時間:npm

# yum -y install vixie-cron
# crontab -e
    0 */6 * * * /usr/sbin/ntpdate [ntp server ip]  > /dev/null 2>&1

sed命令經常使用

# sed -i "1 i [內容]"[path/to/file]  #開頭插入一行
# sed -i "$ a [內容]" [path/to/file]  #末尾插入一行


# sed -i "[行號] i [內容]" [path/to/file]  #指定行前插入一行(行號從1開始)
# sed -i "[行號] a [內容]" [path/to/file]  #指定行後插入一行
# sed -i "[行號] d" [path/to/file] #刪除指定行

#
sed -i "/[關鍵字]/ i [內容]" [path/to/file]  #匹配行前插入一行(全部匹配行都會操做)
# sed -i "/[關鍵字]/ a [內容]" [path/to/file]  #匹配行後插入一行
# sed -i "/[關鍵字]/ d" [path/to/file]  #刪除匹配行

# sed -i "s/[原內容]/[新內容]/" [path/to/file]  #匹配替換(每一行只替換第一個匹配的)(/能夠用#或?代替防止與內容衝突)
# sed -i "s/[原內容]/[新內容]/g" [path/to/file]  #匹配替換(替換全部匹配的)

# sed -i "[行號] s/[原內容]/[新內容]/g" [path/to/file]  #只匹配替換指定行
# sed -i "[起始行號],[結束行號] s/[原內容]/[新內容]/g" [path/to/file]  #匹配替換指定的範圍
# sed -i "/[關鍵字]/ s/[原內容]/[新內容]/g" [path/to/file]  #只匹配替換匹配關鍵字的行

# sed -i "s/[原內容]/[新內容]/g" `grep "[原內容]" -l \`find -name config.xml\``  #與find和grep組合使用

awk命令經常使用

# awk '{print $1}' filename    #$1~$n 每行分隔的第n個字段;$0 整行內容;NF 字段總數
# awk '{print "字段1:"$1"\t字段2:"$2}' filename    #格式化組合顯示
# awk -F ',' '{print $1}' filename    #用逗號分隔,默認是空格分隔
# awk -F '[,#]' '{print $1}' filename    #逗號或#號分隔
# awk -F '[,#]+' '{print $1}' filename    #1個或多個,#分隔,好比,,或###
# awk -F 'GET|HTTP' '{print $1}' filename  #以GET或HTTP分隔
# awk '{print "\""}' filename  #print輸出雙引號
# awk '{print "'\''"}' filename  #print輸出單引號
# awk '{if(NR==1||(NR>2&&NR<4)) print $0}' #行數=1或3>行數>2;其餘還有>=,<=,!=;如有多個文件NR會遞增疊加,不遞增單獨計算的是FNR
# awk 'BEGIN {count=0;print "開始統計行數"} {print $0;count++} END{print "統計結束,行數是",count}'  #自定義變量,統計行數,打印每行內容
# awk '/^#/' filename  #正則匹配,以#開頭的行
#
awk '/^#/ {print $0}' filename  #匹配後打印整行內容,與上一個表達式同義
# awk '!/^#/' filename  #不以#開頭的行
# awk '{if($0~/^1/) print "第"NR"行以1開頭";else if($0~/^2/) print "第"NR"行以2開頭";else print "第"NR"行以其餘開頭"}' filename  #if else語句,相對於~,!~表示不匹配

批量刪除BOM

# sed -i "s/\xEF\xBB\xBF//" `grep -Ilr $'^\xEF\xBB\xBF' .`  #查到當前文件夾全部子目錄中包含BOM的文件,而後刪除BOM

批量處理^M

注意:^M在Linux命令行輸入的方式是 ctrl+v,ctrl+m;vim

# sed -i "s/^M//" `grep "^M" -lr .`  #查到當前文件夾全部子目錄中包含^M的文件,而後刪除

vim修改fileformat

:set ff    #查看fileformat
:set ff=dos    #配置fileformat爲dos
:set ff=unix    #配置fileformat爲unix
:%s/^M$//g    #刪除全部的^M(^M=ctrl+v,ctrl+m)

vim刪除重複行

:sort    #先排序 :g/^\(.*\)$\n\1$/d  #刪除重複行

內存buff/cache清理

系統頻繁大量讀寫文件會形成內存buff/cache太高,好比:windows

此時能夠用如下命令進行清理:瀏覽器

sync;echo 1 >/proc/sys/vm/drop_caches  清理pagecachebash

sync;echo 2 >/proc/sys/vm/drop_caches  清理dentries和inodes服務器

sync;echo 3 > /proc/sys/vm/drop_caches   都清理cookie

查看進程中的線程

# ps -mp [pid] -o THREAD,tid,time

殺死全部匹配的進程

# ps -ef | grep [關鍵字] | grep -v grep  | awk '{print $2}' | xargs kill -9

Java內存信息

FGC監控,導出堆棧信息:

# jstat -gct [pid]@[ip] 1000 10
# jmap -dump:format=b,file=[path/to/file] [pid]
# jstack -l [pid] > [path/to/file]

切換到上一次的目錄

# cd -

使用上條命令的參數

# ll /mydata
# cd !$
cd /mydata/

用curl下載文件

# curl -OL "download url"

Linux命令行下載jdk包

windows下用瀏覽器訪問jdk的網址,好比:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

找到要下載的包,右鍵,複製連接地址,以下圖:

而後在Linux命令行:

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" [複製的地址]

curl -H "Cookie: oraclelicense=accept-securebackup-cookie" -H "Connection: keep-alive" -O -L "[複製的地址]"

配置時區

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

不支持zh_CH.utf8的處理

# localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
# sed -i "$ a export LANG=zh_CN.UTF-8" /etc/profile

history增長用戶和時間

# sed -i '$ a export HISTTIMEFORMAT="%F %T `whoami` "' /etc/bashrc

 

持續更新...

相關文章
相關標籤/搜索