Использование Crontab для перезапуска замазки - PullRequest
0 голосов
/ 07 февраля 2019

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

Я использую quietvnc для удаленного подключения к моему raspberry pi дома, чтоработает Arduino с последовательным выходом.Я хочу захватить этот последовательный вывод и поместить его в текстовый файл, и для этого я использую функцию последовательной регистрации в замазке.Он прекрасно работает, даже имеет функцию именования даты / времени для создания полезных имен журналов.Проблема в том, что я хочу периодически создавать новый файл журнала, и я выяснил, как запускать и останавливать сеанс шпаклевки, используя сценарии bash .sh, но я хочу автоматизировать этот процесс.

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

IЯ думаю, что это будет так же просто, как планирование сценариев с помощью crontab, однако я сталкиваюсь с недоумением при попытке.Я запланировал две задачи, одну для остановки замазки и одну, чтобы снова запустить ее в новом терминале.Задача, которая убивает замазку, работает в crontab и выполняется с использованием putty_killer.sh, приведенного ниже, но с использованием аналогичного метода, чтобы попытаться перезапустить замазку с правильным профилем, ничего не делает.Я не знаю, выводит ли crontab журналы ошибок, но если это так, я не знаю, где их найти.Это была бы полезная информация, но в основном я просто хочу знать, почему перезапуск не будет работать.

putty_logger.sh

#!/bin/bash
sleep 1
/usr/bin/lxterminal -e /usr/bin/putty -load Hydroponics_Test_Bed

putty_killer.sh

#!/bin/bash
killall putty

crontab -e

# m h dom mon dow command
00 07 * * * /bin/bash /home/pit/sketchbook/putty_killer.sh
00 07 * * * /bin/bash /home/pit/sketchbook/putty_logger.sh

Как я уже сказал, putty_killer работает нормально, а затем putty_logger ничего не делает.Я использовал их оба в терминалах вне crontab, и они отлично работают, но, кажется, crontab не знает, что я запрашиваю в putty_logger.Есть ли проблема с синтаксисом?Нужно ли указывать crontab использовать bash вместо sh?Как?Я плаваю в информации, с которой я действительно не знаю, что делать, так что ваша помощь будет высоко ценится!

INB4 1: я пытался выполнить putty_logger без putty_killer в crontab безрезультатнопоэтому я не думаю, что putty_killer препятствует запуску putty_logger.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Я понял это, ребята!Как выясняется, если в вашей команде есть компонент с графическим интерфейсом, вы должны указать crontab, на какой экран его монтировать.Это можно сделать с помощью экспорта DISPLAY =: 0 && your_command.

Моя последняя запись crontab для запуска putty оказалась:

# m h dom mon dow command
00 07 * * * export DISPLAY=:0 && /bin/bash /home/pit/sketchbook/putty_killer.sh
00 07 * * * export DISPLAY=:0 && /bin/bash /home/pit/sketchbook/putty_logger.sh
0 голосов
/ 07 февраля 2019

дают 2> & 1> / tmp / somelog в конце ваших строк, вы также можете включить отладку оболочки с -x, чтобы вы могли:

00 07 * * * /bin/bash -x /home/pit/sketchbook/putty_killer.sh 2>&1 > /tmp/somelog

ок, чтобы объяснить, linux не нуженРасширения файлов в виде окон и, следовательно, не создают их, поэтому вы можете проверить содержимое файла журнала в cli, например:

cat /tmp/somelog

, и вам не нужна замазка для запуска ssh, попробуйте заменить замазку на:

ssh -i /home/someuser/somekey usename@yourserver 'somecommand'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...