たまに使うLinuxコマンドやスクリプトを随時メモしていく予定です。
ターミナルからログアウトしてもコマンドを動かし続ける
とても処理時間がかかる処理を実行する際に、ネットワークが切れたりして処理が停止するのを避けたいときに使います。
# nohupでhangupシグナルを無視し、バックグラウンドで実行させる
nohup コマンド &
nohup pg_dump -h localhost -p 5432 -U admin -Fc -f hoge.dmp hoge &
# ジョブの確認・停止・再開などは通常と同じ
バックグラウンド実行、フォアグラウンド実行
# バックグラウンドで実行する
コマンド &
sar 5 555 &
> [2] 9095
> Linux 5.4.0-1025-gcp (stg-scraper01) 2020年10月01日 _x86_64_ (2 CPU)
# 実行中のジョブをバックグラウンドに移動(この時点では停止状態になる)
sar 5 555
ctlr + z
> [1]+ Stopped sar 5 555
# 停止中のジョブをバックグラウンドで実行する
bg %1
> [1]+ sar 5 555 &
# ジョブをフォアグラウンドに移動
fg %1
> sar 5 555
# ジョブを確認する
jobs
> [1]+ Running sar 5 555 &
# ジョブを停止する
kill %1
kill -KILL %1
グローバルIPアドレスを取得
ifconfig en0 | grep inet | grep -v inet6 | sed -E "s/inet ([0-9]{1,3}.[0-9]{1,3}.[0-9].{1,3}.[0-9]{1,3}) .*$/\1/" | tr -d "\t"
# 出力結果
11.22.33.44
特定のポートを使っているプロセスを確認する
lsof -i:8080
# 出力結果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
com.docke 123 hoge 26u IPv4 0xc120a5f57fb38b6b 0t0 TCP *:http (LISTEN)
特定のホストの特定のポートが空いてるかどうかを確認する
telnet {ホスト名} {ポート番号}
telnet hoge_host 5432
# 出力結果(この結果が返ってきたらOK)
Trying 11.22.33.44...
Connected to hoge_host.
Escape character is '^]'.
ネットワーク経路を確認する
traceroute -d google.com
# -d 得られた経路途中のIPについて、DNSの逆引きをしないので高速
# -I windows版のtracertと同じく、ICMP Echo Requestを用いる( FWの設定でこちらだけ穴が空いてる場合などはこっちを使ってみる)
# 出力結果
traceroute to google.com (216.58.197.174), 64 hops max, 52 byte packets
1 192.168.0.1 (192.168.0.1) 2.305 ms 2.632 ms 2.423 ms
2 xxx1.asahi-net.or.jp (124.155.80.1) 4.616 ms 6.747 ms 5.942 ms
3 xxx2.asahi-net.or.jp (124.155.80.2) 5.057 ms 4.968 ms 5.707 ms
4 xxx3.asahi-net.or.jp (124.155.80.3) 4.133 ms 4.804 ms 4.447 ms
5 xxx4.asahi-net.or.jp (202.224.51.4) 7.835 ms 6.161 ms 6.117 ms
6 xxx5.asahi-net.or.jp (202.224.51.5) 6.219 ms 8.218 ms 11.443 ms
7 ebgp-google2.asahi-net.or.jp (202.224.35.93) 11.065 ms 6.074 ms 6.128 ms
8 108.170.242.129 (108.170.242.129) 7.782 ms
108.170.242.97 (108.170.242.97) 8.412 ms 5.692 ms
9 216.239.62.27 (216.239.62.27) 5.975 ms 5.651 ms
216.239.62.29 (216.239.62.29) 5.803 ms
10 nrt12s02-in-f14.1e100.net (216.58.197.174) 6.008 ms 5.727 ms 7.425 ms
SCPでファイル転送
# ファイルを送信する
scp <ファイルパス> <サーバ名>:<フォルダパス>
scp test.txt hoge_server:/tmp/
# ファイルを受信する
scp <サーバ名>:<ファイルパス> <フォルダパス>
scp hoge_server:/tmp/test.txt /tmp/
ディスク容量確認
# ファイルシステムの使用状況を確認する
df -h
# -h human readable
# ディレクトリ別の使用量を確認する
du -ch
# -c totalを出力
# -h human readable
ユーザを作成する&削除する
# 作成
# -m homeディレクトリも作る
# -s 起動シェルを指定する
useradd -m -s '/bin/bash' {名前}
# 削除
# -r homeディレクトリを削除する
userdel -r {名前}
sudo 権限の設定
以下のコマンドでsudoersファイルの編集ができます。
sudo visudo
sudoersファイルでは、以下の形式で許可する権限を記載します。
# 誰が どのホストで=(誰として) 何をする
# 例1) rootユーザが、全てのホストで、全てのユーザとして、全てをすることを許可
root ALL=(ALL) ALL
# 例2) hogeユーザが、全てのホストで、fugaユーザとして、git cloneをすることを許可
hoge ALL=(fuga) /usr/bin/git clone *
# 例3) hogeユーザが、全てのホストで、fugaユーザとして、パスワードなしてgit cloneをすることを許可
hoge ALL=(fuga) NOPASSWD: /usr/bin/git clone *
# 例4) hogeユーザが、全てのホストで、fugaユーザとして、環境変数を引き継いで、bashを実行することを許可
# 利用例) sudo -Eu fuga sh -c ". env/bin/activate && python main.py"
hoge ALL=(fuga) SETENV: /bin/sh *
グループ指定、カンマでコマンド複数列挙、ワイルドカードについてなど、詳細は以下のブログがとてもわかりやすいので参照させていただきます。
https://qiita.com/progrhyme/items/6f936033b9d23efb1741
ssh keysの作成
ssh-keygen -t rsa
bashで二次元配列
readonly array=(
"hoge1 fuga1"
"hoge2 fuga2"
"hoge3 fuga3"
)
for row in "${array[@]}"; do
echo ${row}
done
> hoge1 fuga1
> hoge2 fuga2
> hoge3 fuga3
for row in "${array[@]}"; do
data=(${row[@]})
echo ${data[0]}
echo ${data[1]}
done
> hoge1
> fuga1
> hoge2
> fuga2
> hoge3
> fuga3
リソース確認
## メモリ確認(freeコマンド)
free -ht
# -h human readable
# -t Mem + Swapの合計を出力
> total used free shared buff/cache available
> Mem: 25G 15G 9G 276K 196M 9.9G
> Swap: 2.0G 1.9G 91M
> Total: 27G 17G 10G
## 実行中プロセス確認(topコマンド)
top
# 起動中に以下のキーをタイプすることで表示を切り替えられる
# h: ヘルプ表示
# c: commandをfull pathにするかどうか
# M: %MEMでソート(デフォルトは%CPUでソートされている)
# m: メモリの表示切り替え
# P: %CPUでソート
# t: CPUの表示切り替え
# 1: CPU状況をCPU別に表示
# R: ソート順を逆にする
# u: 指定したユーザでfilterリング
# A: メインウィンドウ、PIDウィンドウ
# F: フィールド一覧表示。上下で移動してスペースで選択できる
> top - 16:58:22 up 4:37, 1 user, load average: 1.45, 1.35, 1.19
> Tasks: 145 total, 3 running, 87 sleeping, 0 stopped, 0 zombie
> %Cpu(s): 50.0 us, 0.0 sy, 0.0 ni, 49.5 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st
> KiB Mem : 26747548 total, 6776520 free, 18885016 used, 1086012 buff/cache
> KiB Swap: 2097148 total, 2097148 free, 0 used. 7507508 avail Mem
>
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
> 28606 hoge 20 0 14.852g 0.014t 36892 R 100.0 56.2 7:23.15 python
> 7357 hoge 20 0 3439648 869472 44460 R 65.3 3.3 51:17.60 python
> 2043 fuga 20 0 10.235g 2.859g 31108 S 2.0 11.2 5:31.34 java
> 7 root 20 0 0 0 0 S 0.3 0.0 0:00.13 ksoftirqd/0
> 15086 hoge 20 0 40288 3872 3132 R 0.3 0.0 0:00.11 top
> 1 root 20 0 225412 9216 6744 S 0.0 0.0 0:02.02 systemd
論理CPUコア数確認
grep processor /proc/cpuinfo | wc -l
tail -f の代わりにless +F を使う
less hoge_fuga.log
F : 大文字Fでtailモードに
ctrl + C: 通常モードに