Starten Sie die Sinatra-App im Hintergrund mit stdout und stderr, die an eine Datei umgeleitet (angehängt) werden

7

Ich habe eine Sinatra-App, die ich auf meinem lokalen Computer verwende ruby app.rb. Wie führe ich es während der Bereitstellung auf einem Remotecomputer über ssh im Hintergrund aus und leite stdout und stderr in eine Protokolldatei um?

Bei einem Neustart möchte ich die vorherigen Protokolle beibehalten, damit neuere Nachrichten an die vorhandene Protokolldatei angehängt werden, anstatt sie abzuschneiden.

Was ist die empfohlene Methode, um meine Webanwendung als Daemon auszuführen?

Ich habe es versucht nohup ruby app.rb &, aber das scheint stderr zu fehlen und die log-Anweisungen scheinen in einigen Fällen nicht in Ordnung zu sein.

letronje
quelle

Antworten:

9

Versuchen Sie unter Bash:

nohup ruby app.rb >> /log/file 2>&1 &
MadHatter
quelle
"2> & 1" was bedeutet das?
Letronje
3
"Senden Sie STDERR an denselben Ort, an den Sie STDOUT senden"
MadHatter
Danke eine Tonne für die cmd :)
Letronje
Und was bedeutet das Ende &?
Nakilon
" Im Hintergrund ausführen ", bitte beachten Sie jedoch, dass SF kein Forum ist und dies möglicherweise besser als separate Frage auf unix.stackexchange.com gestellt wurde (nach einigen Recherchen, da ich ziemlich sicher bin, dass diese Frage gestellt wird wurde dort schon einmal gefragt).
MadHatter
3

screen -L -dmS somename ruby app.rb

Dadurch wird ein Bildschirmprozess mit dem Namen 'somename' gestartet, wobei alle Ausgaben des Programms im aktuellen Arbeitsverzeichnis in screenlog.0 protokolliert werden.

Wenn Sie aus irgendeinem Grund jemals die Konsole der Anwendung wiederherstellen möchten, können Sie dies tun screen -r somename.

devicenull
quelle