baicai

白菜

一个勤奋的代码搬运工!

Linuxの一般的なコマンド

Linux 常用命令

日期#

$(date -d '1日前' '+%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}日")
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: 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
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。