Почему моя включенная система 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> 
  • Как настроить запуск службы после запуска autofs с помощью systemd
  • Почему «init 0» приводит к «избыточным аргументам» при установке Arch?
  • Настройка среды в systemd
  • Сценарий, запущенный на tty при загрузке, неправильно обрабатывает обратное пространство
  • Arch не монтирует массив btrfs при загрузке
  • Установить службу systemd для запуска после монтирования fstab
  • Как каталоги для белых списков для единиц в systemd
  • Сеть Systemd: сеть IPv6 недоступна при загрузке
  • монтировать samba-файлы при загрузке с помощью systemd
  • Скрипт запуска через Linux через минуту после загрузки
  • Показать ip на boot - centos 7
  • Interesting Posts

    Как Flatpak предотвратит распространение современных библиотек?

    Могут ли приложения, подобные VirtualBox, запускаться при запуске без участия пользователей в ubuntu?

    Есть ли способ сделать ваш процесс меньше процессорным?

    Файлы, которые не существуют, не позволяют мне удалить их, поврежденную файловую систему

    / usr / bin / ld: не удается найти -lfl

    Высота башни GTK3

    Как кодировать огромные файлы FLAC в MP3 и другие файлы, такие как AAC?

    Как настроить файл my.cfg для mysql, который был установлен из источников?

    Считать столбцы CSV и удалить

    Плененный портал с использованием Apache

    sed несколько записей в одной команде для удаления данных

    Как объединить два файла в один с столбцами для данных каждого файла?

    Запуск облачной печати Google при загрузке

    версия java не найдена в redhat

    Как сбросить ветвь git на заданную ранее фиксацию и исправить отдельную головку?

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