メモ
CPU
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 268 353500 81660 2868132 0 0 40 79 203 102 0 5 94 0 0
CPUの使用時間は、100-id(アイドル時間)%
メモリ
(参考:https://milestone-of-se.nesuke.com/sv-basic/linux-basic/free-command/)
$ free
total used free shared buff/cache available
Mem: 4010516 694612 1000900 24992 2315004 3003628
Swap: 2191356 268 2191088
$ free -wlt
total used free shared buffers cache available
Mem: 4010516 693736 994204 24992 63676 2258900 3004496
Low: 4010516 3016312 994204
High: 0 0 0
Swap: 2191356 268 2191088
Total: 6201872 694004 3185292
空き容量は、free + buff + cache として計算
SWAP領域
・ストレージ上に作られる仮想メモリ
・メモリが不足した時に予約済のSWAP領域をメモリとして使用
・メモリのDRAMに比べると速度は遅い
カラム | 説明 |
---|---|
total | マシンに搭載したメモリ総量 |
used | 割り当て済みのメモリ消費量 |
free | 利用されていないメモリ容量 |
shared | 共有メモリの容量 |
buff | カーネルバッファ(メモリ上のデータを目倍す送受信する領域) |
cache | ページキャッシュ、スラブキャッシュ(高速化のためのキャッシュ) |
available | 実質すぐに割り当てが可能なメモリ(free + buff/cacheの解放可能領域) |
タイムスタンプ(mtime)のフォーマットを指定
$ ls -l --time-style="+%Y/%m/%d %H:%M:%S" /home/user/test
-rw-r--r--. 1 user user 9708 2024/09/01 12:34:56 /home/user/test
詳細なタイムスタンプ
stat /home/user/test
ファイルを空にする
$ cp /dev/null /home/user/test
$ : > /home/user/test
数列
$ seq 3
1
2
3
$ seq 2 4
2
3
4
$ seq 1 2 5
1
3
5
$ seq -s" " 3 (区切り文字指定、デフォルトは改行)
1 2 3
$ seq -f "%02g" 5 (桁指定)
01
02
03
04
05
何日差か
$ TODAY_UNIX_TIME=`date -d 2024/09/02 +%s`
$ YESTERDAY_UNIX_TIME=`date -d 2024/09/01 +%s`
$ BETWEEN="$(((TODAY_UNIX_TIME - YESTERDAY_UNIX_TIME) / 86400))"
$ echo $BETWEEN
1
if文
if [ 条件式1 ] || [ 条件式2 ]; then
echo "1,2"
elif [ 条件式3 ] && [ 条件式4]; then
echo "3,4"
else
echo "5"
fi
======================================
$ if []
条件式
数値
条件式 | 説明 | |
---|---|---|
A -eq B | = | AとBが等しいなら |
A -ne B | != | AとBが等しくないなら |
A -gt B | > | AがBより大きいなら |
A -ge B | >= | AがB以上なら |
A -lt B | < | AがBより小さいなら |
A -le B | <= | AがB以下なら |
文字列
条件式 | 説明 |
---|---|
A = B | AとBが等しいなら |
A != B | AとBが等しくないなら |
長さ
条件式 | 説明 |
---|---|
-z A | Aの長さが0なら |
-n A | Aの長さが0より大きいなら |
属性
条件式 | 説明 |
---|---|
-e A | Aが存在するなら |
-s A | Aのファイルサイズが0より大きいなら |
-f A | Aがファイルなら |
-d A | Aがディレクトリなら |
-r A | Aが読み取り可能なら |
-w A | Aが書き込み可能なら |
-x A | Aが実行可能なら |
引数でfor文を回す
for I; do
echo "$I"
done
=================
$ for i in {1..3};do echo $i;done
1
2
3
$ for file in `ls`;do echo $file;done
aaa.txt
bbb.csv
ccc.sh
縦を横に
$ cat /home/user/test
aaa
bbb
$ cat /home/user/test | xargs
aaa bbb
awk
デリミタ指定
$echo "2024/09/01" | awk -F "/" '{print $2}'
09
最後のフィールド
$ echo "1 2 3 4 5 6" | awk '{print $NF}'
6
行の操作
$ seq 5 |awk 'NR <= 3'
1
2
3
$ seq 7 | awk 'NR % 2 == 1 && NR <= 5'
1
3
5
三項演算子
$ echo "1 2" | awk '{print $1<$2 ? "<" : ">"}'
<
切り出し
$ echo "2024/09/01" | awk '{print substr($1,4)}'
4/09/01
$ echo "2024/09/01" | awk '{print substr($1,4,4)}'
4/09
パターン検索
$ echo "2024/09/01" | awk 'match($0, /\/09/) {print RSTART, RLENGTH}'
5 3
フィールド変更
$ echo "1 2 3 4 5 6 7 8" | awk '{$3 = "a"; print}'
1 2 a 4 5 6 7 8
置換
$ echo "2024/09/01" | awk '{sub("0","a");print $0}'
2a24/09/01
$ echo "2024/09/01" | awk '{gsub("0","a");print $0}'
2a24/a9/a1