A execução do comando screen
de cron
e a captura de seu stderr informa esta mensagem:
Must run suid root for multiuser support.
Uma pesquisa rápida em torno dos resultados descobre que esta mensagem é impressa quando screen
não possui o dispositivo tty
do qual pode criar seu nome de sessão. (Normalmente, o nome da sessão é algo como 11597.pts-0.myhostname
.) Outras leituras da página do manual mostram que o -S
flag pode ser usado para especificar um nome de sessão:
screen -md -S "atboot.$(hostname)" ...
Não há nada de especial no rótulo "atboot"; Eu usei para me lembrar que o processo foi iniciado no momento da inicialização e não tinha um tty.
Combinar isso com sua especificação crontab
leva a isso:
# m h dom mon dow command
@reboot echo "test" > /home/dataserv/reboot.txt 2>&1
@reboot screen -d -m -S "atboot.$(hostname)" /home/dataserv/www/start_production_server.sh
A execução de screen -ls
fornecerá uma saída semelhante a esta:
11732.atboot.myhostname (03/01/16 00:25:01) (Detached)