In Anbetracht Ihrer Anforderung, einen Job auszuführen, wenn Sie sich bei Unity anmelden, und nicht für andere Anmeldungen, scheint ein Upstart- Sitzungsjob perfekt zu sein.
Möglicherweise haben Sie es bemerkt: Prozesse, die Sie nach einer GUI-Anmeldung ausführen, werden einem zweiten init
Prozess unterzogen. Dies init
ist eine ordnungsgemäße Upstart-Initiale, und Sie können Sitzungsjobs basierend auf den von ihr ausgegebenen Ereignissen starten und stoppen. Es werden überhaupt keine Root-Rechte benötigt. Besser noch (oder schlechter je nach Perspektive), dies wird für kopflose Systeme noch nicht vollständig unterstützt. Ein SSH-Login hat den Benutzer init nicht von einem Schnelltest gestartet, den ich gerade durchgeführt habe.
Erstellen Sie eine neue .conf
Datei, um einen Sitzungsjob zu erstellen ~/.config/upstart
. Dies ist das Standardprimärverzeichnis für Upstart-Sitzungsjobs ( $XDG_CONFIG_HOME/upstart
). Erstellen Sie es, wenn es nicht vorhanden ist. Hier ist ein Beispieljob:
tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end
script
firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF
Sie können es manuell steuern:
start myjob
# or
initctl start myjob
Der service
Befehl wird verwendet, um Systemjobs (die in /etc/init.d
oder /etc/init
) zu steuern . Zum Steuern von Sitzungsjobs muss der initctl
Befehl verwendet werden, mit dem mit Upstart interagiert wird.
Sehen Sie man upstart-events
weitere Veranstaltungen können Sie verwenden.