檢視具體的Centos版本(下面任意一條命令)
cat /etc/redhat-release
rpm -q centos-release
lsb_release -a # 事先必須先安裝好 lsb_release 這個工具
複製程式碼
# 壓縮命令,引數z是壓縮
# tar壓縮當前目錄(如果目錄有空格的話,命令會執行失敗)
WORKPATH=$PWD && tar -czvf $(basename `pwd`).tar.gz -C $WORKPATH $(ls -all $WORKPATH)
# 壓縮指定資料夾
tar -czvf postgres-idc.tar.gz postgres
# tar解壓到指定資料夾
tar -zxvf dapeng.tar.gz -C /data/nginx/html
複製程式碼
yum下載軟體離線安裝包和依賴包
mkdir -p /opt/packages/dockerRepo/18.06.1
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install --downloadonly --downloaddir=/opt/packages/dockerRepo/18.06.1 docker-ce-18.06.1.ce-3.el7.x86_64
複製程式碼
檢視指定埠服務的PID
netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }'
複製程式碼
關掉指定埠的服務
kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
複製程式碼
Linux檢視服務監聽的埠
yum install net-tools
netstat -antu
netstat -tunlp
netstat -antu | grep LISTEN
# Ubuntu檢視指定的埠占用情況
# lsof -i:9898
netstat -ntpl # 等同於 netstat -antu | grep LISTEN 或者等同於 netstat -tunlp | grep LISTEN
# Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
# tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1557/sshd
# tcp 0 0 127.0.0.1:6942 0.0.0.0:* LISTEN 6211/java
# tcp6 0 0 :::22 :::* LISTEN 1557/sshd
複製程式碼
Linux檢視某個程式開啟的執行緒以及數量
# Linux檢視某個程式開啟的執行緒
top -H -p {pid}
# Linux檢視某個程式開啟的執行緒數量
ps huH p {pid} | wc -l
複製程式碼
Linux搜尋指定路徑下的檔案內容
# 查詢子孫資料夾下包含指定字串的檔名
grep -lr 'import' .
# 要將當前目錄的下面所有檔案中的old都修改成new,這樣做:
sed -i 's|old|new|g' `grep 'old' -rl .`
# grep加-i引數不區分大小寫
grep -rni "netty" .
grep -rn -i "netty" /opt/soft
# grep指定搜尋指定的字尾名
grep -R -n -i --include="*.java" "netty" .
grep -R -n -i --include="*.java" "netty" /opt/soft
複製程式碼
###sed替換檔案內容
# sed要覆蓋替換檔案,必須加 -ri 引數
# -i表示替換, -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied)
# -r表示正規表示式, -r, --regexp-extended use extended regular expressions in the script.
sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config ;
複製程式碼
釋放centos7 快取
echo 3 > /proc/sys/vm/drop_caches
複製程式碼
檢視前面n行或者最後n行資料
tail -n 1000 /aa.txt # 列印檔案最後1000行的資料
tail -n +1000 /aa.txt # 列印檔案第1000行開始以後的內容
head -n 1000 /aa.txt # 列印前1000的內容
sed -n '1000,3000p' filename # 顯示1000到300行的資料
複製程式碼
Linux下iconv轉換檔案從GBK到UTF-8
iconv -f gbk -t utf-8 source-file -o target-file
複製程式碼
Linux禁止刪除資料夾
- 在Ubuntu實驗時,發現root使用者可以chattr命令,普通使用者加上sudo也可以使用chattr命令,普通使用者直接輸入chattr命令,Ubuntu不會提示沒許可權,提示了人看不懂含義的警告
- 對某個資料夾使用chattr命令後,該資料夾內就不能建立資料夾和檔案了,但是該資料夾內的子資料夾可以建立檔案和資料夾
mkdir -p workspace/son
echo 'qqqqqqqqqqqq' >> workspace/son.txt
# sudo chattr +i workspace/
echo "密碼" | sudo -S chattr +i workspace/
# 通過檢視當前路徑下的檔案和資料夾的lsattr屬性
lsattr $PWD
# ----i---------e--- /當前路徑/workspace # 輸出結果
# 執行下面刪除命令,建立子檔案和建立子資料夾命令,提示 `不允許的操作`
rm -rf workspace/son
# rm: 無法刪除'workspace/son': 不允許的操作
rm -rf workspace/son.txt
# rm: 無法刪除'workspace/son.txt': 不允許的操作
mkdir -p workspace/son1
# mkdir: 無法建立目錄"workspace/son1": 不允許的操作
echo 'qqqqqqqqqqqq' >> workspace/son1.txt
# bash: workspace/son1.txt: 不允許的操作
# 可以修改直屬子檔案
echo 'qqqqqqqqqqqq' >> workspace/son.txt
# 刪除許可權
echo "密碼" | sudo -S chattr -i workspace/
lsattr $PWD
# --------------e--- /當前路徑/workspace # 輸出結果
複製程式碼
shell指令碼關閉指定埠的服務
#!/bin/bash
serverPort=8888
currentPath=$(cd "$(dirname "$0")"; pwd)
echo "current path:"${currentPath}
cd ${currentPath}
# kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
# shell指令碼給變數賦值,等號兩邊不能有括號,否則死的時候武眼睇
PID=$(netstat -nlp | grep :${serverPort} | awk '{print $7}' | awk -F"/" '{ print $1 }')
if [ "" != "$PID" ]; then
echo "close service in port "${serverPort}
kill -9 $PID
fi
java -Xmx2560m -Xms256m -Xmn128m -Xss1m -jar ${currentPath}/icity-admin-service-1.0.0-SNAPSHOT.jar --server.port=${serverPort} >> ${currentPath}/log.log &
複製程式碼