web-dev-qa-db-ja.com

Raspberry Piの起動時にどのサービスが実行されているかを知る方法は? (ラズビアン)

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

特に、起動時に正常に実行されるopenvpnサービスを利用していますが、いくつかのチュートリアルでは、ファイル共有プログラムのサービスをvpn自体に結び付ける必要があるとしています。しかし、私はおそらく私のVPNの自動実行が物事を複雑にしていると思うので、私はそれを無効にするか、起動方法を変更するべきです。しかしどのように確認するのですか?

16
user1502186

私はあなたがラズベリーを使っているラズベリーを持っていると仮定しています、それは私の知る限りではまだsystemdに移っていません。この場合、答えは以下の通りです。

編集:systemd(Jessie以降)については、一番下の を参照してください。

最初に、あなたはどのシステムが現在実行されているかを次のコマンドで判断することができます。

  Sudo service --status-all

このようなリストが得られます。

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

+のは実行中のサービス、- のサービスはnot実行中、?のサービスは可能なコマンドとしてstatusを許可しない:これらは主にコマンドであり、常に実行する必要はありません。

質問に戻るには、Linuxのrunlevelを理解する必要があります。ランレベル(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人のユーザー(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の行は、問題となっているサービスのハードとソフトの依存関係を定義します、ie services which must runと should run検査中のサービスの前。 Required-Startサービスがなければ、問題のサービスは失敗します。Should-Startサービスがなければ、一般的な失敗はありません。おそらくいくつかの便利な機能がないだけです。 Required-StopとShould-Stopの場合も同様です。

_ systemd _

すべてのサービスを一覧表示するコマンドは

systemctl list-unit-files

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

 systemctl list-unit-files | grep enabled 

私はsystemctl list-unitsよりもこのコマンドの方が好きです。違いは、systemctl list-unit-filesが表示されるのに対して、OSが必要と考えるOSだけが表示されるということです。 all インストールされているサービス、maskedie開始されることはない、手動でも実行されないもの)、および not activateはstaticと呼ばれます。言い換えれば、私が提案したコマンドはactiveサービスのみをリストしたものよりも包括的です。

_ nb _ :systemdは以前のinitシステムとは大きく異なります。特に、runlevelsはありませんが、targetsはありません。 runlevelsは互換性の理由からまだ存在しており、利用可能なすべてのターゲットを一覧表示することで特定のターゲットと見なすことができます

systemctl list-unit-files --type=target

現在のターゲットを見ることができます。

$ systemctl get-default
  graphical.target

詳しくは、 DigitalOceanの優れた紹介ページ をお読みください。

22
MariusMatutiae

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

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

Sudo apt-get install rcconf

そしてテキストUIでそれを使うのはとても簡単です

Sudo rcconf
8
jjurm
Sudo nano /etc/rc.local

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

3
Hexark