У меня есть скрипт, который напоминает мне перезагружать компьютер, если uptime
он больше, скажем, 3 дня (хотя сейчас он установлен на 0 дней, просто чтобы проверить, работает ли скрипт, так как мой компьютер работал только в течение дня ...).
Я понимаю, что это не самый элегантный сценарий, но я пытаюсь! :)
#!/bin/bash
up=$(uptime | grep "day" > /home/username/uptime.foo && awk < /home/username/uptime.foo '{ print $3 }')
[[ $up -gt 0 ]] && xmessage -center "Restart!"
Я сделал его исполняемым, chmod + x checkup.sh
и он прекрасно работает, когда я запускаю его из терминала через./checkup.sh
Моя запись в crontab для этого скрипта:
46 14 * * * /home/username/Desktop/./checkup.sh
Таким образом, он работает в 14: 46 часов ежедневно ...
Итак ... я думаю, что это должно бежать, если я не сделал что-то действительно глупое. Кроме того, как вы думаете, это нормально, чтобы переместить этот скрипт bash в /bin
?
/home/dnaneet/Desktop/./checkup.sh
работает нормально. Но/home/dnaneet/Desktop/checkup.sh
может не работать правильно? Потому что это нужно./
?Ответы:
Одна вещь за один раз:
Сначала давайте дадим вам пользовательскую папку bin:
Вы хотите использовать crontab. Давайте начнем с чего-то действительно простого:
Хорошо, так что работает
Теперь давайте попробуем запустить скрипт, который делает то же самое
бегать раз в минуту, пока не получится.
Нет, вам не нужно ./ в середине строки. ./ для того, когда вы даете относительные URL.
Хорошо, так что работает
Теперь давайте попробуем запустить скрипт, который вызывает xmessage
не работает
Во-первых, мы не должны зависеть от переменных среды. Это включает в себя настройку пути, настройки x11 или что-то еще (переменные окружения python и ruby приходят на ум ...)
Давайте сделаем наш файл похожим на правильный файл cron anacron. Я сохранил это как тест
Установите для запуска один раз в минуту
crontab test
импортировать этоК сценарию
Хорошо, это работает ... что мы сделали?
Мы изменили все команды, чтобы они не зависели от путей, которые мы не указали явно.
Мы запустили наш скрипт явно с помощью bash.
Мы сказали скрипту, что ожидаем, что он будет на DISPLAY: 0.0
источник
:-/
=
для указания строкиDISPLAY
. Во-вторых, когда я отредактировал свой файл crontab, добавилPATH
предложенное и установил время для запуска позже, всплывающее окно не показывалось. Тем не менее, всплывающее окно показало нормально при запуске сценария с помощью/bin/bash
... что дает?export DISPLAY=:0.0
, он работал нормально. Несмотря на то, что примерно через 5 секунд после того, как часы показывали час, когда показывалось мое всплывающее окно, должен был наблюдаться значительный сдвиг ... Есть предложения? Но да, ваши поправки к сценарию работают!Проблема была решена, прочитайте инструкцию в Google:
описание:
#!/bin/bash
качестве заголовка/home/wc3/palert/
анализ:
ответ:
поместите вашу среду, используя эту строку ниже в вашем скрипте с:
изменить это:
/home/wc3/palert
with: место, где вы поместили свой скрипт, например
/home/budi/script.sh
образец:
Попробуйте поставить свой скрипт на crontab.
источник