はじめに
業務で使用したLinux関連を知識を備忘録として残します。
若干AWSコマンド系の知識もはいっています。
※随時更新予定
AWS
コマンド
■ aws cliバージョン確認
$ aws --version
■ aws cliクレデンシャル設定
$ aws configure
# ~/.aws/configには、リージョンと出力形式
# ~/.aws/credentialsには、アクセスキーIDとシークレットアクセスキー
# --profileオプションを使用して名前付きプロファイルを設定可能
# プロファイルを切り替えるはexport AWS_DEFAULT_PROFILE=<プロファイル名>
# デフォルト以外のユーザでaws cliを実行する場合は--profileで指定
$ aws configure list
# 現在使用中の設定を確認
■ S3一覧表示
$ aws s3 ls
$ aws s3 ls s3://<バケット名>/<パス>
■ S3バケット作成
$ aws s3 mb s3://<バケット名>
■ S3コピー
$ aws s3 mb s3://<バケット名> <ローカルパス>
# 送信元 送信先の順で指定
# --dryrunオプションで実行前検証が可能
# --exculdeオプションで除外
# --includeオプションで指定パス内のファイルを全て再帰的に処理
■ S3コピー
$ aws s3 mb s3://<バケット名> <ローカルパス>
# 送信元 送信先の順で指定
■s3暗号化確認
$ aws s3api get-bucket-encryption --bucket <バケット名>
■ VM Import
$ aws ec2 import-image --profile <プロファイル名> --description "<説明>" --disk-containers file://<ファイル名(.json形式)>
■ SES Smtpエンドポイント疎通確認
$ telnet email-smtp.ap-northeast-1.amazonaws.com 587
■ SSM Agent log
$ tail -f /var/log/amazon/ssm/amazon-ssm-agent.log
■インスタンスが Xen ベースか Nitro ベース
$ aws ec2 describe-instance-types --instance-type instance_type --query "InstanceTypes[].Hypervisor"
■ ログファイルなしでcloudwatchlogsに文字列をput
$ aws logs put-log-events --log-group-name "Test" --log-stream-name "App1" --log-events timestamp=1461997171845,message='Hello CloudWatch'
# 2回目以降はnextSequenceTokenの値を--sequence-tokenオプションで指定する必要がある
■ ユーザデータ確認
$ cat /var/lib/cloud/instance/user-data.txt
■ Extras Library
$ amazon-linux-extras (list)
# 利用可能なトピック(ソフトウェア群を表示)
$ amazon-linux-extras install
# トピックのアンインストールは現状不可
# Amazon Linux 2023にはamazon-linux-extrasが入っていない
# epel(コマンドによって追加できるリポジトリ)はamazonlinux2で追加可能
PostgreSQL
コマンド
■ psql
$ psql -h <ホスト名> -d <データベース名> -U <ユーザ名> -p 5432
■ pg_dump
$ pg_dump -h <ホスト名> -d <データベース名> -U <ユーザ名> -p 5432 -Fc -f <ファイル名>
■ pg_restore
$ pg_restore -d <データベース名> -c
メモリ、ディスク
コマンド
■ 現在の全体ディスク使用量を確認
$ df -Th
# T:各ファイルシステムの種類を合わせて表示
# h:サイズに応じて読みやすい単位で表示
■ ディレクトリごとにディスク使用量を確認
$ du <ディレクトリ名>
# duのみを指定した場合はカレントディレクトリの使用量
■ ブロックデバイス/ファイルシステム一覧表示
$ lsblk
■ パーティションサイズ拡張
$ growpart /dev/xvda <パーティション番号>
■ ファイルシステム拡張
$ resize2fs /dev/sdc1
# 第二引数あり⇒サイズ指定
# 第二引数なし⇒最大サイズまで拡大
■ ディスク容量負荷
$ stress -hdd <負荷値>
ネットワーク
コマンド
■ ip確認
$ ifconfig
$ ip addr show
■ ルーティング
$ route -v
■ ネットワークの経路を調べる
$ traceroute -n 8.8.8.8
■ iptablesの確認
$ iptables -nL
■ ルーティングテーブル
$ netstat -rn
■ 宛先のドメインに関する情報(ipアドレスのみ)
$ dig +short yahoo.co.jp
# awsのサービスのURL形式はsns.ap-northeast-1.amazonaws.comのような形
■ PCIデバイスの情報を表示
$ lspci
■ NetworkManager
$ nmcli
# c:コネクション
# d:デバイス
■ NIC有効化/無効化
$ ifup/ifdown
■ SELinuxのモードを表示
$ getenforce
■ SELinuxのモードを一時的に変更
$ setenforce
■ プロセスが利用しているポートを確認
$ lsof -i | grep <サービス名>
■ HTTPリクエストを実施し、内容を標準出力
$ curl <URL>
# -o:レスポンスボディの出力先を指定する
# -s:余計な出力をしない
# -I:HTTPレスポンスヘッダーの取得
■ ポートスキャン
$ nmap <ホスト名>
■ ソケットの状態を表示する
$ ss -pantsu
# p:ソケットを使ってるプロセスを表示させる
# a:接続待ちを含めたすべてのソケットを表示する
# n:名前解決を行わない
# t:TCPソケットを表示する
# s:統計情報を表示する
# u:UDPソケットを表示する
CPU,OS
コマンド
■ プロセス数を確認
$ ps auxfww
# a:端末操作のプロセスを表示(他端末も含む)
# u:CPUやメモリの使用率なども表示
# x:現在、実行しているプロセスを表示
# f:プロセスを階層で表示
# w:出力幅を広げる。このオプションを 2 つ指定すると、幅の制限がなくなる
■ インストール済みrpmパッケージ表示
$ rpm -qa | grep hoge
■ centosバージョン確認
$ cat /etc/redhat-release
サービス
コマンド
■ サービスの設定リストの表示
$ chkconfig --list
■ アクティブなサービスをリストアップ
$ systemctl list-units --type=service
アカウント/ログイン
コマンド
■ ログインユーザ確認
$ w
■ 現在のユーザ名確認
$ whoami
■ 現在の所属グループ確認
$ group
■ historyコマンドに日時を追加
$ export HISTTIMEFORMAT="%F %T "
# 再起動後に以前の表示に戻るため注意
■ リモート接続
$ ssh -i <秘密鍵> -l <user名> <host名>
# user@hostの形でも可能
■ ユーザ一覧
$ cat /etc/passwd
■ パスワード情報
$ cat /etc/shadow
# rootのみ読み込み可能
■ sudo可能なユーザの情報
$ cat /etc/sudoers
# 例)piyota ALL=(akuma) /bin/ls
⇒piyotaはakumaとしてlsコマンドが実行できる
■ パスワード変更
$ passwd
# 引数なしで自身のパスワード変更
# 引数ありで他のパスワード変更(rootのみ可能)
TARコマンド
コマンド
■ ファイル圧縮
$ tar -czvpf <アーカイブ名.tgz> <圧縮するファイル>
# c:新しいアーカイブを作成
# z:アーカイブをgzip形式で圧縮
# v:処理内容を出力
# 所有者などのファイル属性を保持
# f:出力するアーカイブ名を指定
■ファイル展開
$ tar -xzvpf <アーカイブ.tgz>
# x:アーカイブファイルを展開
# z:gzip形式のアーカイブを展開
# v:処理内容を出力
# 所有者などのファイル属性を保持
# f:出力するアーカイブ名を指定
■ファイル展開せずに中身を確認
$ tar -zvtf <アーカイブ.tgz>
# z:gzip形式のアーカイブを展開(なくてもOK)
# v:処理内容を出力
# t:tarに含まれているファイルの一覧を表示
# f:出力するアーカイブ名を指定
YUM
コマンド
■ パッケージ更新状況確認
$ yum check-update
■ インストール済パッケージ確認
$ yum list installed | grep <パッケージ名>
■ リポジトリ情報一覧表示
$ ls -l /etc/yum.repos.d
■ 有効化されているリポジトリ一覧表示
$ yum repolist
# /etc/yum.repos.d以下のファイルでenable=1になっているものが出力
■ yumでインストールされたrpmファイル表示
$ ls -l /var/cache/yum/x86_64/7
RPM
コマンド
■ パッケージのインストール
$ rpm -ivh {パッケージ名}
■ パッケージのアップグレード
$ rpm -Uvh {パッケージ名}
■ パッケージのアンインストール
$ rpm -evh {パッケージ名}
■ インストールされているrpmパッケージを一覧表示
$ rpm -qa {パッケージ名}
検索
コマンド
■ ファイル名に「○○」という文字列が含まれているファイルのリストを取得
$ find <検索対象フォルダのパス> -type f -name "*<検索したい文字列>*"
■ ファイルを開いた中身に、「○○」という文字列が含まれているファイルのリストを取得
$ grep <検索したい文字列> -rl <検索対象フォルダのパス>
# -i:大文字小文字区別しない
Apache
コマンド
■ 設定ファイル構文チェック
$ apachectl configtest
■
$
シェル、環境変数
コマンド
■ 環境変数表示
$ printenv
# export <シェル変数名>で環境変数追加
■ シェル変数表示
$ set
# set | grep PS1でプロンプトの情報表示
■ 演算子
$ command1 && command2
# command1が成功したらcommand2
$ command1 || command2
# command1が失敗した場合command2を実行
その他Tips
コマンド
■ 適当な中身のファイルを作りたいとき
$ cat >> test.txt
<文字列入力>
ctrl + C
■ ログ出力
$ logger "<文字列>"
# /var/log/messagesに出力
■ 元ファイルの情報を保持してコピー
$ cp -p <コピー元ファイル名> <コピー先ファイル名>
# -r 再帰的にコピー
■ 追記されるファイルの中身を確認
$ tail -f <ファイル名>
# -n:出力する行数を指定
# -v:ファイル名を常に表示
■ 文字列変換
$ sed -i s/<置換前>/<置換後>/g <ファイル名>
# -i:ファイルを直接編集
# s:置換前/置換後指定
# g:ファイル内すべてを置換対象にする(gなしは先頭のみ)
■画面をきれいにする
$ clear
■ PATHを通す流れ
$ which <コマンド>
⇒出力結果パス
$ echo $PATH
$ PATH=$PATH:<出力結果パス>
# PATH= でシェル変数を削除してしまった場合はexitで入りなおせば元通り
■ コマンドの実行結果確認
$ echo $?
# 成功の場合は「0」,失敗はそれ以外の数字
※追加用フォーマット
コマンド
■
$