Я заставил это работать с setsid. Моя часть ВЫПОЛНЕНИЯ правила udev:
RUN+="/bin/bash script.sh"
затем в сценарии:
#!/bin/bash
if [ "$1" != "fo_real" ]; then
/usr/bin/setsid $(/usr/bin/dirname $0)/$(/usr/bin/basename $0) fo_real &
exit
fi
Rest of script is here....
Первый вызов к возвратам сценария со статусом выхода 0, но второй вызов к сценарию продолжает бежать с PPID = 1.
sudo apt-get dist-upgrade
очень безопасно работать, так как он ничего не сделает с системой, вместо того, чтобы остановиться, чтобы попросить вашего подтверждения;) Вы должны добавить переключатель -y
, который предназначен для автоматического обновления и заставляет apt предположить, что вы всегда отвечаете "да" на вопросы: sudo apt-get -y dist-upgrade
. В man-странице указано, что
Если возникает нежелательная ситуация, например, смена удерживаемого пакета, попытка для установки неаутентифицированного пакета или удаления необходимого пакета происходит, когда apt-get прерывает
но запуск без метки всегда рискованно, так что вы можете захотеть избежать этого.
Вы всегда можете проверить, что apt сделает, добавив переключатель -s
, например: sudo apt-get -s dist-upgrade
. Это переключает apt в режим имитации, в котором не происходит никаких изменений, и вы можете безопасно просмотреть все изменения, которые apt сделает в системе.
Существует также более консервативный режим работы apt, а именно apt-get апгрейд
. В man-странице apt-get очень понятно, что она делает:
Получены пакеты, установленные в настоящее время, с новыми доступными версиями. и модернизированы; в настоящее время ни при каких обстоятельствах не устанавливаются пакеты удалены, или пакеты, которые еще не установлены, извлечены и установлены. Новые версии установленных в настоящее время пакетов, которые не могут быть обновлены без изменения статуса установки другого пакета будет оставлено на их текущую версию.
В своем оригинальном ответе я как-то предположил, что ты будешь разгоняться через cron, что, после более внимательного прочтения, кажется, не так. Однако я оставляю соответствующий параграф в качестве общего замечания:
Не рекомендуется запускать sudo apt-get -y dist-upgrade
через cron, особенно если ваши apt-источники случайно укажут на тестовую ветку (что, как правило, не должно происходить на серверах, особенно на производстве), так как вы можете оказаться с непригодной для работы системой. Вы в относительной безопасности, если используете стабильную ветку Debian, но я бы всё равно порекомендовал присутствовать при обновлении.
В любом случае, если вы делаете откат, который собирается произвести серьёзные изменения, у вас всегда должна быть резервная копия. На всякий случай.
Для этого есть пакет ;-).
Помимо cron-apt
, который можно настроить на автоматическое выполнение определённых обновлений, ещё одним полезным пакетом является unattended-upgrades
, который разработан для безопасного автоматического применения обновлений безопасности.
Кроме того, поскольку Erathiel говорит, что автоматически запускать dist-upgrade
небезопасно, но достаточно безопасно запускать его вручную каждый раз, когда есть что обновлять, при условии, что вы не ответите вслепую "Да".