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.
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?