
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"