Вопрос или проблема
мне нужно следующее
допустим, у меня есть запущенный экран «MY_Screen_name» и процесс, работающий внутри него. Я хотел бы завершить «MY_Screen_name» и работающий внутри процесс, а затем запустить другой скрипт.
это будет так?
#!/bin/sh
st_user="myuser"
chown $st_user -R
screen -S MY_Screen_name -X stuff ^C
screen -S MY_Screen_name -X stuff ^X
sleep 5
cd /path/to/myscript
./my_script.sh
Вы можете использовать следующую команду,
$ kill -9 My_Screen_name
После этого, вы можете проверить статус Screen, используя команду,
$ sudo ps -auxf|grep My_Screen_name
Текущая работа или закрыт!!
Ответ или решение
Чтобы программно завершить сеанс GNU screen
, необходимо выполнить несколько шагов. Рассмотрим детально, как это сделать, включая завершение запущенного процесса внутри сеанса, и далее — запуск нового скрипта.
Закрытие сеанса screen
-
Команда для отправки сигналов внутри
screen
: Чтобы корректно завершить процессы, работающие в сеансеscreen
, можно отправить команды прерывания или завершения. Например, для отправки сигнала SIGINT (обычно прерывает процесс) и SIGTERM можно использовать следующие команды:screen -S MY_Screen_name -X stuff '^C' screen -S MY_Screen_name -X stuff '^D'
Обратите внимание, что использование ‘^C’ и ‘^D’ в команде screen -X stuff имитирует нажатие клавиш Ctrl+C и Ctrl+D соответственно.
-
Завершение сеанса: Если сигналы выше не помогают, используйте
quit
, чтобы принудительно завершить сеансscreen
:screen -S MY_Screen_name -X quit
-
Проверка состояния
screen
: после выполнения вышеуказанных команд важно убедиться, что сеанс действительно завершен. Это можно сделать с помощью команды:screen -ls
Эта команда покажет список активных сеансов
screen
. Если ваш сеанс все еще отображается, можно попробовать принудительное завершение с использованиемkill
.
Альтернативное завершение с использованием kill
Если вы хотите использовать команду kill
, необходимо сначала найти идентификатор процесса (PID) сеанса screen
:
ps -aux | grep SCREEN
Затем выполните команду:
kill -9 [PID]
Внимание: Использование kill -9
небезопасно для завершения программ, так как оно не дает программе возможность корректно завершить работу. Это должно использоваться только в крайних случаях.
Запуск другого скрипта
После успешного завершения сеанса screen
убедитесь, что скрипт для запуска находится в нужной директории. Используйте следующую последовательность команд:
cd /path/to/myscript
./my_script.sh
Заключение
Завершение сеанса screen
и последующий запуск скрипта являются важными задачами, которые требуют осторожности, особенно при использовании принудительной команды kill -9
. Обеспечьте правильное управление сеансами и их завершение для предотвращения возможной потери данных или повреждения процессов.
Следуя этому руководству, вы безопасно завершите сеанс screen
, что позволит вам уверенно перейти к выполнению последующих задач.