Как запускать скрипт при начальной загрузке и затем каждые 30 минут

У меня есть машина Сервера Ubuntu, в которой я должен запустить скрипт Python:

  • при начальной загрузке и затем каждые 30 минут
  • с корневым разрешением
  • без входа в систему

Я искал в Интернете, и я узнал, что должен использовать sudo crontab -e изменить мои настройки крона и добавить строку как этот:

 30 * * * * python3 /myScriptPath/myScriptName.py

То, что я не мог найти, - то, как сказать крону, что мой скрипт должен быть запущен при начальной загрузке и затем каждые 30 минут и не каждый час в "hh:30" время.

Кроме того, где я должен сохранить свой сценарий?

1
задан 24 November 2019 в 23:52

1 ответ

Запишите сценарий удара и поместите, он в /etc/cron.d

#!/bin/bash

while true ; do

    python3 /myScriptPath/myScriptName.py &
    sleep 30m

done

Делает это исполняемым файлом chmod a+x /etc/cron.d/bashscript.

Эти & запускает задание в фоновом режиме, таким образом, сценарий будет спать в течение точно 30 минут. Можно удалить &, и это изменяет сценарий для сна спустя 30 минут после того, как задание заканчивается. Означающие задания больше не запускаются на расстоянии в 30 минут.

<час>

Крон выполняет Ваше задание

, Вы не должны запускать сценарий, крон делает это автоматически во время начальной загрузки. Контролировать использование состояния:

$ systemctl status cron*
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-11-12 06:01:27 MST; 1 weeks 6 days ago
     Docs: man:cron(8)
 Main PID: 1115 (cron)
   CGroup: /system.slice/cron.service
           ├─1115 /usr/sbin/cron -f
           ├─1132 /usr/sbin/CRON -f
           ├─1138 /bin/sh -c    /usr/local/bin/eyesome.sh
           ├─1142 /bin/bash /usr/local/bin/eyesome.sh
           ├─1160 /bin/bash /usr/local/bin/eyesome-dbus.sh
           ├─1168 dbus-monitor --system type=method_call, interface=org.freedesktop.ColorManag
           ├─1169 /bin/bash /usr/local/bin/eyesome-dbus.sh
           └─6575 sleep 57207

Ваш дисплей будет иметь cron наверху и sleep внизу, но не будет иметь eyesome материал в середине, если Вы не будете использовать тот восход солнца/закат, несколько контролируют программное обеспечение перехода яркости/гаммы.

Для наблюдения, когда прогоны задания Python в он - затем 30-минутный интервал, выполняет запрос об идентификаторе процесса sleep команда (который является 6575 в примере выше):

$ remaining_sleep_time 6575
55923

$ echo $((55923/60))
932

время, оставаясь составляет 55 923 секунды, разделенные на 60 секунд за минуту = за 932 минуты до того, как задание проснется. Для получения копии remaining_sleep_time функция, см.:

1
ответ дан 7 December 2019 в 14:56

Другие вопросы по тегам:

Похожие вопросы: