CentOS常用命令

hegphegp發表於2019-11-19

檢視具體的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 &

複製程式碼