Ich benutze Ubuntu 16.04 und benötige die folgende tmux
Lösung, da ich einen Timeout-Prozess ausführen möchte, da ich sleep
in meinem speziellen Fall nicht zufrieden war at
und einen Fehler mit nohup
(beim Kombinieren nohup-sleep
) festgestellt habe . Nun, es tmux
scheint die beste Alternative zu sein, da es einen eigenen No-Hangup- Mechanismus hat und tatsächlich im manuellen Betrieb einwandfrei funktioniert (ich stelle die Frage nur in Bezug auf die Automatisierung des Prozesses, den ich bereits manuell damit machen kann).
Was ich brauche:
Ich brauche eine Möglichkeit, die folgenden 3 Aktionen in einer Operation auszuführen:
- Neue
tmux
Sitzung anhängen . - Injizieren eines fertigen Satzes von Befehlen in diese Sitzung, z
(sleep 30m ; rm -rf dir_name ; exit)
. Besonders bevorzuge ich ein mehrzeiliges Set und keine lange Reihe. - Das Ausführen des obigen Befehls setzt den Moment, in dem es beendet wurde, um in einer neuen
tmux
Sitzung als stdin geschrieben zu werden .
Mit anderen Worten, ich möchte einen Codesatz in einer anderen tmux
Sitzung ausführen , die speziell für diesen Zweck erstellt wurde, aber alles in einem Vorgang ausführen.
Anmerkungen:
Ich versuche, alles aus meiner ursprünglichen Arbeitssitzung heraus zu machen (die, aus der ich die meiste Zeit heraus arbeite). Im Allgemeinen habe ich nicht die Absicht, die neu erstellte Sitzung zu besuchen, ich möchte sie nur mit dem automatisch ausgeführten Code erstellen und das wars.
Wenn möglich, würde ich eine Heredoc-Lösung vorziehen. Ich denke, es ist am effizientesten.
quelle
1.
Es gibt zwei Möglichkeiten, dies zu tun : Zum einen muss ein temporäres Skript (das den Code enthält) erstellt und mit der Erstellung ausgeführt werden, zum anderen handelt es sich um einen Heredoc Weg.2.
Wenn der zweite Weg funktioniert (wenn jede Echo-Zeile jede Code-Zeile des Heredocs enthält), warum sollten wir dies als Hack betrachten, wenn es ein Bash-gültiger Code ist? Vielleicht, weil Zeilen des Heredocs wiederholt und in Heredocs nicht regelmäßig ausgeführt werden?/dev/shm
. Es ist auch ein Hack, da es komplizierter, schwieriger zu lesen, zu verstehen und zu warten ist, als das Skript einfach in eine gewöhnliche Datei zu schreiben und damit zu beginnentmux
.1.
Möglichkeit sind (Antwort auf die Ihrer Frage) .tmux new-session -d -s "myTempSession" /opt/my_script.sh
es jetzt ausführe , wird keine temporäre Datei geöffnet, in die ich den Code einfügen kann ... Ich muss das Skript direkt aus der aktuellen Sitzung heraus öffnen oder zumindest etwas in die neue Sitzung verschieben und dann direkt in die neue Sitzung zurückkehren aktuelle Sitzung. Übrigens habe ich vor, für all deine Hilfe ein Kopfgeld zu geben, da ich mich so wenig wie möglich bei dir bedanken kann und ich in 11 Stunden ein Kopfgeld geben könnte.Unter /server/339390/run-command-in-detached-tmux-session finden Sie auch Beispiele zur Verwendung des Befehls send-keys in einem getrennten Bereich.
quelle