В Ubuntu скрипты для разных уровней выполнения выполняются в соответствии с их присутствием в каталогах /etc/rc[0-6].d. Runlevel 0 соответствует завершению работы и 6 для перезагрузки.
Обычно сценарий хранится в /etc/init.d, а затем символические ссылки помещаются в каталоги, соответствующие требуемым уровням выполнения.
[d2 ] Итак, в вашем случае напишите свой скрипт, сохраните его в /etc/init.d/, затем создайте символическую ссылку в каждом из /etc/rc0.d и /etc/rc6.d (если вы хотите, чтобы оба) указывали на ваш скрипт.Создать символическая ссылка: /etc/rc0.d/K01myscipt -> /etc/init.d/myscript
Скрипты в каждом каталоге уровня выполнения будут выполняться в ASCII-бите, а если порядок в пределах уровня выполнения имеет значение для вас, выберите имя вашей символической ссылки соответственно.
Надеюсь, что это решает. Не забудьте сделать его исполняемым (sudo chmod + x myscript). Кроме того, я не уверен, но, возможно, вам придется отменить выключение в начале скрипта - shutdown -c now и снова выпустить его в конце - shutdown -h now.
Теперь, чтобы узнать, который выдал команду shutdown: 1) Либо, вы можете сделать это с помощью скрипта-оболочки следующим образом:
a. mv /sbin/shutdown /sbin/shutdown-orig b. vim /sbin/shutdown #!/bin/sh echo "$USER has initiated the shutdown process" >> /var/log/shutdown.owner /sbin/shutdown-orig "$@" c. chmod 755 /sbin/shutdown
2) Или обычный пользователь имеет доступ только к команде shutdown через команды sudo и sudo, которые (как правило) регистрируются в /var/log/. Итак, вы можете это проверить. Надеюсь, поможет. Для получения дополнительной информации, любезно обратитесь к моей теме здесь. Не забудьте зайти и сказать им спасибо.
EDIT: Заключение. Если ничего не работает, попробуйте использовать sudo и отключите доступ к завершению работы / перезагрузке, а затем только вы можете проверить журналы и узнать, кто инициировал процесс останова. Подробности в содержании ниже. Благодарю. [F18]