起動スクリプトのさまざまな失敗の終了コード

起動スクリプトのさまざまな失敗の終了コード

私はArch Linuxのインストールを実行しており、systemdサービスが実行されています/etc/rc.local。 macOSでrc.localdmesg -D/Volumes

スクリプト内の各コマンドに対してrc.localスクリプトが失敗したかどうかをテストし、コマンドラインに対応する数字で終了します。したがって、ファイルの断片(私の形式を記憶するように調整されています)は次のようになります。

#!/bin/bash

dmesg -D || exit 1
i=2
for name in usb sd
do
    mkdir -p /mnt/${name} || exit ${i}
    i=$((i+1))
done
sysctl -w kernel.kptr_restrict=2 || exit 4

exit 0

これは少し暗く、終了コードをスクリプト割り当てに制限する必要があるという印象を受けましたが、終了値が印刷されるため、rc-local.servicesystemdサービスが失敗した理由を確認する方法を知る唯一の方法です。 systemd /が文字列などを渡すなど、失敗した理由に関する情報を受け取るようにsystemctl status rc-local.serviceコーディングする他の方法はありますか?その後、入力すると文字列が次のように表示されることがわかります。rc.localrc-local.servicerc.localsystemctl status rc-local.service

Error reason: Failed to set kernel.kptr_restrict

ベストアンサー1

失敗(ゼロ以外の終了コード)のため、コマンド(またはコマンドが競合する場合はシェル)はエラーを印刷する必要があります。

systemd はこれらのエラーメッセージをシステムログに記録します。利点systemctl statusは、サービスの最新のログ行を表示することです。

http://0pointer.net/blog/projects/systemctl-journal.html

systemctl status編集:syslogはroot()として実行するか、sudoグループのメンバーである場合にのみ読み取ることができます。admsystemd-journal

おすすめ記事