According to
How to read "service --status-all" results
service --status-all
list the running services with [+]
. On the other hand, you can check the status of a service with
service <name> status
Now both commands list the service apache-htcacheclean
for me
differently.
✗ ✗ sudo service apache-htcacheclean status
● apache-htcacheclean.service - Disk Cache Cleaning Daemon for Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache-htcacheclean.service; disabled; vendor preset: enabled)
Active: inactive (dead)
✗ ✗ sudo service --status-all
[+] acpid
[-] alsa-utils
[-] anacron
[+] apache-htcacheclean
[-] apache2
[+] apparmor
Why is that, what is correct now or have I overlooked anything?
Решение
Перевод с: https://forum.ubuntuusers.de/topic/laufender- service-ja-oder-nein /
Это очень хороший пример того, почему вы не должны использовать сервис
команда с
systemd
(и, следовательно,systemctl
).Вы можете посмотреть исходный код команды
service
(/ USR / SBIN / услуги
). С опцией- status-all
этот скрипт изменяется на/etc/init.d
и выполняет каждый исполняемый файл, расположенный там с предварительно определенная среда и статус аргумента. Из этого вызов, возвращаемое значение и выходные данные сохраняются.Служба получает маркер
[+]
, если возвращаемое значение выполнено Программа имеет значение0
, а длина записанного выхода не равна нулю. Перед что проверяется, содержит ли вывод исполняемого файла использование строки:
(верхний и нижний регистры игнорируются) для использования маркер[?]
поставить. Для всех остальных случаев результат будет[-]
.Теперь пример:
/etc/init.d$ ls
acpid console-setup.sh grub-common lvm2 mdadm-waitidle plymouth-log ssh
apache2 cron hwclock.sh lvm2-lvmetad networking procps udev
apache-htcacheclean cryptdisks irqbalance lvm2-lvmpolld nfs-common rpcbind ufw
apparmor cryptdisks-early iscsid lxcfs open-iscsi rsync uuidd
apport dbus keyboard-setup.sh lxd open-vm-tools rsyslog
atd ebtables kmod mdadm plymouth screen-cleanup
/etc/init.d$ ./apache-htcacheclean status
* apache-htcacheclean is not running
/etc/init.d$ echo $?
0
Если вы спросите службу напрямую о статусе службы, она будет вместо того, чтобы пройти через systemctl, который затем может дать гораздо больше правильный ответ.