2012-04-25 1 views
7

Ho due script nell'ambiente Rails che devono essere eseguiti 24/7. Sto lavorando su un server remoto, quindi ho bisogno di avviare gli script usando ssh, il che significa che ho bisogno di mantenere le finestre ssh aperte tutto il tempo.Eseguire lo script rubino in background senza utilizzare lo schermo

Sto cercando un modo semplice per eseguire questi script in background in modo che non vengano cancellati non appena chiudo la connessione ssh.

Non voglio usare screen. Penso che ci debba essere un modo più semplice per gestire questo. Non c'è?

+1

Hai guardato dio e/o monito? – d11wtq

risposta

20

Penso che la soluzione più semplice wo ULD essere nohup:

nohup myscript &> /dev/null & 
+0

sì questo è perfetto e possiamo reindirizzare l'output per registrare il file tramite: nohup ruby ​​myscript.rb> myscript.log e Ho appena provato con lo script ruby, e inoltre è possibile verificare se è in esecuzione tramite comando: ps - fu nome utente –

2

Controllare Daemons. È un toolkit per convertire uno script in un demone controllabile.

4

È possibile disconoscere uno script:

ruby script.rb &! 

STDOUT/STDERR sono ancora attaccato alla shell corrente, ma il processo ruby non è un figlio del guscio più, quindi non verrà ucciso se chiudi il terminale.