Как перезапустить службу

Как перезапустить службу на Raspbian?

С большинством дистрибутивов Linux, которые я использовал, это просто:

sudo service <name> restart

Но когда я пытаюсь запустить:

sudo service ssh restart

на Raspbian, он висит бесконечно. У Raspbian есть нестандартный способ взаимодействия с сервисами?

Изменить: Запуск sudo top -c показывает, что процесс /sbin/init, принадлежащая root, потребляет 100% процессор. Если я убью это, команды службы возвращаются немедленно, но с сообщением об ошибке, например:

[raspberrypi] out: Warning! D-Bus connection terminated.
[raspberrypi] out: Failed to wait for response: Success

Почему /sbin /init ведет себя таким образом?

5 голосов | спросил Cerin 13 J0000006Europe/Moscow 2016, 18:00:06

2 ответа


3

Я думаю, что ваша проблема может заключаться в том, что вы подключаетесь к Pi через ssh и ожидаете его перезагрузки, проблема в том, что при перезапуске процесса ssh ваше ssh-соединение с этим самым процессом нарушается. Если это не так, и вы фактически физически подключены к Pi с монитором и клавиатурой, то, пожалуйста, уточните, что вы видите, когда оно висит?

ответил Mohammad Ali 13 J0000006Europe/Moscow 2016, 19:12:42
3
  

С большинством дистрибутивов Linux, которые я использовал, это просто sudo service <name> restart ...

Это связано с тем, что многие или большинство дистрибутивов linux происходят из Debian , который традиционно использовал «UNIX System 5 "(aka. SysV) init system . Фактически, если вы вернетесь достаточно далеко, все linux-дистрибутивы используют эту систему.

Я не уверен, была ли команда service частью оригинальной инициализации SysV или было удобство, созданное Debian, но он, конечно, длится довольно долго и распространяется по всему семейству дэвов Debian.

Однако примерно десять лет назад дистрибутивы Linux начали отходить от системы init, которая все чаще считалась неэффективной и устаревшей в различных аспектах. Это включает Ubuntu, который в итоге вышел с выскочкой и Redhat /Fedora и производными, которые разработали systemd (где «d» для демона).

В конце концов, Ubuntu решил отказаться от выскочки в пользу systemd, а Debian сделал то же самое в версии 8, обесценив SysV. Raspbian, операционная система, преимущественно используемая на Pi, является очень близким производным от Debian, использует ту же нумерацию версий и т. Д. (Поэтому первая версия Raspbian была 7, а не 1), и, следовательно, теперь она также переключилась на Systemd.

Команда service должна продолжать работать , поскольку Debian сохранил совместимость версии 8 (jessie) в этот смысл, но вы можете попробовать вместо этого использовать методологию systemd:

sudo systemctl restart <name>

Обратите внимание на команду (restart) и имя службы инвертируется. Кроме того, это, вероятно, не даст никакого вывода, но указывает на успешность или неудачу через статус выхода (echo $?; ничего, кроме 0 означает сбой) , Вы можете получить некоторую информацию о том, как все прошло: 1

systemctl status <name>

Нет sudo требуется, насколько я когда-либо заметил. Должно быть время, указывающее, когда служба была остановлена ​​и запущена снова, и будет очень ясно, работает ли она или не удалось ли она. В последнем случае обычно описывается ошибка. Обратите внимание, что «мертвая» служба не обязательно терпит неудачу, она просто означает, что она сделала то, что она должна была сделать, а затем выйти.

Я считаю, что для этого лучше справиться с проблемным сервисом, который висит service.


1. У меня предложение здесь о том, как упростить эту проблему.

ответил goldilocks 13 J0000006Europe/Moscow 2016, 19:13:18

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132