シェルスクリプト:top-proc.shの改修。

以前のシェルスクリプト、メモリとCPU使用率を見るスクリプトを改修しました。

改修後のスクリプト

#!/bin/bash

# スクリプト名: top_procs.sh
# 説明: システム全体の負荷状況と、CPU/メモリ使用率が高い上位プロセスを表示します。

# 表示するプロセス数の設定
TOP_N=5

# ヘルプ表示関数
show_help() {
    echo "--- プロセス監視スクリプト ---"
    echo "このスクリプトは、システム全体の負荷状況(CPU/メモリ/LoadAvg)と、"
    echo "リソース消費が多い上位${TOP_N}つのプロセスを表示します。"
    echo ""
    echo "使用方法: $0 [オプション]"
    echo ""
    echo "オプション:"
    echo "  -c          : CPU使用率 (%\$CPU) の高い上位${TOP_N}つのプロセスを表示します。"
    echo "  -m          : メモリ使用率 (%\$MEM) の高い上位${TOP_N}つのプロセスを表示します。"
    echo "  -a          : CPUとメモリの両方の上位${TOP_N}つのプロセスを表示します。(引数なしと同じ)"
    echo "  -h          : このヘルプを表示します。"
    echo ""
    echo "出力形式: 割合(%) PID COMMAND"
    echo "-----------------------------------------"
}

# システム全体のリソース状況表示関数
show_system_summary() {
    echo "--- システム稼働状況 ---"

    # 1. Load Average (uptimeコマンドから抽出)
    # 出力例: 16:45:23 up 10 days, ... load average: 0.05, 0.03, 0.01
    local load_avg=$(uptime | awk -F'load average:' '{ print $2 }' | xargs)
    echo "Load Average : $load_avg"

    # 2. CPU使用率 (vmstatコマンドから直近1秒の状態を取得)
    # vmstat 1 2 の2行目(最新の状態)を取得し、アイドル率($15)を100から引く
    if command -v vmstat >/dev/null 2>&1; then
        local cpu_idle=$(vmstat 1 2 | tail -1 | awk '{print $15}')
        local cpu_usage=$((100 - cpu_idle))
        echo "CPU Usage    : ${cpu_usage}%"
    else
        echo "CPU Usage    : (vmstatコマンドが見つかりません)"
    fi

    # 3. メモリ使用率 (freeコマンドから計算)
    # free -m の出力を解析
    if command -v free >/dev/null 2>&1; then
        local mem_info=$(free -m | grep Mem:)
        local mem_total=$(echo "$mem_info" | awk '{print $2}')
        local mem_used=$(echo "$mem_info" | awk '{print $3}')
        # awkで浮動小数点計算
        local mem_pct=$(awk "BEGIN {printf \"%.1f\", ${mem_used}/${mem_total}*100}")
        echo "Memory Usage : ${mem_pct}% (${mem_used}MB / ${mem_total}MB)"
    else
        echo "Memory Usage : (freeコマンドが見つかりません)"
    fi
    echo "------------------------"
}

# プロセス情報表示関数
# 引数1: ソート対象 (CPU/MEM)
# 引数2: ソートフィールド番号 (ps auxの3番目か4番目)
# 引数3: タイトル
show_top_procs() {
    local type=$1
    local field=$2
    local title=$3

    echo ""
    echo "--- ${title} (上位 ${TOP_N} プロセス) ---"
    echo " %${type}    PID  COMMAND"
    echo "-----------------------------------------"

    ps aux |
        # ヘッダー行をスキップ
        tail -n +2 |
        # 指定フィールド (CPU:%3, MEM:%4) で降順ソート
        sort -k ${field} -r |
        # 上位N行を抽出
        head -n ${TOP_N} |
        # PID ($2)、割合 ($field)、COMMAND ($11以降) を整形して表示
        awk -v field="${field}" '{
            cmd="";
            for(i=11;i<=NF;i++){
                cmd=cmd" "$i
            };
            # $fieldには$3(%CPU)または$4(%MEM)の値が入る
            printf "%6.2f%% %6s %s\n", $field, $2, cmd
        }'
}

# メインロジック

# まずシステム全体のサマリーを表示 (ヘルプ以外の場合)
if [ "$1" != "-h" ]; then
    show_system_summary
fi

if [ "$#" -eq 0 ] || [ "$1" == "-a" ]; then
    # 引数なし、または -a の場合 (全て表示)
    show_top_procs "CPU" 3 "CPU使用率"
    show_top_procs "MEM" 4 "メモリ使用率"
elif [ "$1" == "-c" ]; then
    # -c の場合 (CPUのみ)
    show_top_procs "CPU" 3 "CPU使用率"
elif [ "$1" == "-m" ]; then
    # -m の場合 (メモリのみ)
    show_top_procs "MEM" 4 "メモリ使用率"
elif [ "$1" == "-h" ]; then
    # -h の場合 (ヘルプ)
    show_help
else
    # 不正な引数の場合
    echo "不正なオプションです: $1" >&2
    show_help
    exit 1
fi

あとはこれに

chmod +x top-proc.sh

で実行権を付与します。

使用例

./top-proc.sh
--- システム稼働状況 ---
Load Average : 1.30, 1.40, 1.32
CPU Usage    : 23%
Memory Usage : 60.5% (3583MB / 5920MB)
------------------------
--- CPU使用率 (上位 5 プロセス) ---
 %CPU    PID  COMMAND
-----------------------------------------
 52.10%  12345  ruby_app_server: /var/www/webapp1 (production)
  9.40%   1086  /usr/sbin/database_server [...]
  3.80%  42162  /usr/sbin/web_server -k start
  1.50%  42161  /usr/sbin/web_server -k start
  0.90%   7978  nodejs_process /path/to/nodejs_app/server.js

--- メモリ使用率 (上位 5 プロセス) ---
 %MEM    PID  COMMAND
-----------------------------------------
 13.10%   1984  /usr/bin/java -Xms256m -Xmx256m [...] search_engine -Des.path.home=/usr/share/search_engine [...]
 10.00%   1086  /usr/sbin/database_server [...]
  7.50%  12345  ruby_app_server: /var/www/webapp1 (production)
  3.90%  78630  ruby_app_server: /var/www/webapp2 (production)
  3.80%  76583  ruby_app_server: /var/www/webapp3 (production)

と出てきます。

  • ロードアベレージ:uptimeコマンドから
  • CPU使用率:vmstatコマンドから直近1秒

として、より現実値に近づけています。

sudo ln -sf /path/to/script/top-procs.sh /usr/local/bin/top-procs

として、どこからでもコマンドを呼び出せるようにしておくといいでしょう。(スクリプトの場所は自分がこれを保存した絶対パスを指定してください)

既にコマンド化している場合は、このスクリプトを差し替えるだけでOKです。

『ライザのアトリエ3DX』スタートアップの恩恵-採取道具。

SPが最大17000からスタートする『ライザのアトリエ3DX』。

その恩恵のすごさを紹介。

質のいい素材をバンバン入れられることにより、素材の質、それに伴うSPボーナスも増えていきます。

序盤、4人での冒険の時点で、リビルドLv.99まで到達。

これによりゴルドテリオンも調合。

薪割り斧から順調に調合していき

ゴールデンアックスを調合。

これにより、最初の状態で、最上位の採取道具が手に入りました。

『ライザのアトリエ3 DX』序盤を快適に進めるためのTIPS集。

いわゆるまとめです。

『ライザのアトリエトリロジーDX』が出たことで、ライザ3をやってみたいという方はいるかと思います。

また、自分への思い興しとしてこの記事を記します。

完全なるリンク集です。

最序盤で作ることができる採取道具の数々

シリーズのキモでもある

  • 採取
  • 調合
  • 戦闘

の「採取」にフォーカスした記事。

  • 草刈り鎌
  • ハンマー
  • 釣り竿
  • 捕虫網
  • エアドロップ

の全ては「最序盤(アガーテにグラスビーンズを届ける前)」から理論的に可能です。ファストトラベル解禁後にやっておくことをオススメします。

特性と中和剤ループについて

「調合」は戦闘と探索を劇的に楽にします。その中の「特性」は最初の中和剤でどうとでもなります。

逆に言うと「中和剤」1つを満足に作れないと、後の調合で躓きます。

エメラルドバンド経由でのアクセス

実績にも関わる全てのランドマークを見つける。その中のクーケン島周辺エリアに関しては「エメラルドバンド」を使う必要があります。

採取する素材の関係、クレリア地方についてからのスタートとなりますが:

  • SPを溜めまくる

で理論上は可能。そして、シリーズを持っている方のスタートダッシュ特典は、この理論を縮めることが可能です。

クレリア地方でのTIPS

初見プレイヤーはここが躓くポイントです。

  • より広くなったエリア
  • 細かい採取
  • アトリエ建築

などゲームの選択肢が広くなった分、迷いも出てきます。その一助となります。

余りオススメはしないインゴット素材全てのクーケン島周辺エリアでの採取

これは割と修羅の道です。たとえスタートダッシュ特典でも「理論上はできるがやろうとはしない」コアなファン向けの記事です。

『ライザのアトリエDX』Steam版、ロードの遅さ改善。(修正報)

2025/11/13にリリースされた『ライザのアトリエトリロジーDX』の『ライザのアトリエDX』。

壊滅的なロードの遅さは改善されていました。

https://atelier.games/secretdx/jp/update

アップデート後、

オプション→グラフィック設定→フレームレート制限を「無制限」から

60に変更。

この後、ワークアラウンドによって「PS3ぐらいのロード時間」から「これぞDX」というぐらいまで見違えました。

よって、こちらの記事は取り下げます。

『ライザのアトリエ3DX』スタートダッシュ特典による大幅スピードアップ(最序盤のネタバレのみ)

こちらのセーブデータ連動特典による大盤振る舞いの特典を大きく受けられるのが

『ライザのアトリエ3DX』です。

ライザのアトリエ2は品質上限アップや特定の採取道具などはある程度シナリオを進める必要がありましたが

「ほぼ全てのスキルツリーがフルオープン」という仕様になっているため、

  • ライザのアトリエ
  • ライザのアトリエ2
  • ライザのアトリエ3

を通しで買い、更に今回のトリロジーも購入しているというファンにとっては

17,000のSPでスタート。

これがどれほどの意味を持つかを説明します。

スキルツリー解放まで

※リンク先はストーリーの流れ全てを記しています。(重大なネタバレは避けていますが)

https://atelier.reisalin.com/issues/246

「アガーテの依頼」受諾後のチュートリアルのスキルツリー後。

計算通り、17000ものスキルツリーによって

通常採取:獲得量強化Lv1.から始まり

メディカパウダーを解放。

エメラルドバンド経由で

通常採取Lv.2を解放してもまだ余裕があります。

通常採取Lv.3も上げます。

杖採取Lv.2→Lv.3を上げます。

スキルツリーの上、投入回数増加等もアップ。

品質上限突破:500。この辺りで流石にSPが5000を切りましたが

投入回数+2まで伸ばせます。

最後に獲得SP+10%を解放しました。

この通常採取のレベルアップが意味すること

最序盤、クーケン島とアトリエ周辺のみから

  • 攻防強化++
  • 攻速強化++
  • 全能力強化++

などの最後まで使う特性が得られます。

投入回数も増えているので

全属性を付与した中和剤を作る

ゼッテルによる中和剤の統合も自由

と、かなりのやりたい放題になっていました。

そして、なぜ、筆者がこれに感動しているかというと、ライザ2/3は「極端な成長曲線を描く超・超拡大再生産だから」に尽きます。

終盤であればあるほどSPは溜まりやすく、上質なアイテムを調合することができます。

しかし、逆を言えば「序盤のSPは溜まらず、低品質なアイテムを作ることしかできない」になります。

これが、今回のSP大幅獲得により「成長曲線のスピード」が極めて速くなりました。

なので、ライザDXの不具合報告とは全く違う「本シリーズを追いかけているファンにとっては」いいボーナスとなった次第です。

スキルツリーの伸ばし方

こちらに既に記しています。

『ライザのアトリエ2DX/3DX』のセーブデータ連動のスタートダッシュ特典の大盤振る舞い。※こちらは正常な仕様※(ネタバレは最序盤のみ)

先に述べた『ライザのアトリエDX』の不具合(壊滅的なロードの遅さ)はゲームの進行を阻害する深刻な不具合でした。

しかし、『ライザのアトリエ2DX』における仕様の大盤振る舞いはゲームの進行を「進めすぎる」ものかと思います。

前提

  • Steam版の『ライザのアトリエ2』をトロコン済み。
    • シーズンパス導入
    • 全てのDLCをクリア
  • Steam版『ライザのアトリエ2DX』(というよりもトリロジーDX)を購入。
  • セーブデータ自動連動機能あり

何が起きたか?

ストレートに言うと「SP10,000でスタートする」です。

  1. NewGameからスタート。
  2. オープニングイベントを済ませる。
  3. チュートリアルを済ませる。
  4. 調合イベント(スキルツリー)を確認すると

10,000となっています。

ライザのアトリエ2の場合

500スタート。

この計算結果

この、余りにも大盤振る舞いな(500→10000)は何か裏があるのか、バグがあるのかを調査しましたが「全くの正常な仕様」でした。

セーブデータ連動特典の本質

公式サイトにはこうあります。

https://atelier.games/secretdx/jp/products/index_standard.html

オリジナル版や『秘密DX』各タイトルのシステムデータがあると、セーブデータ連動特典が取得可能! 序盤の冒険に役立つアイテムが手に入る!

この内容は、筆者は衣装だけと見間違えていましたが……

ここの「SP」の欄を見落としていました。

  • ライザ無印(ノーマル):2,000
  • ライザ2(ノーマル):2,000
  • ライザ3(ノーマル):2,000
  • ライザDX:3,500

この合計は9,500。そして、前述した「初期SP:500」が加わると合計は10,000。つじつまが合います。

ちなみにライザのアトリエ3の場合は……

  • ライザ無印(ノーマル):3,000
  • ライザ2(ノーマル):3,000
  • ライザ3(ノーマル):3,000
  • ライザDX:4,000
  • ライザ2DX:4,000

で、追加SPが17,000というこれまた桁違いの数字

いくら何でもこれは大盤振る舞い過ぎるのではと思いましたが:

  • 「既にオリジナルをプレイしている人にとっては、序盤のSP稼ぎは苦痛である」
  • 「プレイ済みのゲームのDXを買い直す人はそれほどいない」

という当たり前の感覚が抜けていました。

なので、一種の「強くてニューゲーム」状態を「原作プレイ済みへのお礼」というメーカーからのメッセージだと受け取ります。

『ライザのアトリエDX』Steam版:2025/11/15現在発生して“いた”不具合とアップデートによる改善確認。(元の記事の取り下げ)

2025年11月13日にリリースされた『ライザのアトリエトリロジーDX』。

グラフィック廻りが一新され、一部のボイスがアニメに準拠したものへと差し替わっているなどがありましたが、Steam版に強烈な不満がありましたが、修正を確認しました。

壊滅的に遅かったロード画面

※2025/11/18のアップデートによりこの遅さは劇的に改善されました。よって、これ以降の記事は取り下げます。

『ライザのアトリエ』トリロジーDX到着。

今回の日記は

  • ライザのアトリエトリロジーDX到着。
  • ゲームパッド新調。
  • ヘッドセット新調。

この3のみです。

手順書による状況のコントロール。(切り戻しの重要性)

前にも述べた『むこうぶち』の江崎のこの言葉。

「船が陸にたどり着く寸前に生憎の嵐…… どうすればいいと思います?
いったん沖に引き返すんですよ
船ってのは水に浮かぶようにできているんです
無闇に上陸を焦って座礁する事が一番怖い」

この言葉が持つ意味を手順書の「切り戻し」により、改めて掘り下げていきます。

そもそも切り戻しとは?

  • アップデートの不具合
  • バグの確認
  • 機能追加/削減
  • オペレーションミス

等によって起きた障害・サービスダウンを「無かったことにする」技術全般です。Linuxサーバで言うならば

  1. 設定ファイルを元に戻す
  2. DBを元に戻す

等による、逆転時計(タイムターナー)のような存在です。これは、ITの最大のメリットと言ってもいい技術。医療や建築のような「不可逆性」を“ある程度”緩和してくれます。

「破滅は、常に隣にある」

これは、物流・メーカー・医療・その他諸々の業界の方には釈迦に説法でしょう。

  • どんな安全策を講じても、予測不能なリスクは必ず発生する。
  • たった一つの『バグ』や、人間の『思い込み』で、破滅に直結するような、壊滅的な暴走を引き起こす。

は、予測不能なリスクを奇跡的な幸運から乗り切ったから言える生存バイアスです。

このような、予測不可能なミスを少しでも減らし、起きてしまったことを「無かったことにする」技術が、バックアップからの切り戻しです。

ちょっとした具体例

https://barrel.reisalin.com/books/950a4/page/mysql

こちらでも少し触れている「Webアプリで不具合が発生した際の切り戻し」の方法。

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

等としてバックアップを取っておき、

mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

で戻す。多くのシングル構成のDBは(つまり、個人運用程度であれば)これで復旧するパターンがほとんどです。筆者はサーバ移行や「やっちまった」時のリカバリのほとんどをこれで復旧させることができました。

この切り戻しをどうやって組み込んでおくのか

これが、「手順書によるコントロール」に他なりません。

  1. 大きな作業を伴う作業は「元に戻す」手順を先に作る。
  2. 切り戻しを鑑みて全体の手順を作る

という、一種の逆順処理を取ります。筆者が紹介した手順において

  • 確認する
  • 照合する

を含めるのは、「何かあったときに元に戻せる」を確実にするためです。

「行ってこい」の精神であればここまではやりませんし、やる必要はありません。しかし、情報という価値あるものを「維持する」ためにも戻り道という名のPoint of Returnable(回帰可能点)を随所に作っておくための確認、照合は必要なのです。

「コントロール(Control)」の語源について

こちらを言及した方がよりよいでしょう。

「control」が現在の「制御する」「管理する」といった意味になるまでの主な流れは以下の通りです。

  1. 中世ラテン語: contrā-rotulus
    contrā-(反対の、対照の)と rotulus(巻物、帳簿、リスト)が合わさった言葉です。
    文字通りの意味は「対照リスト」、具体的には「(会計などを)チェックするための二重帳簿」を指しました。
  2. 古期フランス語: contreroller
    ラテン語が古期フランス語に取り入れられ、「(対抗手段として)登録する」「照合する」という意味で使われるようになりました。
    二重の記録を照らし合わせる行為は、不正がないか確認し、管理・監督することにつながります。
  3. 英語 (中世): controllen
    古期フランス語から中世英語に入り、「帳簿をチェックする」「正式な記録で確認する」という意味を経て、「権威をもって監督する」「指揮する」といった現在の「管理・制御」の意味へと広がっていきました。

この流れから、「control」のコアな概念は、記録を照合して物事を正しくチェックし、それに基づいて物事を支配・管理するという点にあることが分かります。

拙稿でも述べた「Manual」の語源が「手を動かす」から来るように、「Control」の語源は記録することにあります。

まとめ

いくらバックアップがあるから安心はできるといっても、それは両翼の片方に過ぎません。このバックアップでどうやって「破滅を回避するか」というもう一つの翼を担うのが「切り戻しの手順」というお話。

この姿勢を貫くためにも、筆者は“片羽の妖精”ことラリー・フォルクのこの言葉を目につくところに掲げて自らの戒めとしています。

Those who survive a long time on the battlefield start to think they are invincible. / 不死身のエースってのは戦場に長く居たものの過信だ。
I bet you do too, buddy. / お前のことだよ相棒。
――Ace Combat Zero

「手順(Manual)」を作ろう。「技術の言語化と言語の行動」

趣味の延長でも手順は必要

筆者はサーバ運用の、ほぼすべてを手順化しています。

「なぜ、趣味の一環なのにプロのような手順を設けているのか」を疑問に持った方もいるでしょう。

これに関しての理由付けを示します。

「未来の自分が慌てないため」

これに尽きます。私の性格上、一度躓いた作業は二度目以降も同じところで詰まります。

「この私なら絶対にやらかす」

という、自分の信頼のなさへの信頼感があるため、

  • 注意すべきポイント
  • 何を持って「完了」とするのか
  • “やらかした”場合のリカバリ方法は?

などのPoint of No Return (回帰不能点)を少しでも減らすための強力なアンカーとしてマニュアルを作成しています。

特に、障害というやつは「起きてほしくないタイミングで起きる」から障害なのですから。

歴史的意義。

そもそも「マニュアル(Manual)」とは、ラテン語の「manus(手)」という単語に由来しています。

元々は「手を使う」「主導の」と言った意味の形容詞でしたが、そこから派生して「手引き」や「取扱説明書」といった名詞の意味で使われるようになりました。

  • management
  • manufacture
  • manicure

なども、すべて同じ語源から来ており、「手」に関する言葉となっています。

古代ローマと「マニュアル」

古代ローマ軍が規格外の強さを誇った背景には、「行動が全てであり、一定の標準的機能の遂行が勝敗を決定する」という思想があったとされています。

  • 古代ローマ軍の強さは、厳格な軍規と徹底した訓練によって支えられていました。
  • 膨大な数の兵士と多岐にわたる任務を効率的かつ確実に遂行するためには、経験や感覚に頼るのではなく、手順や規範を統一し、共有することが不可欠でした。
  • この技術や行動の「言語化・共有化」は、現代でいう標準化やマニュアル化の考え方につながるものであり、古代ローマの軍事的な成功の重要な源泉の一つであったと言えます。

特に、古代ローマ軍の圧倒的な強さは「各人が優れた土木技術者であり、野営のみならず街を作ることすら可能だった」ことにも現れています。

各軍人が軍事技術だけではなく土木技術の手引き書も共有化されていたからでした。

つまり

マニュアル通りとは、漫画や小説で言う

  • 融通が利かない人
  • 堅物

という意味ではないと筆者は考えます。むしろ「想定外の出来事が起きたとしても標準以上の行動ができるための引き出し」として定義しています。

マニュアルを作る意義

技術の言語化

  • どの要素を組み込んだから上手くいったのか
  • 何が元で失敗したのか
  • これを「同じ轍を踏まないようにするためには?」

など、すべての人が生み出した技術は言語化される余地があります。この言語化というやつは「自分の意を伝える」「相手の意をくみ取る」の両方で必要であり、他者からのフィードバックをもらうための最高の機会となります。

詰まったところの確認

失敗した部分のロギングです。

「マニュアルのどこが行けなかったのか?」を確認することで、すっ飛ばしたところや、怠った事による裏目がすべて結果となって現れます。

では、具体的なものを。

以下、筆者が過去に行った「Ubuntuサーバにスワップを設定する」手順です。ここで、実際にどのような点に気をつけてマニュアルを作っていったかを解説します。

https://barrel.reisalin.com/books/linux/page/vpsswap
### 環境

- Ubuntu 24.04
- 4GBメモリ/80GBディスクのインスタンスを利用

### さっくりとした手順

1. 現在のメモリとディスク容量を確認します。
1. Swap領域を確保します。
1. 確保したSwap領域を有効化します。
1. Swap領域が増えたことを確認します。
1. fstabを修正します。
1. fstab修正後にシステムを再起動し、Swap領域有効化を確認します。
  1. ここで環境を定義するのは「スタート地点が明確でないと明後日の方向に行ってしまうから」です。既に設定されている場合は作業をする必要が無いという目安になります。
  2. さっくりとした手順を記すのも、「だいたいの時間の見積もり(Estimated Time of Arrival)」を取るためです。これにより、いつ行うべきか、どのぐらいの工数を取るべきかの目安となります。
#### 作業の前に

ディスク起動時のオプションなど、特に重要なシステム領域の設定ファイルを修正する作業です。
失敗時に復旧できるようシステム全体のバックアップを取ることを強く推奨します。

これは、先に挙げたPoint of No Return (回帰不能点)を「Point of Returnable (回帰可能点) 」とするためのおまじないです。最悪の事態を挙げておくことで、もしもの時に備えます。

#### 現在のメモリ情報を確認

- メモリ情報を確認


free -h

-hオプションは(human readable)の略だそうです

- 実行結果

               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       450Mi       2.9Gi       2.5Mi       688Mi       3.4Gi
Swap:             0B          0B          0B


Swapが全く作成されていません。

#### 現在のディスク容量の確認

- 要領確認


df -h


- ○実行結果


Filesystem      Size  Used Avail Use% Mounted on
/dev/root        78G  5.0G   73G   7% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           784M  980K  783M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda15      105M  6.1M   99M   6% /boot/efi
tmpfs           392M   12K  392M   1% /run/user/1001


容量は問題ありません。実メモリと同じ4GBの領域を作ります。

と、作業の前の確認を行います。Markdownの判定で省いていますが、

1コマンド1ブロック というルールを遵守するように筆者は心がけています。

それがたとえ、参照するための

free -h

であってもです。この、最初の一歩を確認できない場合は

sudo rm -rf ./*

などの重要で致命的なコマンドも疎かにしてしまうからです。

#### Swap領域の確保

- Swap領域作成

sudo fallocate -l 4G /swap

- ファイル作成確認


ls -ldh /swap


指定ディレクトリに4GBのファイルがあることを確認します。

#### Swapの有効化

- /swapのパーミッション変更


sudo chmod 600 /swap


- パーミッション変更確認


ls -ldh /swap

rootのみが読み書き可能なことを確認します\

#### /swapの設定

- Swap領域作成


sudo mkswap /swap


- 実行結果


スワップ空間バージョン 1 を設定します。サイズ = 4 GiB (4294963200 バイト)
ラベルはありません, UUID=08cf06da-757e-4ab4-b049-e7da8ee73341


 ★/swapの有効化


sudo swapon /swap


#### Swap有効化確認

- メモリ情報確認

free -h

- ○実行結果


               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       446Mi       2.9Gi       2.5Mi       689Mi       3.4Gi
Swap:          4.0Gi          0B       4.0Gi


4GBのSwap領域が確保されました。

ここで、作業手順を一気に書きます。ここでも、一つ一つの確認を行うことで、「すっ飛ばしたときのリカバリー」を容易にしています。

#### fstab設定

- /etc/fstabのバックアップ


sudo cp -pi /etc/fstab /path/to/backup/directory/fstab.$(date +%Y%m%d)


- バックアップ作成確認


diff -u /path/to/backup/directory/fstab.$(date +%Y%m%d) /etc/fstab 


差分が無いことでバックアップが取れていることを確認します。

- /etc/fstab追記


cat <<- __EOF__ | sudo tee -a /etc/fstab
/swap none swap sw 0 0
__EOF__


- 差分確認


diff -u /path/to/backup/directory/fstab.$(date +%Y%m%d) /etc/fstab

- 差分


+/swap none swap sw 0 0

ここでは、「単にスワップを作成しただけでは終わらない」というLinuxのファイルシステムに言及しています。この/etc/fstabはディスク全体を司るテキスト群。そのため、

  • バックアップ
  • 実施時のオペレーションを確実に減らすためのteeによる追記
  • 追記後のdiffによる確認

と、「実際に作業を行ったか」を感覚では無くコマンドという冷静で絶対的な眼として確認します。

#### 再起動後の修正確認

- システム再起動


sudo reboot

- 再起動後の確認

以下が確認できれば作業完了です。

1. サーバにログインできること
1. Webサービスなど既存システムが設定前と同様に稼働すること
1. free -h を実行し、Swap領域が確保されていること

ここで、最終確認を行います。rebootを実施するのは、それだけシステム全体に関わる作業を行うからです。

ここまでやって

ようやく筆者の「標準」といえる手順書が作成されました。まぁ、最初にここまでやるというのは酷な話ではあると思いますが

  1. まずは非常に簡単な手順書を作る。それこそsystemctl status apache2.servicesudo systemctl restart apache2.service程度で構いません。
  2. そこから一つずつ発展させていく

と、ある程度の段階を積んでいくことが、より確実な手順と言えます。

最後にもう一つ

「自分で作った手順書が有効かどうか、第三者に実際に行ってもらう」手法は極めて有効です。

その手順書で失敗してしまったら → 確実に作成した自分自身の責任です。

この、言語化・共有化というのは「間違った手段も共有される可能性がある」からです。私もそうならないよう気をつけますが、

『超電磁マシーン ボルテスV』の

岡長官
 「そんな杓子定規な」
左近寺博士
「杓子結構、定規賛成」

という、割とガチめの引用で以て本稿を締めくくります。

Page 4 of 277

Powered by WordPress & Theme by Anders Norén