Стыдно и ненадёжно. Минуты то не хватает, то хватает с запасом в пятьдесят секунд простоя.
Крон про состояние машины ничего не знает, он дёргает задание, как только сам поднялся. Порядок загрузки ему безразличен. Именно поэтому @reboot и ловит то отсутствие сети, то незамонтированный диск с выгрузкой, то неподнятый DNS. Симптомы плавают от загрузки к загрузке, и это худший вид поломки: два раза из трёх всё хорошо.
Правильное место для такого запуска это служба. Там зависимости описываются словами, а менеджер сам выстраивает очередь. Нужна сеть с адресом на руках, пишете After=network-online.target и обязательно Wants=network-online.target, иначе цель просто не будет активирована и первая строка ничего не даст. Нужен смонтированный каталог, добавляете RequiresMountsFor=/data. Нужен запуск с задержкой после готовности, берёте таймер с OnBootSec.
Плюс к этому вы получаете перезапуск при падении, журнал в одном месте и остановку одной командой. Крон ничего из этого не умеет.
[Unit]
Description=sbor
After=network-online.target
Wants=network-online.target
RequiresMountsFor=/data
[Service]
ExecStart=/opt/sbor/run.sh
Restart=always
RestartSec=30
User=sbor
[Install]
WantedBy=multi-user.target
```