Почему моя включенная система systemd не запускается при загрузке?

У меня есть следующий файл systemd в файле /etc/systemd/system/emacs.service :

 [Unit] Description=Emacs: the extensible, self-documenting text editor Documentatin=man:emacs(1) info:Emacs [Service] Type=forking ExecStart=/usr/bin/emacs --daemon ExecStop=/usr/bin/emacsclient --eval "(progn (setq kill-emacs-hook nil) (kill-emacs))" Restart=always Environment=DISPLAY=:%i TimeoutStartSec=0 [Install] WantedBy=default.target 

Я хочу, чтобы это началось при загрузке, поэтому я ввел systemctl enable emacs

Тем не менее, каждый раз, когда моя служба перезагружается, systemctl status emacs показывает:

 ● emacs.service - Emacs: the extensible, self-documenting text editor Loaded: loaded (/etc/systemd/system/emacs.service; disabled; vendor preset: enabled) Active: inactive (dead) 

Но затем вхождение systemctl start emacs и проверяет возврат статуса:

 ● emacs.service - Emacs: the extensible, self-documenting text editor Loaded: loaded (/etc/systemd/system/emacs.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2016-11-11 23:03:59 UTC; 4s ago Process: 3151 ExecStart=/usr/bin/emacs --daemon (code=exited, status=0/SUCCESS) Main PID: 3154 (emacs) Tasks: 2 Memory: 7.6M CPU: 53ms CGroup: /system.slice/emacs.service └─3154 /usr/bin/emacs --daemon 

Как я могу запустить этот процесс для успешного запуска при загрузке?

3 Solutions collect form web for “Почему моя включенная система systemd не запускается при загрузке?”

Я понятия не имею, почему, но чтобы это работало:

удаленная Environment=DISPLAY=:%i

добавлена ​​переменная User=

Убедитесь, что правильный файл находится в /etc/systemd/system/emacs.service (ранее это была жесткая ссылка)

и повторно systemctl enable emacs

Это заставило его работать.

EDIT Реальная проблема здесь в том, что у меня была опечатка в строке 3: Documentatin

Я нашел это, проверив journalctl . Я предлагаю всем, кто имеет проблемы с системным скриптом, делать то же самое, что не было ошибок, отправленных в stderr.

Это интересно.

Выбирая случайную единицу обслуживания и глядя на нее, она зависит от конкретной цели вместо default.target . Последний является символическим … настраиваемой ссылкой на конкретную цель, семантически это не имеет смысла. (См. systemctl set-default )

Это может объяснить, почему ваша служба показывается как disabled после ее включения. Попробуйте заменить файл default.target в файле службы с помощью multi-user.target , например.

(Не сообщать об ошибке, когда не удается включить, похоже на дефект в systemd. Я почти задаюсь вопросом, есть ли у вас каталог /etc/systemd/system/default.target.wants ).

У вас есть переменная среды DISPLAY, это означает, что вы хотите запустить X11. Таким образом, вы должны иметь способ заблокировать свое обслуживание до тех пор.

Это делается с помощью параметра After=...

Я сам этого не делал, поэтому не могу сказать, что это сработает, но это, скорее всего, связано с graphical.target .

 [Unit] After=graphical.target 

Другая возможность, если X-сервер не запускается немедленно (т. Е. У вас есть экран входа в систему с lightdm или такой), вам, возможно, придется использовать WantedBy=... вместо этого:

 [Unit] WantedBy=graphical.target 

Если вы устали от работы с systemd, вы можете захотеть взглянуть на обычный способ управления X-Windows.

Существует файл ~/.xprofile , который работает как файл ~/.bashrc .

Также есть файлы ~/.config/autostart/*.desktop . Он автоматически запустит все приложения, которые там определены.

Эти решения не являются системными, хотя, если у вас есть несколько пользователей, каждый из них должен иметь свою собственную запись. Кроме того, он не запускает приложение как root, а вы, наоборот.


В качестве побочного примечания «загруженное + неактивное (мертвое)» сообщение означает, что у systemd было трудное время для запуска процесса и в результате решил отказаться от него. Вы можете вручную проверить, что name.service работает после перезагрузки, используя:

 systemctl stop <service-name> systemctl start <service-name> 

Это обновит статус и запустит службу должным образом, если информация верна. Затем вы можете снова проверить статус, чтобы увидеть дополнительные сведения:

  systemctl status <service-name> 
  • Как написать вывод на экран из службы systemd во время загрузки?
  • Время загрузки Система SysV vs Systemd - systemd занимает ~ 2 секунды дольше!
  • Группирование системных служб
  • Предупреждение о том, что addgroup пытается создать уже существующую группу пользователей
  • синхронизировать время на удаленном сервере
  • Сервис Systemd не распознает библиотеку Python
  • Прокси-сервер активации Systemd?
  • Безопасно ли удалять файлы .journal ~?
  • Как отключить пользовательские tmpfs / run / user / 1000, tmpfs
  • Настройка шрифта консоли в vconsole.conf не работает (systemd)
  • Как запустить 2FA-используя OpenVPN с systemd?
  • Interesting Posts

    Как перечислять в настоящее время не установленные пакеты?

    Изменяет ли файл конфигурации Xresources Wayland?

    Поиск терминов в наборе файлов

    Как я могу скопировать и проверить файл, как я делаю копию?

    метки тега sed

    Определите подкаталоги, которые не содержат определенную строку в определенном файле

    аналог аналогов в Дарвине

    Как монтировать «корневую» файловую систему Windows Samba Share с cifs?

    Что может привести к чрезмерному замедлению кэширования кэша в большом кластере?

    Есть ли стандарт, как команды, запускающие другие команды, обрабатывают конструкции оболочки как перенаправления?

    FedUp, не может перейти на Fedora 20

    Регистрация попыток доступа к SSH

    Подстановка команды в псевдониме разрешена в профиле bash?

    Как загрузить последний файл в папке с помощью scp?

    Каковы накладные расходы на использование нескольких более мелких устройств рейдов в сравнении с секционированными устройствами рейдов в виде физических томов?

    Linux и Unix - лучшая ОС в мире.