Ich habe einen benutzerdefinierten Upstart-Job mit dieser Grundstruktur:
description "ulfs_bar_example"
author "Ulf"
# Only run at runlevel 2 (Default multiuser)
start on runlevel 2
stop on runlevel [!2]
# Keep it alive
respawn
chdir /storage/_foo/bar
exec sudo -u the_user /storage/_foo/venv/bin/python /storage/_foo/bar/the_app.py
Dies wird auf einer Ubuntu 14.04.5 LTS
Instanz in ausgeführt VirtualBox 5.0.26
.
/storage/_foo/
existiert in der Gastfestplatte
bar/
existiert im Hostsystem (auch Ubuntu 14.04.5 LTS
) und wird gemountet durchGastbeiträgeund einige symbolische Links bei/storage/_foo/
$ cd /storage/_foo
$ ls -alF
...
lrwxrwxrwx 1 the_user code 43 aug 18 14:23 bar -> /mnt/bar_at_host
...
Der Job kann problemlos gestartet werden, nachdem der Gast wie folgt gebootet wurde:
$ sudo start ulfs_bar_example
Aber wie in der Konfigurationsdatei angegeben, möchte ich, dass der Job gestartet wird, wenn beim normalen Booten Runlevel 2 aufgerufen wird. Aber es scheint ein Problem beim Mounten zu geben, da der Job nicht gestartet wird. dmesg
Ich erhalte Folgendes:
[ 8.793493] init: Failed to spawn ulfs_bar_example main process: unable to change working directory: No such file or directory
Ohne Erfolg habe ich versucht, Folgendes zu ändern:
start on runlevel 2
zu verschiedenen Dingen ähnlich diesem:
start on (local-filesystems and runlevel 2)
Was mache ich falsch? Wie kann ich das beheben?
Antwort1
Sind Sie sicher, dass Ihr System in Runlevel 2 und nicht in ein anderes Runlevel wechselt? Haben Sie es versucht start on runlevel [2345]
?