2014-12-15 02:59:25 +0000 2014-12-15 02:59:25 +0000
17
17
Advertisement

Raspberry Piで起動時にどのサービスが動作するかを見分けるには?(ラズビアン)

Advertisement

起動時に動作するサービスがいくつかありますが、どうやって設定したのか忘れてしまいました。サービスの動作を変更したい場合、どのようにすればいいのでしょうか? 例えば、起動時にサービスが起動しないようにしたいとか、別の方法で起動させたいとか。

具体的には、起動時に正常に動作するopenvpnサービスを持っているのですが、いくつかのチュートリアルによると、ファイル共有プログラムのサービスをvpn自体に結びつけて、vpnがダウンした場合にファイル共有サービスもダウンするようにすべきだと書かれています。しかし、おそらく私は、VPN の自動実行が物事を複雑にしていると思うので、VPN を無効にするか、起動方法を変更するべきだと思います。しかし、どのように確認するには?

Advertisement
Advertisement

回答 (3)

23
23
23
2014-12-16 14:49:09 +0000

私の知る限りでは、まだ systemd に移行していない raspian を使っている Raspberry をお持ちだと思います。この場合の答えは以下のようになります。

EDIT: systemd(Jessie以降)の場合は、一番下のを参照してください。

まず、どのシステムがcurrently実行されているかはコマンドで判断できます。

sudo service --status-all

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

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

+ は実行中のサービス、- は実行中ではないサービス、status をコマンドとして使用できない _?

質問に戻ると、Linuxにおけるrunlevelsを理解する必要があります。ランレベル(0-6 + S)は、どのサービスを実行するか/しなければならないかを識別します。ブートシーケンスは初期のランレベル (/etc/inittab で指定されています。私の Raspberry では

# The default runlevel.
 id:2:initdefault:

この行は 2 と識別しています) から、ディストロ標準の最終ランレベル (2 から 5 まで) に進みます。現在のランレベルは

# runlevel
 N 2

というコマンドで識別します (私の場合はヘッドレスサーバ)。

# Runlevel 0 is halt.
 # Runlevel 1 is single-user.
 # Runlevels 2-5 are multi-user.
 # Runlevel 6 is reboot.

シングルユーザ(1)は、しばしば S として識別されます。この進行で起動したサービスを見つけるには、コマンドを実行します。

# 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-Start サービスがなければ、問題のサービスは失敗しますが、代わりに Should-Start サービスがなければ、一般的な失敗はありません。同様のことが、Required-Stop と Should-Stop で停止時にも起こります。

SYSTEMD .

systemctl list-unit-files

全てのサービスをリストアップするコマンドは

systemctl list-unit-files | grep enabled

で、多くの情報を吐き出します。起動時に起動されている enabled サービスをすべて選択するには、上記のコマンドを以下のように grep してください。

systemctl list-unit-files --type=target

私はこのコマンドを systemctl list-units よりも好きです: 違いは、systemctl list-unit-files は、masked (masked) (つまり、手動でも起動してはいけないとされているもの) や、static と呼ばれる、起動しないものを含めて、インストールされているすべての***サービスを表示します。言い換えれば、私が提案したコマンドは、activeサービスのみをリストアップするコマンドよりも、より包括的なものです。

NB : systemd は以前の init システムとは大きく異なります。特に、runlevelsではなく、targetsを持っています。runlevels_は互換性の理由からまだ存在しており、

$ systemctl get-default
  graphical.target

で利用可能な全てのターゲットをリストアップすることで特定のターゲットとして見ることができますが、

0x1&

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

8
8
8
2015-04-09 19:26:26 +0000

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

sudo apt-get install rcconf

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

sudo rcconf
``` テキストUIで使用するのは非常に簡単です。
3
Advertisement
3
3
2014-12-15 11:09:00 +0000
Advertisement
sudo nano /etc/rc.local

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

Advertisement

関連する質問

6
10
5
37
5
Advertisement
Advertisement