Я працюю над автоматизацією розпорядку обслуговування, що включає в себе запуск та зупинку сценарію, який працює під час сеансу на екрані. Мій підхід полягає в тому, щоб вбити сеанс на екрані, а потім перезапустити його і запустити команду зсередини сценарію, використовуючи здатності як створити екран, так і передати команду, не потребуючи приєднання до екрана.
Однак у мене виникають труднощі з цим. Я можу створити екран правильно, не додаючи його screen -d -m -S screen_name
. Однак якщо я запускаю команду на основі:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
при цьому echo -ne '\ 015' буде обмотано задніми позначками, а не одинарними цитатами. Він повинен імітувати користувача, натискаючи клавішу введення, оскільки команди, які я використовую, переходять до каталогу та виконують там скрипт. Ця команда працює, але лише в тому випадку, якщо екран був приєднаний до того, як вона була створена. Оскільки я намагаюся автоматизувати процес створення екрана та запускати команди всередині нього, я хотів би уникнути необхідності приєднання та від'єднання в рамках сценарію. Я спробую запропонувати створити скрипт оболонки, що містить команди, які мені потрібно виконати на екрані та відредагувати відповідно до моїх результатів.
Чи є спосіб створити екран і запустити команду всередині екрана або однією командою, або без необхідності приєднання до екрана після створення, але перед виконанням команди?
Заздалегідь спасибі.
** Оновлення - спробувавши пропозицію розмістити команди, які мені потрібно виконати в сценарії оболонки, я зміг успішно створити екран і виконати команди зсередини екрана, але я отримую поведінку, що коли сценарій перестає працювати екран також закривається. Це не повинно бути проблемою, оскільки скрипт - це сценарій реєстрації, який повинен зупинятися лише при знанні адміністратора sys або через скрипт, який я намагаюся розробити, проте бажано мати налаштування екрана таким чином, щоб екран не зникає, якщо сценарій зупинено. Чи можна досягти такої поведінки? **
.screenrc
що містить рядок zombie kr
, який буде тримати відкрите вікно, і ви можете натиснути, k
щоб закрити winodw, або r
запустити команду у вікні ще раз. У мене це є за замовчуванням .screenrc.