Из-за того, что Gnu Screen труден для Google, у меня не получается найти ответ на этот вопрос.

Как конкретный (что вы пытаетесь сделать) пример:
Запуск серверного процесса (под linux) запускает кучу выходных данных (STDOUT STDERR), которые могут принимать входные данные из STDIN.
Периодически я хочу выполнить команду (/snapshot) для резервного копирования текущего состояния.
Я хочу настроить cron для запуска команды, которая иногда вводит это в STDIN для сервера.

До сих пор я думал, что процесс сервера может выполняться в отдельном сеансе экрана. И я думаю, что команда exec экрана может подключаться к разным сеансам терминала под экраном и передавать STDIN и STDOUT другому процессу. Но чтение документов сбивает с толку. И не помогает, что они говорят, что есть "запутанная иллюстрация", чтобы объяснить это далее.

Если кто-то сделал это, как мне указать команду cron для этого? Пока я думаю (покажи, что ты наделал):

5 * * * * /usr/bin/screen -p 1 -X 'exec ! echo "/snapshot"'

Но здесь я не знаю, сработает ли это, действительно ли это нацелено на процесс сервера в окне 1, и что будет после этого; экран выходит?

1 ответ1

1

Я не думаю, что полностью понимаю ваш конкретный вариант использования, но вот возможный подход, который может помочь.

Вместо того, чтобы создавать дамп процесса в stdout и stderr , запишите их в файл. Кроме того, вы можете использовать tee для записи в файл и в терминал.

Также перенаправьте стандартный stdin используя tail -f на отдельный входной файл. Создайте задание cron, которое записывает новую строку во входной файл с соответствующим интервалом.

Вы все еще можете запустить свой процесс на screen если хотите периодически проверять его (или просто поддерживать его).

Начните свой процесс как:

tail -f /path/to/myinputfile.txt | myprocess 2&>1 >/path/to/outputfile.txt

или, используя tee:

tail -f /path/to/myinputfile.txt | myprocess 2&>1 | tee /path/to/outputfile.txt

И настройте входное задание cron следующим образом:

5 * * * * /bin/cat "/snapshot" >> /path/to/myinputfile.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .