Как запустить скрипт при старте ОС

В процессе использования любой операционки встает вопрос о запуске ПО по старту системы. Причем если в Windows с этим все более менее ясно, то в Linux - нет. Ибо чаще нужно не просто запустить скайп, а стартануть задачу из под root.
Раньше (когда systemd еще только угрожало) я, как и большинство народу, предпочитал просто запихать команду в /etc/rc.local.
Но вот сейчас испытал cron и понял, что несколько лет меня обманывали ;)
Cron - это служба, которая отвечает за периодические задачи. Гибкость настройки на высоте. Можно настроить выполнение по четным и не четным дням месяца, минутам/часам, дням недели.

Для настройки службы у каждого пользователя системы есть свой файл crontab.
Редактировать его можно с помощью команды

crontab -e 

Мне нужно было запускать скрипт от root при старте ОС.

sudo crontab -e 

Открывается nano (не понятно почему именно он).
В конец файл добавим свою строку.

@reboot python /home/pi/MyScript.py &

Должно получиться вот так:

Осторожно с последней строкой. Она должна быть пустой. Википедия утверждает, что если это не так можно остаться без всех задач.
Ну и позволю себе содрать с вики примеры задач в crontab.

 # выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
 5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
 # выполнять 1 числа каждого месяца в 14 часов 15 минут
 15 14 1 * * $HOME/bin/monthly
 # каждый рабочий день в 22:00
 0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john
 
 23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
 5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
 0 0 1 1 * echo "С новым годом!"
 15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"
 0-59 * * * * echo "Выполняется ежеминутно"
 0-59/2 * * * * echo "Выполняется по четным минутам"
 1-59/2 * * * * echo "Выполняется по нечетным минутам"
 # каждые 5 минут
 */5 * * * * echo "Прошло пять минут"
 # каждое первое воскресенье каждого месяца. -eq 7 это код дня недели, т.е. 1 -> понедельник , 2 -> вторник и т.д.
 0 1 1-7 7 * [ "$(date '+\%u')" -eq 7 ] && echo "Эта надпись выводится каждое первое воскресенье каждого месяца в 1:00"
Просмотров:   4562

Комментарии

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!