Как точно узнать, когда служба Linux стала неактивной?

Почему бы вам не настроить статический частный IP-адрес в маршрутизаторе, добавив MAC-адреса вашего устройства вместо использования маршрутизатора в качестве DHCP? Если вы это сделаете, вы будете уверены, что они больше не ошибутся с именами хостов. С другой стороны, вы можете добавить строки в свой / etc / hosts , если вы не настраиваете хосты в своем маршрутизаторе или если ваш маршрутизатор не поддерживает другие функции. Вы можете иметь свой / etc / hosts следующим образом:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1           localhost Mac1
255.255.255.255     broadcasthost Mac1
::1                 localhost Mac1
fe80::1%lo0         localhost Mac1
172.16.11.43        Mac2
172.16.11.43        Mac3
172.16.11.43        Mac4
172.16.11.43        Mac5
.
.
.

Это не имеет большого значения, причина, по которой ваш сценарий работает неправильно, зависит от конфигурации вашей сети, а не от сценария или даже от устройств Mac. Вы могли бы написать свой сценарий намного проще, но это нормально. Просто проверьте свою сеть и попробуйте настроить вещи статически, чтобы они могли находить друг друга.

Причина их сбоя в том, что они не используют общедоступные статические IP-адреса, поэтому вам следует убедиться, что вы установили правильные и статические частные, чтобы они могли разрешать имена хостов.


Кстати, если вы хотите, чтобы ваш сценарий продолжался, даже если имя хоста не было разрешено, другой вариант, который может вам помочь, - это использовать и добавить continue в ваш цикл и условные операторы. Поэтому, если он может разрешить X, он проверит, работал ли он более 7 дней или меньше, а если не смог, он продолжит проверку следующего имени хоста и объявит, что X не работает. У вас есть много вариантов, но, как упоминалось ранее, проблема не в вашем помощнике по сценарию. Удачи.

2
20.07.2017, 17:33
2 ответа

Вы можете проверить информацию в системных журналах.

на красной шляпе:

/var/log/messages 

в дистрибутивах на основе Debian:

/var/log/syslog

Вам также следует поискать журналы вашего конкретного сервиса, это может быть что-то вроде

/var/log/<yourservice>.log

Все эти журналы чередуются, поэтому вы можете найти более старую информацию внутри.log.1 и.log.x.gz (вам нужно заархивировать их или использовать zless или vi)

Хороший поиск

0
27.01.2020, 22:39

How to know exactly when a Linux service went inactive?

systemd не регистрируется, когда служба выходит со статусом 0 и переходит в состояние «неактивный (мертвый )» -это отличается от переходов, когда она завершается сбоем, запускается или останавливается :(.

В Fedora 26 я получаю сообщения вроде systemd[1] :Запущен сервер OpenBSD Secure Shell. systemd[1] :Остановлен сервер OpenBSD Secure Shell.

systemd не обязательно регистрирует, когда sshd завершает работу со статусом выхода 0... это то, что ssh и другие демоны, такие как apache, обычно делают для SIGTERM :(. SIGKILL отображается в журнале ctl -u :systemd [1] :ssh.service :Основной процесс завершен, код = убит, статус = 9/KILL.

Однако в RHEL (, например в Fedora ), у вас, вероятно, включен аудит. Это помогло мне

# journalctl --boot=-1 SYSLOG_IDENTIFIER=audit
...
Dec 30 13:51:38 localhost.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
...
Dec 30 13:52:08 localhost.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

fprintd является примером демона, который корректно завершает работу после периода бездействия, что регистрируется только как контрольное сообщение.

0
27.01.2020, 22:39

Теги

Похожие вопросы