Raspberry Piの起動時に実行されるサービスを確認する方法は?(ラズビア語)


17

ブート時に実行されるサービスがいくつかありますが、実際にそれらの設定方法を忘れてしまいました!彼らの活動を変更したい場合、どうすればいいですか?たとえば、サービスを起動時に無効にしたい場合や、別の方法でサービスを開始したい場合があります。

具体的には、ブート時に正常に実行されるopenvpnサービスを使用していますが、一部のチュートリアルでは、vpnがダウンした場合にファイル共有サービスも停止するように、ファイル共有プログラムのサービスをvpn自体に関連付ける必要があります。しかし、おそらくvpnの自動実行は問題を複雑にしているので、無効にするか、起動方法を変更する必要があります。しかし、確認方法は?

回答:


23

Raspianを使用しているRaspberryを持っていると思いますが、私の知る限り、これはまだsystemdに移行していません。この場合、答えは次のとおりです。

編集:systemd(Jessie以降)の場合、下部を参照してください

まず、次のコマンドを使用して、現在実行中のシステムを判別できます。

  sudo service --status-all

次のようなリストが表示されます。

  [ + ]  triggerhappy
  [ + ]  udev
  [ ? ]  udev-mtab
  [ ? ]  umountfs
  [ ? ]  umountnfs.sh
  [ ? ]  umountroot
  [ - ]  urandom
  [ + ]  vsftpd
  [ + ]  weewx
  [ - ]  x11-common

+「sが、サービスが実行されている指示-'sサービスがない、実行している?」sの許可されていないサービスの状態を可能なコマンドとして:彼らはほとんどただ時折、すべての時間を実行する必要はありませんコマンドですが。

質問に戻るには、Linuxのランレベルを理解する必要があります。実行レベル(0〜6 + S)は、どのサービスを実行する必要があるかを特定します。ブートシーケンスは、最初のランレベル(私のRaspberryの/ 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)は、多くの場合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

これにより、/ etc/init.d/内のすべてのファイルのDefault-Startで始まる行が出力されます。ここには、さまざまなサービスを識別するファイルが保持されます。問題の行は、各サービスが開始されるランレベルを識別します。サービスがランレベルNで開始された場合、システムがN + 1に進んだとき、サービスを再度開始する必要はありませんが、実行されていないことがわかった場合は開始されます。

これにより、サービスが開始されるさまざまな段階を正確に把握できます。しかし、同じランレベルの範囲内で、行に必要なスタートべきであり、スタートは当該サービスのためのハードとソフトの依存関係を定義する、すなわち、サービス必要があります実行しなければならないサービスが検討される前に実行します。Required-Startサービスがなければ、問題のサービスは失敗し、Should-Startサービスがなければ、一般的な失敗はなく、おそらくいくつかの有用な機能が欠けているだけです。Required-StopおよびShould-Stopを使用した停止時にも同じことが発生します。

システム化

すべてのサービスをリストするコマンドは

systemctl list-unit-files

これは多くの情報を吐き出します。有効なすべてのサービス、つまり起動時に開始されるサービスを選択するには、上記のコマンドを次のようにgrepします。

 systemctl list-unit-files | grep enabled 

私はこのコマンドをsystemctl list-unitsよりも好みます:違いは、このコマンドはOSがメモリに持っているサービスのみを表示することです= OSは必要と考えます)、systemctl list-unit-filesはインストールされているすべてのサービスを表示ますマスクつまり、手動でも開始しないと想定されるもの)、およびアクティブ化されないもの(静的と呼ばれます)。言い換えれば、私が提案したコマンドは、アクティブなサービスのみをリストするコマンドよりも包括的です。

注意:systemdは、以前のinitシステムとは大きく異なります。特に、ランレベルはなく、ターゲットがあります。ランレベルは互換性の理由からまだ存在し、利用可能なすべてのターゲットをリストすることで特定のターゲットとして見ることができます

systemctl list-unit-files --type=target

現在のターゲットを表示するには、

$ systemctl get-default
  graphical.target

詳細については、DigitalOceanの優れた紹介ページをご覧ください


Raspbian Jessieはを使用していますsystemdが、この答えはまだ機能しているようです。
ZX9 16

1
@ ZX9この古い投稿に注目してくれてありがとう、systemdの編集を追加しました。
MariusMatutiae 16

8

Raspberry Piでの簡単なスタートアップサービス管理には、toolをお勧めしますrcconf。で簡単にサービスのオン/オフを切り替えることができます/etc/init.d/。また、それらが有効になっていて、起動時に実行されるかどうかも確認できます。

ツールをインストールするには

sudo apt-get install rcconf

テキストUIで使用するのは非常に簡単です

sudo rcconf

これはOPに答えません。これは(そして引用します):Raspberry Piの起動時にどのサービスが実行されるかをどのように確認するのですか?(ラズビア語)
MariusMatutiae 16

@MariusMatutiaeそれは、rcconfサービスが有効になっているかどうかを教えてくれるからです。回答を編集して、この特定の種類の情報をツールが表示することを明示的に述べました。
jjurm 16

3
sudo nano /etc/rc.local

ここで、ブート時に実行するバッチファイルまたはコマンドを挿入します。私もブート時にOpenvpnを自動実行します:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.