Выполняется . ./test.sh
совпадает с исходным кодом ./test.sh
. Он запускает сценарий в текущей оболочке, а не в подоболочке (т. Е. Не разветвляется). Это может изменить переменные с тем же именем в вызывающем сценарии, и это оставит переменные и функции, которые были определены в ./ test.sh
, также определенные и видимые после вызова в вызывающем сценарии.
systemctl mask unattended-upgrades
Пояснение:
Модули systemd могут быть переопределены администратором, поместившим файл с таким же именем в /etc/systemd/system
.
Этот механизм также можно использовать для «маскировки» службы от активации с помощью активации сокета, ручного запуска или любого другого метода. Вместо того, чтобы создавать файл с тем же именем, если есть символическая ссылка на /dev/null
, то блок эффективно игнорируется.
Таким образом, вы можете ab (использовать )systemctl mask
, чтобы заменить содержимое блока ничем.
Во избежание возможной путаницы в будущем убедитесь, что вы удалили маску после того, как удалили пакет. systemctl unmask unattended-upgrades
.
Я также столкнулся с этой проблемой, и кажется, что причина этого в том, что systemd слишком стар для поддержки файла unattended-upgrades.service
, в котором отсутствует конфигурация ExecStart
. Убедитесь, что пакет systemd
также обновлен (версия 232 у меня работала ).
Если проблема сохраняется (, как это было у меня ), то systemd
возможно, не был перезапущен во время обновления (Я думаю, что это должно произойти автоматически, но я думаю, что это не для меня ). Чтобы исправить это, запустите:
sudo systemctl daemon-reexec
Это перезапускает systemd
, запуская более новую версию, которая должна нормально поддерживать новый служебный файл.
Та же проблема в Debian 9 с последними пакетами обновления systemd и автоматическими -. Поэтому я отредактировал этот файл:
/lib/systemd/system/unattended-upgrades.service
и добавьте эту строку:
ExecStart=/bin/true
непосредственно перед строкой ExecStop и теперь все в порядке, пока сервис не замаскирован.