2017-09-14 1 views
0

Ich machte einfaches Skript. Dateiname ist sutest.Skript-Datei: Befehl gestoppt

#!/bin/bash 

cd ~/Downloads/redis-4.0.1/src 
./redis-server 

echo "uid is ${UID}" 
echo "user is ${USER}" 
echo "username is ${USERNAME}" 

Ich runed Skript. $ . sutest
Skriptcode wird jedoch bei ./redis-server gestoppt. So kann ich keine Echonachrichten sehen.

enter image description here

Ich mag diese Art von Skript-Dateien machen. Wie kann ich das machen??

Ich wäre dankbar für Ihre Hilfe.


Sagen wir allgemeiner Fall.
myscript1 Datei führt Prozess wie Redis-Server oben.
andere myscript2 Datei führt Prozess wie Redis-Server oben. andere myscript3 Datei führt Prozess wie Redis-Server oben.

Wie kann ich drei Skriptdateien gleichzeitig ausführen?
Ich möchte in ssh-Verbindung arbeiten.
Um die Sache noch schlimmer zu machen, wenn ich nicht screen oder tmux ??

Antwort

0

hinzufügen char ‚&‘ am Ende der Reihe

./redis-server & 

diese char erlaubt es, den Job im Hintergrund auszuführen, und das Skript wird fortgesetzt.

+0

danke für ihre antwort. Bitte lies meine Bearbeitung. für den allgemeineren Fall. – newbie16

+0

Hinzufügen eines '&' ist ebenfalls anwendbar? möglich? – newbie16

+0

In Ihrem Beispiel können Sie ./myscript1 &; ./myscript2 &; ./myscript3 &; und sie laufen zusammen – messiedo

0

Just do die echos zuerst:

cd ~/Downloads/redis-4.0.1/src 

echo "uid is ${UID}" 
echo "user is ${USER}" 
echo "username is ${USERNAME}" 

exec ./redis-server 

Die Verwendung von exec ist ein kleiner Trick (die man weglassen können, wenn Sie bevorzugen): Es ersetzt den Shell-Skript mit redis-server, so dass der Shell-Skript ist nicht mehr überhaupt laufen. Ohne exec enden Sie mit dem Shell-Skript, das darauf wartet, dass redis-server beendet wird, was unnötig ist, wenn das Skript nichts weiter tun wird.

Wenn Sie aus irgendeinem Grund nicht, dass möchten, können Sie die ursprüngliche Reihenfolge halten:

cd ~/Downloads/redis-4.0.1/src 
./redis-server & # run in background 

echo "uid is ${UID}" 
echo "user is ${USER}" 
echo "username is ${USERNAME}" 

wait # optional 
+0

danke für deine antwort. Bitte lies meine Bearbeitung. für den allgemeineren Fall. – newbie16

+0

Hinzufügen eines '&' ist ebenfalls anwendbar? möglich? – newbie16

+0

@ newbie16: Sie können 'thing1 & ding2 & thing3 &; ausführen; warte. –