Как настроить выполнение скрипта автоматически с использованием cron?

Как настроить запуск скрипта при старте системы (Ubuntu 22.04) так, чтобы он выполнялся корректно? Пытался добавить задачу в crontab с помощью <code class="bash">@reboot ~/radio/radio.sh</code>, но скрипт не запускается после загрузки. При анализе журналов я обнаружил следующее:

<pre><code class="bash">user@userver:~$ grep CRON /var/log/syslog
May 20 01:15:41 userver cron[626]: (CRON) INFO (Running @reboot jobs)
May 20 01:15:41 userver CRON[695]: (user) CMD (~/radio/radio.sh)</code></pre>

Однако, если запустить скрипт просто так <code class="bash">user@userver:~$ ~/radio/radio.sh</code>, то он работает как задумано. Пожалуйста, помогите разобраться, в чем может быть проблема.
  • 19 мая 2024 г. 22:40
Ответы на вопрос 2
Проблема, скорее всего, заключается в том, что cron не распознает символ тильды (~) как домашний каталог пользователя при запуске скрипта. Для исправления этой проблемы следует указать абсолютный путь к файлу скрипта в задаче cron. 

Для этого отредактируйте вашу задачу в crontab следующим образом:

1. Откройте crontab для редактирования, выполнив команду:
```bash
crontab -e
```

2. Измените строку добавления задачи на:
```bash
@reboot /полный/путь/к/скрипту/radio.sh
```
где `/полный/путь/к/скрипту/` - абсолютный путь к вашему скрипту.

3. Сохраните изменения и закройте файл crontab.

После этого перезагрузите систему и проверьте, выполняется ли скрипт при старте. Если задача cron все еще не выполняется, рассмотрите возможные ошибки в самом скрипте или его правах доступа.
Используйте нормальный полный путь  до скрипта. 
~ это макрос bash - домашний каталог пользователя.
Похожие вопросы