Korzystam z Ubuntu 16.04 i potrzebuję następującego tmux
rozwiązania, ponieważ chcę uruchomić proces przekroczenia limitu czasu, sleep
ponieważ w moim szczególnym przypadku nie byłem zadowolony at
i napotkałem błąd nohup
(podczas łączenia nohup-sleep
). Teraz tmux
wydaje się najlepszą alternatywą, ponieważ ma własny mechanizm bez zawieszania się i działa właściwie w trybie ręcznym (zadaję pytanie tylko w zakresie automatyzacji procesu, który mogę już z nim zrobić ręcznie).
Czego potrzebuję:
Potrzebuję sposobu na wykonanie następujących 3 akcji, wszystkie w jednej operacji:
- Dołączanie nowej
tmux
sesji. - Wstrzyknięcie gotowego zestawu poleceń do tej sesji, np
(sleep 30m ; rm -rf dir_name ; exit)
. Szczególnie wolałbym zestaw wieloliniowy, a nie jeden długi rząd. - Wykonanie powyższej komendy ustawia moment, w którym zakończy się zapisywanie jako stdin w nowej
tmux
sesji.
Innymi słowy, chcę wykonać zestaw kodu w innej tmux
sesji, która została specjalnie stworzona dla tej przyczyny, ale aby zrobić wszystko w jednej operacji.
Uwagi:
Staram się robić wszystko z mojej oryginalnej sesji roboczej (tej, którą pracuję przez większość czasu). Zasadniczo nie mam zamiaru odwiedzać nowo utworzonej sesji, chcę ją tylko utworzyć z automatycznie wykonywanym kodem i to wszystko.
Jeśli to możliwe, wolałbym rozwiązanie heredoc. Myślę, że to najbardziej wydajne.
źródło
1.
Istnieją dwa sposoby, aby to zrobić, jeden obejmuje najpierw utworzenie skryptu tymczasowego (zawierającego kod) i wykonanie go wraz z tworzeniem, a drugi to heredoc droga.2.
Jeśli drugi sposób działa (gdy każdy wiersz echa zawiera każdy wiersz kodu heredoc), dlaczego powinniśmy postrzegać to jako hack, jeśli jest to poprawny kod Bash? Może dlatego, że wiersze heredoka są powtarzane echem i nie są wykonywane regularnie w heredocach?/dev/shm
. Jest to również hack, ponieważ jest bardziej skomplikowany, trudny do odczytania, zrozumienia i utrzymania niż pisanie skryptu do zwykłego pliku i rozpoczynanie go odtmux
.1.
sposobem (odpowiedź na twoje pytanie) .tmux new-session -d -s "myTempSession" /opt/my_script.sh
, nie otwiera mi pliku tymczasowego do wklejenia kodu ... Potrzebne mi jest otwarcie skryptu bezpośrednio z bieżącej sesji lub przynajmniej przejście do nowej sesji, a następnie bezpośrednie przejście do obecna sesja. BTW Planuję przyznać nagrodę za całą twoją pomoc, ponieważ to co najmniej mogę zrobić, aby ci podziękować i mógłbym dać nagrodę za 11 godzin.Zobacz także /server/339390/run-command-in-detached-tmux-session, aby uzyskać przykłady użycia komendy send-keys w odłączonym panelu.
źródło