Каждый раз, когда я запускаю свой raspberry pi, я хочу его обновить и обновить. Никакое другое задание cron не должно выполняться до его завершения. Мой crontab теперь выглядит так
@reboot sudo apt-get update && sudo apt-get upgrade -y
*/9 * * * * (python script1.py) &
*/4 * * * * (python script2.py) &
Как заставить script1 и script2 ждать?
Cron не позволяет / не предоставляет собственный механизм для планирования или задержки второго задания до тех пор, пока первое не завершится успешно.
Типичное решение - создать одно задание cron, которое вызывает один сценарий оболочки, и в этом сценарии вы выполняете оба задания, одно за другим, и проверяете статус выхода первого, чтобы предотвратить запуск второго в случае сбоя первого.
Или добавьте логику файла блокировки к каждому заданию, чтобы гарантировать, что первый запуск вашего пакета просто завершится без выполнения вашего фактического задания cron, если зависимость все еще удерживает блокировку https://serverfault.com/a/82863/546643
В вашем случае вместо использования cron для обновления сервера сделайте это из специального задания запуска (в systemd) и отложите запуск демона cron до завершения этого задания обновления.