Linux: запустить задание cron на переднем плане

Есть ли в Linux способ запустить задание cron на переднем плане (или в интерактивном режиме)? (У меня есть программа, которая периодически запускается, чтобы принимать пользовательский ввод и выполнять некоторую обработку. Поэтому я хочу запланировать ее как задание cron, которое может выполняться на переднем плане).


person Neo    schedule 07.10.2012    source источник
comment
Как вы ожидаете, что cron свяжется с вами? Открытие терминала, запуск приложения с графическим интерфейсом и т. д.?   -  person Renato Zannon    schedule 07.10.2012
comment
Открытие терминала будет работать для меня. На самом деле, я не хочу делать сложное приложение с графическим интерфейсом. Моя мысль такова: если я запускаю программу вручную из оболочки, я могу вводить данные в интерактивном режиме. Я хочу иметь возможность делать то же самое, когда программа запускается автоматически.   -  person Neo    schedule 07.10.2012
comment
Возможно, вас заинтересует expect tcl.tk/man/expect5.31 /expect.1.html, но я не уверен, что это хорошая идея.   -  person Basile Starynkevitch    schedule 07.10.2012


Ответы (4)


Попробуйте это на crontab вашего пользователя:

@hourly DISPLAY=:0 xterm -e /path/to/my/script.sh

Он будет открывать (ежечасно) xterm с выполнением вашего скрипта и выходить после выхода вашего скрипта. Конечно, вы должны изменить часть @hourly в соответствии с вашими потребностями.

person Renato Zannon    schedule 07.10.2012

Для GUI сценариев в cron попробуйте следующую строку в shell:

crontab -e

Затем в crontab :

0 7 * * * DISPLAY=:0 /PATH/TO/SCRIPT
person Gilles Quenot    schedule 07.10.2012
comment
Адаптируйте его под свои нужды, конечно ;) - person Gilles Quenot; 07.10.2012
comment
Я пробовал то же самое, но он все еще работает в фоновом режиме. Спасибо за ваш ответ в любом случае. - person Neo; 07.10.2012
comment
У меня сработало, правда пришлось перезапускать cron через сервис cron restart :) - person cesartalves; 11.12.2019

Предполагая, что вы используете X, вы всегда можете открыть окно на выбранном дисплее.

person Ofir    schedule 07.10.2012
comment
Я предполагаю, что вы имеете в виду Mac OS X. Я использую Ubuntu. Однако я бы хотел, чтобы мой скрипт работал как в Ubuntu, так и в Mac OS X. - person Neo; 07.10.2012
comment
Я имел в виду X windows, en.wikipedia.org/wiki/X_Window_System, и вы, вероятно, используете Это - person Ofir; 07.10.2012
comment
Да. Думаю, это также то, что предложили другие. Спасибо. - person Neo; 07.10.2012
comment
Вы должны экспортировать отображаемую переменную или добавить ее в свой файл bashrc. - person anlgrses; 08.08.2020

если у вас нет графического интерфейса и у вас есть только терминал, перенаправьте выход на tty, выполните «tty», и он вернет устройство, на которое вы перенаправите вывод, например, в Centos это будет что-то вроде /dev/pts /0 то в crontab -e пишешь 1 * * * * user sh/ПУТЬ/К/СКРИПТ› /dev/pts/0 настраиваешь время в crontab под свои нужды. Он будет работать только в том случае, если есть кто-то с открытым терминалом.

НО ЧТО ЛЮДИ ИЩУТ ПО НАЗВАНИЮ ВОПРОСА Linux: Запустить задание cron на переднем плане, ответ nohup command_to_run & 1 * * * * nohup user sh / PATH / TO / SCRIPT & nohup позволяет выполнять скрипт, как если бы это был открытый терминал и решает проблему выполнения crontab. Я имею в виду, когда мы создаем скрипт, например #! /бин/баш

эхо я придумываю, и мы ждем выхода эха, чтобы что-то с ним сделать. пример эхо я придумываю, если [[$? -gt 0]] затем сделайте что-нибудь с выводом echo

Ответ на эхо-выполнение получается через stdout в терминале tty, но из crontab нет tty и происходит сбой, и crontab не выполняет приложение. Это решается с помощью nohup. Подробнее...

person David    schedule 07.08.2020