Я работаю над автоматизацией процедуры обслуживания, которая включает запуск и остановку сценария, который выполняется в сеансе экрана. Мой подход состоит в том, чтобы завершить сеанс экрана, а затем перезапустить его и запустить команду из сценария, используя возможности для создания экрана и передачи команды без необходимости присоединения к экрану.
Однако у меня возникают трудности с этим. Я могу правильно создать экран, не подключая его 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', заключенным в кавычки, а не в одинарные кавычки. Это для того, чтобы смоделировать пользователя, нажимающего клавишу ввода, поскольку команды, которые я использую, перемещаются в каталог и выполняют сценарий, расположенный там. Эта команда работает, но только если экран был прикреплен после того, как он был создан. Поскольку я пытаюсь автоматизировать процесс создания экрана и запуска команд внутри него, я бы хотел избежать присоединения и отсоединения внутри скрипта. Я попытаюсь предложить сценарий оболочки, содержащий команды, которые мне нужно выполнить на экране и редактировать в соответствии с моими результатами.
Есть ли способ создать экран и запустить команду на экране в виде одной команды или без необходимости прикрепления к экрану после создания, но перед выполнением команды?
Заранее спасибо.
** Обновление - попробовав предложение поместить команды, которые мне нужно выполнить, в сценарий оболочки, я смог успешно создать экран и выполнить команды изнутри экрана, но у меня возникает такое поведение, когда скрипт перестает работать экран также закрывается. Это не должно быть проблемой, так как сценарий является сценарием регистрации, который должен останавливаться только на знаниях администратора системы или сценария, который я пытаюсь разработать, однако было бы предпочтительным настроить экран таким образом, чтобы экран не исчезает, если скрипт остановлен. Возможно ли добиться такого поведения? **
.screenrc
строку zombie kr
, содержащую строку , которая будет держать готовое окно открытым, и вы можете нажать, k
чтобы закрыть winodw или r
снова запустить команду в окне. У меня это по умолчанию .screenrc.