Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Cron - запуск терминала  (Прочитано 1628 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дмитрий1996

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Cron - запуск терминала
« : 31 Октября 2018, 19:52:16 »
Доброго времени суток всем. Сразу попрошу не кидаться в меня тапками и разными неприятными словами ;D
Для начала опишу то, что я хочу сделать. Написал скрипт синхронизации системы с использованием rsync. Почему скрипт - он расчитан на разные параметры синхронизации, имеет несколько режимов, функции выключения и перезагрузки по окончанию и т.д.. Вобщем удобство и для себя и для того, кому я может быть его поставлю. В процессе работы он пишет в терминал все что делает и т.д., а так же это все сохраняется в лог. Хочу запускать его из cron`а в определенное время, но мне важно что бы я видел когда он начал выполняться, вот тут то я и столкнулся с проблемой.
Cron его удачно запускает и все работает, но ни какие мои танцы с бубном, и всем что нашел в квартире, не привели к тому, что бы все, что выводится скриптом на stdout как то оказалось где нибудь в терминале. Как я понял, скрипты, запущенные, cron`ом выводят свой stdout вообще в никуда.
Была идея поставить где нибудь в  автозагрузку небольшой скрипт, который по умолчанию будет скрыт и ждать какого то ввода, а при получении ввода станет видимым и будет выводить все, что ему отправляет скрипт, запущенный cron`ом. Но я понял что это как то глупо и неэстетично...
Теперь собственно сам вопрос.

Как заставить скрипт, запущенный из cron, писать в терминал?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6752
  • 20% Cooler
    • Просмотр профиля
Re: Cron - запуск терминала
« Ответ #1 : 31 Октября 2018, 20:20:41 »
Как я понял, скрипты, запущенные, cron`ом выводят свой stdout вообще в никуда.
в системный лог они выводятся
journalctl | grep CRON
Строки в кроне (на примере xterm)
DISPLAY=:0
* * * * * /usr/bin/xterm -hold -e /path/command
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Cron - запуск терминала
« Ответ #2 : 31 Октября 2018, 20:52:08 »
мне важно что бы я видел когда он начал выполняться
Возможно, в данном случае достаточно будет wall -n "Скрипт начал выполняться!"
...
wall -n "Скрипт завершил свою работу"
Попробуйте с -n и без -n [заявлено в man что это Suppress the banner (я так понимаю, что не должно выводиться уведомления - только запись сообщения в терминале или консоли; в KDE при этом уведомление выводится вне зависимости от простановки данного параметра)]. Сообщения выводятся во все терминалы и открытые консоли, насколько я понимаю, плюс - стандартное системное уведомление (в теории отключаемое при помощи -n, но на практике что-то не особо отключается).
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн Дмитрий1996

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Cron - запуск терминала
« Ответ #3 : 31 Октября 2018, 21:33:02 »
Строки в кроне (на примере xterm)
Код: [Выделить]
DISPLAY=:0
* * * * * /usr/bin/xterm -hold -e /path/command

Сработало. Но с моим gnome-terminal почему то не работает...
Пробую:
*/1 * * * * /usr/bin/gnome-terminal -x /path/to/script.sh
Если запускаю это просто в терминале - работает, открывается отдельное окно и в нем выполняется скрипт. А из крона почему то не пашет. Хотя сам запуск в логах виден

Пользователь добавил сообщение 31 Октября 2018, 21:34:11:
Возможно, в данном случае достаточно будет
Код: [Выделить]
wall -n "Скрипт начал выполняться!"
...
wall -n "Скрипт завершил свою работу"


Вариант интересный, спасибо))) сейчас попробовал, но чего не появилось ни чего. Если ни чего не получится с предыдущим, буду этот wall раскапывать :D

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6752
  • 20% Cooler
    • Просмотр профиля
Re: Cron - запуск терминала
« Ответ #4 : 01 Ноября 2018, 00:24:00 »
А из крона почему то не пашет. Хотя сам запуск в логах виден
DISPLAY указали в кроне? Это важно.

Пользователь добавил сообщение 01 Ноября 2018, 01:34:29:
zg_nico, у меня тоже что-то не так сработало  :-\

Терминал фоном - открыт раньше активного. Уведомлений (notify-osd) тоже не было.
______
В терминал не выводится, в TTY - выводится.
« Последнее редактирование: 01 Ноября 2018, 01:50:31 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Cron - запуск терминала
« Ответ #5 : 01 Ноября 2018, 02:14:10 »
ALiEN175, по-моему, проблема в sudo. Попробуйте sudo su
wall "hello"
exit
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6752
  • 20% Cooler
    • Просмотр профиля
Re: Cron - запуск терминала
« Ответ #6 : 01 Ноября 2018, 02:19:03 »
zg_nico, не сработало

Для X-терминалов как вариант:
echo "test" | tee /dev/pts/[0-9]*


ТЫК
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Дмитрий1996

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Cron - запуск терминала
« Ответ #7 : 01 Ноября 2018, 08:47:30 »
DISPLAY указали в кроне? Это важно.

Указал. Ради интереса пробовал и с ним и без него. По сути, главное вывести информацию, без разницы в какой терминал, так что проблема решена. Но хочу понять в чем проблема

 

Страница сгенерирована за 0.037 секунд. Запросов: 23.