現在実行中のサービスを特定する必要がありますが、service --status-all
を実行した結果がわかりません。つまり、?、-、および+平均?
$ service --status-all
[ + ] acpid
[ + ] anacron
[ + ] apparmor
[ ? ] apport
[ ? ] atieventsd
[ + ] avahi-daemon
[ ? ] binfmt-support
[ + ] bluetooth
[ - ] brltty
[ + ] console-font
[ + ] console-setup
[ + ] cron
[ + ] cups
[ + ] cups-browsed
[ - ] dbus
[ ? ] dns-clean
[ + ] friendly-recovery
[ - ] grub-common
[ ? ] irqbalance
[ - ] kerneloops
[ ? ] killprocs
[ + ] kmod
[ ? ] lightdm
[ - ] lm-sensors
[ ? ] mysql
[ ? ] networking
[ ? ] ondemand
[ ? ] pppd-dns
[ - ] procps
[ - ] pulseaudio
[ ? ] rc.local
[ + ] resolvconf
[ + ] rfkill-restore
[ + ] rfkill-store
[ - ] rsync
[ + ] rsyslog
[ + ] saned
[ ? ] sendsigs
[ + ] setvtrgb
[ ? ] speech-dispatcher
[ - ] Sudo
[ + ] timidity
[ + ] udev
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] unattended-upgrades
[ - ] urandom
[ + ] virtualbox
[ - ] x11-common
そして、このコマンドをSudoで実行すると違いが生じますか?私はそれを試してみましたが、私の場合は違いはありませんでしたが、他のセットアップでは異なる場合がありますか?
service --status-all
の出力には、System V
によって制御されるサービスの状態がリストされます。
+
はサービスが実行されていることを示し、-
は停止されたサービスを示します。これを確認するには、service SERVICENAME status
および+
サービスに対して-
を実行します。
一部のサービスはUpstart
によって管理されます。 Sudo initctl list
を使用して、すべてのUpstart
サービスのステータスを確認できます。 Upstart
によって管理されるサービスは、service --status-all
によって提供されるリストにも表示されますが、?
でマークされます。
参照:man service
マンページには記載されていませんが、ソースを簡単に見ると最初の推測が確認できます。
+
:サービスは実行中です-
:サービスは実行されていません?
:サービスの状態を判別できません(何らかの理由で)。実際のコード :
if ! is_ignored_file "${SERVICE}" \
&& [ -x "${SERVICEDIR}/${SERVICE}" ]; then
if ! grep -qs "\(^\|\W\)status)" "$SERVICE"; then
#printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2
echo " [ ? ] $SERVICE" 1>&2
continue
else
out=$(env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
if [ "$?" = "0" -a -n "$out" ]; then
#printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running"
echo " [ + ] $SERVICE"
continue
else
#printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running"
echo " [ - ] $SERVICE"
continue
fi
fi
#env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status
fi
条件は次のとおりです。
status
コマンドをサポートしていない場合、状態は?
です。status
引数付き)の終了ステータスがゼロおよび出力が空でない場合、状態は+
です。-
です。+
はサービスがアクティブ/実行中、-
は非アクティブ/停止中、?
はコマンドが最終的にアクティブかどうかを決定できないことを意味すると思います。サービスには、サービススクリプトにstatus
コマンドがありません。 service --status-all
コマンドは、利用可能なすべてのサービスに対して実際にservice <service-name> status
を実行します。
Sudo
の有無にかかわらず実行すると違いが生じることがわかりました。
/var/run/
の一部のサービスには、rootユーザーのみに読み取りアクセス権があります。これらのサービスのステータスは、Sudo
なしの[-]
、およびSudo
付きの[+]
を示します。