Invocar a tela via upstart é realmente um pouco complicado. O primeiro problema relativo a /var/run/screen
não existente pode ser facilmente resolvido.
No Ubuntu 10.10 a 13.10, existe uma tarefa de arranque que é responsável por limpar e (re) criar /var/run/screen
no arranque, pelo que deve certificar-se de que o seu script upstart será executado depois:
start on stopped screen-cleanup
No Ubuntu 10.04 e anterior, assim como no Ubuntu 14.04 e posterior, esse código está no script de inicialização /etc/init.d/screen-cleanup
, o que significa que trabalhos iniciantes podem se referir a ele como o resultado de rc
:
start on stopped rc
No entanto, a tela provavelmente ainda reclamará das permissões / var / run / screen. Isso pode ser contornado chamando a tela via setsid:
exec setsid screen -Dm /some/command
A sua sessão de tela será bifurcada uma vez, então você precisa adicionar a estrofe "esperar bifurcação" para garantir que o upstart siga o pid correto.
Aqui está um script de exemplo completo (precisa pelo menos do Ubuntu 12.04):
# screen startup script
# requires upstart v1.4 or newer
description "running top in screen session"
start on ( local-filesystems
and stopped rc )
stop on runlevel [!2345]
respawn
setuid test
setgid test
# "setsid screen -Dm" only forks once
expect fork
# use setsid to avoid screen complaining about /var/run/screen permissions.
exec setsid screen -Dm -S mytopsession /usr/bin/top