Linux
2023/03/29 09:57
2023/12/21 13:02
Linux 全般(OS, ネットワーク, etc...)について細かな Q&A を書き連ねていくページ。内容が膨大になった項目は適宜、他のページに切り出す。
OS に関する Q&A
Linux 全般
OS のディストリビューション/バージョンを確認したい
$ cat /etc/system-release
Amazon Linux AMI release 2018.03
$ cat /etc/os-release
NAME="Amazon Linux AMI"
VERSION="2018.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2018.03"
PRETTY_NAME="Amazon Linux AMI 2018.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2018.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
OS カーネルのバージョンを確認したい
$ uname -a
Linux ip-172-31-3-40 4.14.62-65.117.amzn1.x86_64 #1 SMP Fri Aug 10 20:03:52 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ cat /proc/version
Linux version 4.14.62-65.117.amzn1.x86_64 (mockbuild@gobi-build-60009) (gcc version 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC)) #1 SMP Fri Aug 10 20:03:52 UTC 2018
CPU の数を確認したい
# 物理 CPU の数
$ grep physical.id /proc/cpuinfo | sort -u | wc -l
1
# CPU コアの数
$ grep cpu.cores /proc/cpuinfo | sort -u
cpu cores
# 論理 CPU の数
$ grep processor /proc/cpuinfo | wc -l
1
利用する OS でのパッケージ管理方法を確認したい
- RedHat 系: パッケージは rpm 形式
- rpmコマンド: rpm パッケージ単位での管理を行うコマンドで依存関係は自動解決されない(-R, --requires オプションで依存するパッケージ一覧の確認は可能)
- yum コマンド: リポジトリを参照して依存関係を含めて管理を行う
- Ubuntu/Debian 系: パッケージは deb 形式
- dpkg コマンド: deb パッケージ単位での管理を行うコマンドで依存関係は自動解決されない(依存するパッケージ一覧の確認は可能)
- apt コマンド: リポジトリを参照して依存関係を含めて管理を行う
RedHat 系全般
レポジトリ一覧を確認したい
$ yum repolist
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
repo id repo name status
!amzn2-core/2/x86_64 Amazon Linux 2 core repository 28,835
amzn2extra-docker/2/x86_64 Amazon Extras repo for docker 72
amzn2extra-kernel-5.10/2/x86_64 Amazon Extras repo for kernel-5.10 200
repolist: 29,152
利用可能な rpm パッケージ一覧を確認したい
$ yum list
$ # インストール済みの rpm パッケージ一覧は以下のコマンド
$ yum list installed
rpm パッケージの中身や構造がどうなっているか事前に確認したい
$ yum install --downloadonly --downloaddir=/tmp <package_name>
Linux コマンドに関する Q&A
シェルスクリプト全般
ファイルの各行を for 文でまわしたい
$ cat /tmp/list
hoge
fuga
piyo
$ for line in `cat /tmp/list`;
do
echo "$line";
done;
hoge
fuga
piyo
bash で beep 音を鳴らしたい
0x07 が BEL にあたるためこれを echo すればよい
$ echo $'\07'
# or
$ echo -e "\07"
出力した行の内容を書き換えたい
\b にて一文字戻れる
$ echo -ne "hoge"; sleep 1; echo -ne "\b\bya\n";
hoge
# 1 秒経過後
hoya
\r にて先頭の行にもどり書き換えられる
$ echo -ne "loading..."; sleep 1; echo -e "\rcompleted!";
loading...
# 1 秒経過後
completed!
出力の文字色や背景色をつけたい
$ printf '\033[31;47;m%s\033[m\n' '赤色文字+白色背景'
赤色文字+白色背景
処理時間を計測したい
s=`date +%s%3N`
# 処理
# ...
e=`date +%s%3N`
echo $(($e - $s)) # ms
echo コマンド
改行させたくない
$ echo -n hoge
hoge $
エスケープシーケンスシーケンスを取り扱いたい
$ echo "a\tb" #=> エスケープシーケンスとして取り扱われない
a\t
$ echo $'a\tb' #=> $ 始まり + '...' で括る
a b
$ echo -e "a\tb" #=> これでも良い
a b
rm コマンド
基本的なオプションが知りたい
- -r, -R, --recursive: ディレクトリとその配下のファイルを削除する
- -v, --verbose: 詳細なログを表示する
- -f, --force: 確認を行わない
awk コマンド
n 番目の値を抽出したい
$ awk '{print $1}'
最大値を計算したい
$ awk '{ if (M<$1) M=$3} END { print M }'
jq コマンド
フォーマットを解除した JSON を出力したい
$ cat /path/to/file | jq -c
Linux コマンドで XX がしたい
文字列をスペースで split して n 番目の要素だけを抽出したい
$ echo "2023-12-16 '土)" | cut -d " " -f1
2023-12-16
$ echo "2023-12-16 (土)" | cut -d " " -f2
(土)
文字列中の X を Y に置き換えたい
#=> replace
$ echo 2015-05-06 | sed 's/-/\//'
2015/05-06
#=> replaceAll
$ echo 2015-05-06 | sed 's/-/\//g'
2015/05/06
プログラミング言語に関する Q&A
C++
main 関数内で大きなサイズの配列を宣言するとセグフォする
- スタック領域のサイズ上限に達してしまっていることが考えられる
- スタック領域のサイズは ulimit -s コマンドで確認できる(単位: kbytes)
- ヒープ領域を使う、グローバルスコープで宣言するなどにて対応する
- 参考文献
ループ内で変数宣言をするとパフォーマンスは低下するのか
ネットワークに関する Q&A
ssh 関連
sshd からの切断を防ぐ
~/.ssh/config に以下を設定する
Host *
ServerAliveInterval 120
ServerAliveCountMax 3
正しい鍵を利用して踏み台サーバーへエージェント転送しているにも関わらず目的のサーバーにログインできない
- 踏み台サーバーで ssh -L を叩きエージェント転送できているかチェック
- 転送できていない場合
- ローカルから ssh -A しているか確認
- ~/.ssh/config に AddKeysToAgent yes を追加
まとめたい項目リスト
- rpm パッケージの中身や構造について
- 実行形式ファイルの中身や構造について
- デーモンプロセスの組み立てについて
Pinned Articles
About
ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです
Tags
JavaScript
PowerShell
kibana
elasticsearch
fluentd
nginx
イベント
五十嵐裕美
村川梨衣
logrotate
IoT
Scala
Java
C言語
iputils
ICMP
WUG
mastodon
Swift
AWS
Clock
Windows
アーキテクチャ
PoEAA
iOS
DeviceFarm
プログラミング言語
OS
StepFunctions
Lambda
Serverless
terraform
ポエム
RHEL
ネットワーク
GraphQL
CloudWatch
Linux
Coreutils
network
nc
telnet
LinuxKernel
fpinscala
ELB
IAM
AppSync
EFS
Gradle
english