Pracuję nad automatyzacją procedury konserwacji, która obejmuje uruchamianie i zatrzymywanie skryptu uruchomionego w sesji ekranowej. Moje podejście polega na zabiciu sesji ekranowej, a następnie zrestartowaniu jej i uruchomieniu polecenia ze skryptu przy użyciu umiejętności zarówno utworzenia ekranu, jak i przekazania polecenia bez konieczności dołączania się do ekranu.
Mam jednak z tym trudności. Mogę poprawnie utworzyć ekran bez dołączania go screen -d -m -S screen_name
. Jeśli jednak uruchomię polecenie na podstawie:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
z echem -ne '\ 015' jest owinięte backsiksem zamiast pojedynczych cudzysłowów. Ma to na celu symulację naciśnięcia klawisza Enter przez użytkownika, ponieważ używane przeze mnie polecenia przenoszą się do katalogu i wykonują znajdujący się tam skrypt. To polecenie działa, ale tylko wtedy, gdy ekran został dołączony po utworzeniu. Kiedy próbuję zautomatyzować proces tworzenia ekranu i uruchamiania poleceń w nim, chciałbym uniknąć konieczności dołączania i odłączania w skrypcie. Spróbuję zasugerować utworzenie skryptu powłoki zawierającego polecenia, które muszę wykonać na ekranie i edytować zgodnie z moimi wynikami.
Czy istnieje sposób utworzenia ekranu i uruchomienia polecenia na ekranie albo w jednym poleceniu, albo bez konieczności dołączania do ekranu po utworzeniu, ale przed wykonaniem polecenia?
Z góry dziękuję.
** Aktualizacja - po wypróbowaniu sugestii umieszczenia poleceń, które muszę wykonać w skrypcie powłoki, udało mi się pomyślnie utworzyć ekran i wykonać polecenia z poziomu ekranu, ale otrzymuję takie zachowanie, że skrypt przestaje działać ekran również się zamyka. Nie powinno to stanowić problemu, ponieważ skrypt jest skryptem rejestrującym, który powinien zatrzymać się tylko za wiedzą administratora sys lub za pomocą skryptu, który próbuję opracować, jednak lepiej byłoby skonfigurować ekran w taki sposób, aby ekran nie zniknie, jeśli skrypt zostanie zatrzymany. Czy można osiągnąć takie zachowanie? **
.screenrc
linii zawierającej linię zombie kr
, która utrzyma otwarte okno otwarte, i możesz nacisnąć, k
aby zamknąć winodw lub r
ponownie uruchomić polecenie w oknie. Mam to dla mojego domyślnego .screenrc.