Ich habe die folgende System-Unit-Datei in /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
Ich möchte, dass dies beim Booten beginnt, also habe ich eingegeben systemctl enable emacs
Bei jedem Neustart meines Dienstes wird jedoch Folgendes angezeigt 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)
Dann geben Sie systemctl start emacs
den Status ein und überprüfen ihn.
● 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
Wie kann ich erreichen, dass dieser Prozess beim Booten erfolgreich gestartet wird?
After=...
ich erwähnt habe.Oh, das ist interessant.
Wenn Sie eine zufällige Wartungseinheit auswählen und darauf starren, hängt dies von einem bestimmten Ziel ab
default.target
. Letzteres ist symbolisch ... eine konfigurierte Verknüpfung zu einem bestimmten Ziel, semantisch macht es keinen Sinn. (Siehesystemctl set-default
)Dies könnte erklären, warum Ihr Dienst so angezeigt wird, wie
disabled
nachdem Sie ihn aktiviert haben. Ersetzen Siedefault.target
in Ihrer Servicedateimulti-user.target
beispielsweise durch.(Einen Fehler nicht zu melden, wenn die Aktivierung fehlschlägt, scheint ein Fehler in systemd zu sein. Ich frage mich fast, ob Sie jetzt ein Verzeichnis haben.
/etc/systemd/system/default.target.wants
)quelle
/etc/systemd/system/default.target.wants
Inside, die meine Servicedateien enthält. Und ja, ich hatte keine Ahnung, dass ein Fehler vorliegt.Sie haben eine DISPLAY-Umgebungsvariable, dh Sie möchten, dass X11 gestartet wird. Sie müssen also eine Möglichkeit haben, Ihren Dienst bis dahin zu blockieren.
Dies erfolgt über die
After=...
Option .Ich habe es nicht selbst gemacht, daher kann ich nicht sagen, dass es funktionieren würde, aber es hat wahrscheinlich etwas damit zu tun
graphical.target
.Eine andere Möglichkeit, wenn der X-Server nicht sofort startet (dh Sie haben einen Anmeldebildschirm mit lightdm oder so), müssen Sie möglicherweise
WantedBy=...
stattdessen Folgendes verwenden :Wenn Sie es satt haben, systemd zum Laufen zu bringen, sollten Sie sich die gewohnte Funktionsweise von X-Windows-Managern ansehen.
Es gibt die
~/.xprofile
Datei, die wie die~/.bashrc
Datei funktioniert .Es gibt auch die
~/.config/autostart/*.desktop
Dateien. Es wird automatisch gestartet, welche Anwendungen dort definiert sind.Diese Lösungen sind nicht systemweit, wenn Sie jedoch mehrere Benutzer haben, muss jeder einen eigenen Eintrag haben. Außerdem wird die Anwendung nicht als root gestartet, sondern stattdessen als Sie.
Als Randnotiz bedeutet die Meldung "Loaded + Inactive (Dead)", dass Systemd Schwierigkeiten hatte, den Prozess zu starten, und als Folge davon entschied es sich , ihn abzubrechen . Sie können manuell testen, ob das
name.service
funktioniert, sobald Sie neu gestartet haben:Dadurch wird der Status aktualisiert und der Dienst ordnungsgemäß gestartet, sofern die Informationen korrekt sind. Anschließend können Sie den Status erneut überprüfen, um weitere Details anzuzeigen:
quelle
Documentatin
. Ihr Hinweis überjournalctl
hat mir hier geholfen.Es ist ein Fehler in mehreren Service-Dateien von Debian:
https://www.raspberrypi.org/forums/viewtopic.php?f=82&t=218609&p=1406567#p1406567 https://forum.armbian.com/topic/9115-still-dont-know-where-to-report -bugs-watchdogservice-weigert sich-wegen-defekter-Service-Datei-zu-starten /
Das Update für die Verteilungsebene lautet
Es gibt viele manuelle Alternativen dazu.
quelle