Вопрос systemctl, как разоблачить


root@gcomputer:~# systemctl status x11-common
● x11-common.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)

Я пытался systemctl unmask x11-common а также systemctl unmask x11-common.service но это ничего не изменило.

Как разоблачить его?


16
2017-07-30 15:49


происхождения




ответы:


Используемые вами команды оба правильные, Смотрите также руководство,

Кажется, unmask команда не работает, когда в системе нет существующего файла блока, кроме символической ссылки на /dev/null, если ты mask службы, то это создает новую символическую ссылку для /dev/null в /etc/systemd/system где systemd ищет файлы модулей для загрузки при загрузке. В этом случае нет реального файла.

У других, похоже, есть аналогичные проблемы

x11-common.service также была замаскирована в моей системе. Вы можете исправить это следующим образом:

Сначала проверьте, что файл блока является символической ссылкой на /dev/null

file /lib/systemd/system/x11-common.service

он должен вернуться:

/lib/systemd/system/x11-common.service: symbolic link to /dev/null

в этом случае удалите его

sudo rm /lib/systemd/system/x11-common.service

Поскольку вы изменили файл единицы, вам нужно запустить это:

sudo systemctl daemon-reload

теперь проверьте статус:

systemctl status x11-common

если он не сказал, что загружен и запущен (если круг по-прежнему краснеет), переустановите пакет:

sudo apt-get install --reinstall x11-common

и снова перезагрузите демона

sudo systemctl daemon-reload

и еще раз проверьте статус

systemctl status x11-common

Теперь он зеленый и работает :) У службы нет файла systemd unit, но systemd с радостью использует сценарий для него в /etc/init.d вместо.


19
2017-07-30 21:23



Хорошо, следующий вопрос: если он был замаскирован в вашей системе, для чего предназначена эта услуга? Кажется, что это действительно не нужно, если оно замаскировано для нас обоих. - Albert
@ Альберт [См. Здесь.] ( askubuntu.com/questions/712276/...) кажется, что сервис работает без файла systemd unit (у него есть файл в /etc/init/...). Вы можете задать новый вопрос. То, что я сделал, не имело очевидной разницы, только сервис показывает, что он загружен, включен, остановлен (активен при запуске) (зеленый) вместо загруженного в масках мертвого (красный). Я должен прочитать мои журналы ... - Zanna
если произойдет обновление для systemd, файл устройства будет переустановлен, так что это не действительно структурное решение - hbogert
@hbogert делает это, даже если бы не было единичного файла, кроме символической ссылки на /dev/null? Вы правы насчет моего ответа. Я бы назвал это решение обходным путем для ... путаного поведения ... systemd - Zanna
Не могли бы вы описать свое первое предложение в терминах точных файлов, которые имеют значение в этом случае (потому что я действительно не понимаю сценарий, который вы описываете)? - hbogert


Выполните следующие действия:

  1. systemctl edit systemd-hostnamed

    Добавьте 2 строки ниже, затем выйдите из редактора (не забудьте сохранить при появлении запроса):

    [Service]
    PrivateNetwork=no
    
  2. Это создаст файл override.conf с указанными выше двумя строками в каталоге:

    /etc/systemd/system/systemd-hostnamed.service.d/
    
  3. Система обновленийd:

    systemctl daemon-reload
    
  4. Затем перезапустите службу:

    systemctl restart systemd-hostnamed
    

Теперь вы должны иметь возможность запускать hostnamectl без него висит.


0
2018-06-12 23:17