Ausführen eines Befehls im Screen-Daemon-Modus

Ausführen eines Befehls im Screen-Daemon-Modus

Ich versuche, einen Befehl im Bildschirmmodus mit dem Befehl auszuführen

screen -dmS screen_name sed -i 's/a/b/'g some-file.txt

Es passiert nichts. Wenn ich den gleichen Befehl in ein Skript einfüge und den Befehl ausführe:

screen -dmS screen_name bash -c /path/to/script

Es funktioniert. Meine Frage ist, kann ich einen Befehl im Daemon-Modus ausführen, ohne ihn zuerst in ein Skript einfügen zu müssen? Grundsätzlich brauche ich diese Daemon-Funktion, weil sie dabei hilft, mehrere Befehle parallel auszuführen, indem mehrere Sed-Befehle für große Dateien parallel ausgeführt werden, indem jeder Befehl auf einen separaten Bildschirm-Daemon geworfen wird, der nach Abschluss des Programms automatisch beendet wird. Danke

Antwort1

Ich vermute, das Problem liegt bei -S. Wenn Sie versuchen, die Option -S wegzulassen, sollte es auch ohne Bash -c funktionieren. Versuchen Sie also Folgendes

screen -dm sed -i 's/a/b/'g some-file.txt

Das sollte funktionieren. Übrigens wird der Bildschirm nicht aktualisiert. Sie sollten in Erwägung ziehen, zu tmux zu wechseln. Es bietet Ihnen viel mehr Funktionen.

Sie können tmux installieren, indem Sie Folgendes eingeben:

sudo apt-get install tmux

Ihr Code sollte also folgendermaßen aussehen:

tmux new-session -d -s foo 'sed -i 's/a/b/'g some-file.txt'

Ich könnte es testen mit

tmux new-session -d -s hello 'top'

Wenn Sie eingeben

tmux attach -t hello

Sie werden zu einer Sitzung mit top weitergeleitet. Ich hoffe, das hilft. check

man tmux

für alle Funktionen und überprüfen SieHierfür einen ausführlichen Spickzettel

Antwort2

Geht das für dich?

screen -dmS screen_name bash -c "sed -i 's/a/b/'g some-file.txt"

verwandte Informationen