こんぴゅーた

2023-03-14 10:45
2023-03-14 10:45

これは何?

  • コンピュータ全般(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 の数を確認したい

see: 物理 CPU、CPU コア、および論理 CPU の数を確認する - Red Hat Customer Portal

# 物理 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

プログラミング言語に関する Q&A

C++

main 関数内で大きなサイズの配列を宣言するとセグフォする

ループ内で変数宣言をするとパフォーマンスは低下するのか

ネットワークに関する Q&A

ssh 関連

sshd からの切断を防ぐ

~/.ssh/config に以下を設定する

Host *
    ServerAliveInterval 120
    ServerAliveCountMax 3

正しい鍵を利用して踏み台サーバーへエージェント転送しているにも関わらず目的のサーバーにログインできない

  • 踏み台サーバーで ssh -L を叩きエージェント転送できているかチェック
  • 転送できていない場合
    • ローカルから ssh -A しているか確認
    • ~/.ssh/config に AddKeysToAgent yes を追加

まとめたい項目リスト

  • rpm パッケージの中身や構造について
  • 実行形式ファイルの中身や構造について
  • デーモンプロセスの組み立てについて

About

ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです

Copyright © 53ningen.com