Frage So erstellen Sie eine Bildschirmsitzung beim Start mit einem Befehl, der nicht endet, wenn der Befehl beendet ist


Ich möchte meine bearbeiten rc.local Datei, um jeweils ein paar Server-Sitzungen in seinem eigenen GNU-Bildschirm zu starten. Wenn ich jedoch einen Server stoppe, wird der Bildschirm beendet.

Derzeit habe ich:

screen -dmS test ~/tmp/runserver.sh

mit diesem Inneren runserver.sh:

node ~/dev/mouser/app.js

Wie kann ich den Bildschirm am Leben erhalten, nachdem der übergebene Befehl oder das Skript beendet wurde?


4
2018-02-06 06:44


Ursprung




Antworten:


Zwei Wege. Rufen Sie eine Shell auf, um das Skript auszuführen, das sich dann selbst ersetzt (mithilfe von exec eingebaut) mit einer interaktiven Shell, wenn das Skript fertig ist

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

oder behalte deinen aktuellen Bildschirmbefehl und lege exec bash in dein Skript runserver.sh.

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

(Nebenbei bemerkt, es hat keinen Sinn, eine Erweiterung für ein Skript zu haben. Es wird Ihnen nur später Kopfschmerzen bereiten, wenn Sie es in einer anderen Sprache umschreiben. Wenn Sie in / bin und / usr / bin suchen, finden Sie a viele sh-, bash- und python-Skripte, von denen keines die Erweiterung .sh, .bash oder .py hat


4
2018-02-17 21:01