Перезапустите процесс в отдельном экране через ssh

У меня есть сервер с несколькими экранами, каждый из которых имеет свой собственный сервер узла, перечисляющий разные порты. Я хотел бы создать задания Jenkins для ssh в поле, повторно подключить определенный экран, остановить процесс, вытащить из git, перезапустить приложение и отсоединить экран. Можете ли Вы "вещи" Ctrl + C в экран? Думая что-то вроде:

ssh myuser@myserver "screen -S 1234.myscreen -X stuff '[[Ctrl+C]] && git pull origin master && npm install && node app' [[Detach screen]]"
11
задан swider
24.02.2023 6:55 Количество просмотров материала 2862
Распечатать страницу

2 ответа

Ctrl+C посылает SIGINT. Поэтому, если вы можете определить PID процесса, который вы хотите сигнализировать, вы можете сделать kill -INT pid до git pull или killall -INT processname если вы хотите, чтобы остановить их всех, если killall не ведет себя как killall5.

Что касается сценариев отсоединения сеанса экрана, я понятия не имею. Возможно, вам поможет кто-то другой.

EDIT: мне просто пришло в голову, что вам не нужно писать сценарий отряда или действительно что-то делать с экраном. Просто выполнить что-то вроде этого внутри экрана:

while sleep 1; do
    ./some_program      # which saves its PID to a pidfile
    git pull
done

и тогда вы можете выполнить это с внешнего экрана, через ssh:

kill -INT $(cat pidfile)

если ваш процесс не сохраняет файл PID, вы можете попробовать использовать start-stop-daemon, чтобы сделать это:

start-stop-daemon --start --exec ./some_program --pidfile pidfile --make-pidfile
2
отвечен Aaron Jones 2023-02-25 14:43

последовательность Ctrl+C должна быть введена как литерал ^c символ:

Ctrl+V (позволяет вставить литеральный символ), затем Ctrl+C

когда stuff команда используется экран не интерактивно присоединить сеанс, так что не нужно отсоединять. Однако может потребоваться возврат каретки после последней команды, введенной как литерал:

Ctrl+V Ctrl+M

1
отвечен gm2 2023-02-25 17:00

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх