Como criar uma sessão de tela na inicialização com o comando que não termina quando o comando termina

4

Eu quero editar meu arquivo rc.local para iniciar algumas sessões do servidor, cada uma em sua própria tela GNU. No entanto, sempre que eu paro um servidor, a tela termina.

Atualmente, tenho:

screen -dmS test ~/tmp/runserver.sh

com isso dentro de runserver.sh :

node ~/dev/mouser/app.js

Como faço para que a tela permaneça ativa após o comando ou script passado terminar?

    
por QuinnBaetz 06.02.2012 / 07:44

1 resposta

4

Duas maneiras. Invoque um shell para executar o script, que então se substitui (usando o exec builtin) por um shell interativo quando o script é concluído

screen -dmS test bash -c '~/tmp/runserver.sh; exec bash'

ou mantenha seu comando de tela atual e coloque exec bash em seu script runserver.sh.

#!/bin/bash
node ~/dev/mouser/app.js
exec bash

(Em uma nota paralela, não há sentido em ter uma extensão em um script. Ele só vai te dar dores de cabeça de dependência mais tarde se você reescrevê-lo em outro idioma. Se você olhar em / bin e / usr / bin, você Você encontrará muitos scripts sh, bash e python, nenhum dos quais possui extensão .sh, .bash ou .py)

    
por geirha 17.02.2012 / 22:01