Esecuzione di lavori utente Upstart all'avvio


8

Sto eseguendo il server Ubuntu 11.04. Ho creato un lavoro utente Upstart come descritto qui .

Ho il seguente file al mio /home/myuser/.init/sensors.conf:

start on started mysql
stop on stopping mysql


chdir /home/myuser/mydir/project
exec /home/myuser/mydir/env/bin/python /home/myuser/mydir/project/manage.py sensors

respawn

respawn limit 10 90

Come myuserposso iniziare, interrompere e ricaricare il lavoro bene, funziona perfettamente:

$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting

Il problema è che il lavoro non si avvia automaticamente all'avvio all'avvio mysql. Dopo un nuovo avvio, mysqlè in esecuzione ma il mio sensorslavoro non lo è.

La cosa strana è che sebbene il lavoro non inizi all'avvio, se lo uso sudoper riavviarlo mysql, in effetti inizia il mio lavoro. I seguenti comandi vengono eseguiti come myuserda un nuovo avvio:

$ status sensors
sensors stop/waiting
$ sudo restart mysql
mysql start/running, process 1209
$ status sensors
sensors start/running, process 1229

La documentazione per i lavori degli utenti Upstart è piuttosto limitata. Qual è la tecnica corretta per avviare automaticamente un processo utente all'avvio del sistema?

So che posso semplicemente lanciare qualcosa rc.localper avviarlo, o potrei spostarmi sensors.confin /etc/initma sono curioso di sapere se c'è un modo per farlo usando solo Upstart.

Risposte:


8

Il problema è che i lavori utente non vengono caricati in Upstart fino a quando l'utente non crea una sessione Upstart eseguendo uno dei initctlcomandi.

L'ho descritto in modo più dettagliato su http://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.html e ho anche scritto un lavoro Upstart che funziona attorno al problema.


C'è un altro modo per farlo documentato su upstart.ubuntu.com/cookbook/… - ha comunque un bug, dovrai cambiare "start session_init" in "start session-init".
natevw,

-1

Guardando fonti come /etc/init/mysql.confe http://upstart.ubuntu.com/cookbook/#start-on mi pare si dovrebbe cambiare la vostra start onlinea a qualcosa di simile:

start on (mysql and runlevel [2345])

Non sono sicuro di essere d'accordo sul fatto che upstart manchi di documentazione, ma a volte faccio fatica a capire i documenti. Di solito faccio solo prove ed errori fino a quando non funziona. La soluzione sopra potrebbe essere eccessiva in realtà ... qualcosa di così semplice come potrebbe essere sufficiente:

start on mysql

Non è che upstart manchi di documentazione in generale, è che non ha molta documentazione relativa ai lavori degli utenti - lavori collocati in /home/$USER/.init (non lavori inseriti in / etc / init).
dgel

Ho provato i tuoi suggerimenti ma nessuna differenza. Non è un problema con la mia start onlinea, ma è solo il fatto che upstart carica solo / etc / init all'avvio, ma non i file init dell'utente nel loro$HOME/.init
dgel

Ci dispiace, ho perso che si trattava di un lavoro utente e non di un lavoro in /etc/init. Hai ragione sul fatto che la documentazione sembra mancare per questo e non sono sicuro di come ~/.initavviare gli script.
Carl Zulauf,

I documenti che ho trovato indicano che i $HOME/.initlavori non sono abilitati per impostazione predefinita e /etc/dbus-1/system.d/Upstart.confpotrebbero essere necessarie alcune modifiche . upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user
Carl Zulauf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.