Можно ли запустить сеанс экрана, настроить задание cron и перенаправить вывод задания cron на сеанс экрана? Было бы здорово следить за выводом программы ;-)
Приветствую....
grawity дает хороший способ сделать это, но проблема в том, что каждый раз, когда вы перезапускаете экран / сервер, tty будет меняться.
Вы можете использовать канал для команды write (1), например | write user
. Это отправит сообщение пользователю "user", вам просто нужно, чтобы на экране было открыто окно пользователя этого пользователя, чтобы увидеть результат, но write
добавит сообщение перед значением stdout.
Вы можете использовать tty
на этом экране, чтобы найти путь к tty (должно быть что-то вроде /dev/pts/12
), а затем в crontab перенаправить весь вывод на этот путь, как если бы это был файл.
Как это:
1 2 3 4 5 myapp &> /dev/pts/14
Почему бы просто не запустить экран в cronjob, а затем запустить все, что вы хотите, внутри него? screen -d -m <command to run>
должен сделать свое дело.
как упоминалось в радиусе, нет надежного способа узнать, какой tty или tty ваш сеанс экрана будет использовать в любой момент ... или даже какой из многих псевдо-tty, который может быть открыт на экране, является тем, который вы действительно хотите вывод, отправленный в.
лучше всего перенаправить вывод задания cron (как stdout, так и stderr) в файл, а затем запустить на нем 'tail -f' или 'tail -F' изнутри экрана. это дает вам постоянный файл журнала, а также возможность просматривать его в режиме реального времени.
в качестве альтернативы, не перенаправляйте вывод вообще и просто дождитесь завершения задания - весь вывод будет отправлен по почте владельцу задания.