私の知る限りでは、まだ systemd に移行していない raspian を使用した Raspberry をお持ちだと思います。 .この場合、答えは次のとおりです。
編集:systemd (Jessie 以降) については、下部を参照してください .
まず、どのシステムが現在使用されているかを判断できます コマンドによる実行:
sudo service --status-all
次のようなリストが表示されます:
[ + ] triggerhappy
[ + ] udev
[ ? ] udev-mtab
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] urandom
[ + ] vsftpd
[ + ] weewx
[ - ] x11-common
+ 実行中のサービスを示します。-'s サービスしない 実行中、? の ステータスを許可しないサービス 可能なコマンドとして:ほとんどの場合、常に実行する必要はなく、たまに実行する必要があるコマンドです。
質問に戻るには、ランレベルを理解する必要があります Linux では。ランレベル (0-6 + S) は、実行できる/実行する必要があるサービスを識別します。ブート シーケンスは、初期ランレベル (/etc/inittab で指定) から進行します。 、私のラズベリーで
# The default runlevel.
id:2:initdefault:
この行はそれを 2 として識別し、ディストリビューション標準の最終ランレベル (2 から 5) に進みます。コマンドを使用して現在のランレベルを識別します
# runlevel
N 2
(私の場合、ヘッドレスサーバー)。他のランレベルは (再び é/etc/inittab* から):
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
1 人のユーザー (1) は、多くの場合、S としても識別されます。
したがって、通常のブートでは、2 から開始し、5 まで進みます。この進行で開始されたサービスを見つけるには、次のコマンドを発行します。
# grep -nrI Default-Start /etc/init.d
umountroot:7:# Default-Start:
checkroot.sh:8:# Default-Start: S
kbd:6:# Default-Start: S
isc-dhcp-server:11:# Default-Start: 2 3 4 5
mountkernfs.sh:7:# Default-Start: S
hostname.sh:7:# Default-Start: S
mountnfs.sh:7:# Default-Start: S
halt:6:# Default-Start:
dphys-swapfile:20:# Default-Start: 2 3 4 5
bootlogs:7:# Default-Start: 1 2 3 4 5
rc.local:6:# Default-Start: 2 3 4 5
hostapd:9:# Default-Start: 2 3 4 5
keyboard-setup:8:# Default-Start: S
lightdm:7:# Default-Start: 2 3 4 5
procps:11:# Default-Start: S
mysql:9:# Default-Start: 2 3 4 5
single:6:# Default-Start: 1
vsftpd:7:# Default-Start: 2 3 4 5
samba:7:# Default-Start: 2 3 4 5
mountall.sh:6:# Default-Start: S
weewx:20:# Default-Start: 2 3 4 5
umountnfs.sh:7:# Default-Start:
triggerhappy:6:# Default-Start: 2 3 4 5
ifplugd:24:# Default-Start: 2 3 4 5
alsa-utils:9:# Default-Start: S
bootmisc.sh:7:# Default-Start: S
sendsigs:6:# Default-Start:
console-setup:7:# Default-Start: S
nfs-common:7:# Default-Start: 2 3 4 5 S
checkroot-bootclean.sh:6:# Default-Start: S
rsyslog:7:# Default-Start: 2 3 4 5
x11-common:7:# Default-Start: S
mountdevsubfs.sh:7:# Default-Start: S
cron:10:# Default-Start: 2 3 4 5
mountnfs-bootclean.sh:6:# Default-Start: S
mountall-bootclean.sh:6:# Default-Start: S
screen-cleanup:11:# Default-Start: S
udev:6:# Default-Start: S
ssh:7:# Default-Start: 2 3 4 5
haveged:8:# Default-Start: 2 3 4 5
hwclock.sh:26:# Default-Start: S
plymouth:9:# Default-Start: 2 3 4 5
motd:7:# Default-Start: 1 2 3 4 5
killprocs:6:# Default-Start: 1
networking:6:# Default-Start: S
fake-hwclock:9:# Default-Start: S
udev-mtab:6:# Default-Start: S
apache2:6:# Default-Start: 2 3 4 5
reboot:6:# Default-Start:
umountfs:6:# Default-Start:
plymouth-log:9:# Default-Start: S
openvpn:11:# Default-Start: 2 3 4 5
kmod:8:# Default-Start: S
ntp:7:# Default-Start: 2 3 4 5
rpcbind:9:# Default-Start: S 2 3 4 5
urandom:6:# Default-Start: S
rmnologin:6:# Default-Start: 2 3 4 5
checkfs.sh:7:# Default-Start: S
sudo:8:# Default-Start: 2 3 4 5
mtab.sh:6:# Default-Start: S
dbus:6:# Default-Start: 2 3 4 5
rsync:8:# Default-Start: 2 3 4 5
これにより、Default-Start で始まる行が出力されます /etc/init.d/ 内のすべてのファイル 、さまざまなサービスを識別するファイルが保持される場所です。問題の行は、各サービスが開始されるランレベルを識別します。サービスがランレベル N で開始された場合、システムが N+1 に進んだときに再度開始する必要はありませんが、実行されていないことが判明した場合は開始されます。
これにより、サービスが開始されるさまざまな段階を正確に把握できます。ただし、同じランレベル内で、行 Required-Start と Should-Start は、問題のサービスのハード依存関係とソフト依存関係を定義します。つまり しなければならないサービス 実行し、すべき サービスが検査される前に実行されます。 Required-Start サービスがなければ、問題のサービスは失敗します。Should-Start サービスがなければ、一般的な障害はなく、おそらくいくつかの便利な機能が不足しているだけです。 Required-Stop と Should-Stop を使用した停止でも同じことが起こります。
SYSTEMD :
すべてのサービスを一覧表示するコマンドは
ですsystemctl list-unit-files
多くの情報を吐き出します。 有効なすべてのサービスを選択するには 、つまり 、ブート時に開始されるものは、次のように上記のコマンドを grep するだけです:
systemctl list-unit-files | grep enabled
systemctl list-units よりもこのコマンドの方が好きです :違いは、これは OS がメモリに持っているサービスのみを表示することです =OS が必要と考える)、一方 systemctl list-unit-files すべてを表示します マスクされたものを含む、インストールされたサービス (つまり 手動でさえも開始されないもの)、およびしないもの static と呼ばれるアクティブ化 .つまり、私が提案したコマンドは、active のみをリストするコマンドよりも包括的です。 サービス。
注意 :systemd は以前の init システムとは大きく異なります。特に、ランレベルがありません 、しかしターゲット . ランレベル 互換性の理由からまだ存在しており、
経由で利用可能なすべてのターゲットを一覧表示することで、特定のターゲットとして表示できます。systemctl list-unit-files --type=target
を使用して現在のターゲットを確認できます。
$ systemctl get-default
graphical.target
詳細については、DigitalOcean の優れた紹介ページをご覧ください。
Raspberry Pi での簡単なスタートアップ サービス管理には、ツール rcconf
をお勧めします . /etc/init.d/
で簡単にサービスのオン/オフを切り替えることができます .それらが有効になっていて、起動時に実行されるかどうかも確認できます。
ツールをインストールするには
sudo apt-get install rcconf
また、テキスト UI で使用するのは非常に簡単です
sudo rcconf
sudo nano /etc/rc.local
ここに、ブート時に実行するバッチ ファイルまたはコマンドを挿入します。私もブート時に Openvpn を自動実行します :)