baicai

白菜

一个勤奋的代码搬运工!

Linux 常用命令

Linux 常用命令

日期#

$(date -d '1 day ago' '+%Y-%m-%d')

常用方法

數字格式化#

part=`printf "%03d" $i` # 左補0

刪除舊文件#

# 找出5天前修改的文件名以.tar結尾的文件進行刪除
find /www/backup -mtime +5 -name "*.tar"  |xargs rm

for 循環#

for ((i=0;i<10;i++))
do
_date=$(date +%Y-%m-%d -d "${i} day")
echo $_date
done
#
for i in {1..10}
do
        echo $i
done

文件合併#

find ./ -name "item*" | xargs sed 'a\' > all.txt
find ./ -name "item*" | xargs cat > all.txt
:s/old/new           #替換當前行的第一個old為new
:s/old/new/g         #替換當前行的所有的old為new
:.,$s/old/new        #替換當前行到最後行的第一個old為new
:.,$s/old/new/g      #替換當前行到最後行的所有old為new
:N,Ms/old/new        #替換第N行到第M行的第一個old為new
:N,Ms/old/new/g      #替換第N行到第M行的所有old為new
:N,Ms/old/new/gc     #替換第N行到第M行的所有old為new,且逐一詢問是否刪除
:%s/old/new          #替換所有行的第一個old為new
:%s/old/new/g        #替換所有行的所有old為new

文件排序、交集、並集、差集#

#排序
sort a.txt |uniq -c
#一、交集
sort a.txt b.txt | uniq -d
#二、並集
sort a.txt b.txt | uniq
#三、差集 a.txt-b.txt:
sort a.txt b.txt b.txt | uniq -u
#差集 b.txt - a.txt:
sort b.txt a.txt a.txt | uniq -u

刪除重複行#

sort -k2n all.txt | uniq > real.out
sort -k2n all.txt | awk '{if ($0!=line) print;line=$0}'
sort -k2n all.txt | sed '$!N; /^\(.*\)\n\1$/!P; D'

刪除空格#

cat all.txt |sed s/[[:space:]]//g

awk 去重#

awk '!($1 in a){a[$1];print $1}'
#或
sort $1 | uniq 
# awk結果使用逗號間隔拼接
awk -F ',' '{print $1}' | xargs | tr ' ' ','

常用狀態查看#

# 按CPU和內存倒序前n個進程
ps -aux --sort -pcpu,+pmem | head -n 5
# 按進程名查看
ps -f -C java

文件同步 rsync#

rsync -zvrtopgl --progress --delete /fromDist/ root@s1:/toDist/

鏈接狀態統計#

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# TCP連接狀態詳解 
# LISTEN: 伺服器在偵聽來自遠方的TCP端口的連接請求
# SYN-SENT: 在發送連接請求後等待匹配的連接請求
# SYN_RECV: 一個連接請求已經到達,等待確認
# SYN-RECEIVED: 再收到和發送一個連接請求後等待對方對連接請求的確認
# ESTABLISHED: 代表一個打開的連接/正常數據傳輸狀態/當前並發連接數
# FIN_WAIT1: 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認/應用說它已經完成
# FIN_WAIT2: 從遠程TCP等待連接中斷請求/另一邊已同意釋放
# CLOSE-WAIT: 等待從本地用戶發來的連接中斷請求
# CLOSING: 等待遠程TCP對連接中斷的確認/兩邊同時嘗試關閉
# LAST-ACK: 等待原來的發向遠程TCP的連接中斷請求的確認/等待所有分組死掉
# TIME-WAIT: 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認/另一邊已初始化一個釋放
# ITMED_WAIT:  等待所有分組死掉
# CLOSED: 沒有任何連接狀態

CPU / 內存 / 系統信息查看#

# cpu
grep "model name" /proc/cpuinfo 
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
cat /proc/cpuinfo | grep physical | uniq -c
# cpu位數
echo $HOSTTYPE
# 內存
grep MemTotal /proc/meminfo 
# linux 版本
cat /etc/redhat-release
cat /etc/os-release
cat /etc/lsb-release
# linux 內核版本
uname -a 
uname -r

常用監控工具#

# 網絡監控
iftop
# IO監控
iotop
# 負載監控
htop
top

進程監控#

pidstat -p 843 1 3 -u -t
# -u:代表對 CPU 使用率的監控
# 參數 1 3 代表每秒採樣一次,一共三次
# -t:將監控級別細化到線程

ssh 相關#

# 秘鑰生成
ssh-keygen -t rsa -b 4096 -C "your_hostname"
# 免密登錄
cat ~/.ssh/id_rsa.pub | ssh  root@ip "cat >> .ssh/authorized_keys"

firewalld 防火牆使用#

# 禁止ping
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
# 允許192.168.1.0/24主機所有連接
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0" accept'
# 禁止某IP訪問
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='123.56.247.76/24' reject"
# 開放端口
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload

文件統計#

ls -g |awk 'BEGIN{sum=0}{sum+=$4}END{print sum/(1024*1024*1024)}'

history 格式及數量修改#

export HISTSIZE=10000
export HISTTIMEFORMAT=" %Y-%m-%d %H:%M:%S - `who am i 2>/dev/null | awk '{print $NF}'|sed -e 's/[()]//g'` - `who -u am i |awk '{print $1}'` "
export PROMPT_COMMAND="history 1 >> /var/log/.myhistory" #將命令記錄輸出到文本中
touch /var/log/.myhistory
chmod  /var/log/.myhistory
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。