У меня есть скрипт, который я пытаюсь заставить систему выполняться при выключении и только при выключении (или перезапуске, если на то пошло). Этот скрипт не запускает и не останавливает сервер; он просто отмонтирует некоторые файловые системы. К сожалению, большая часть документации, которую я нахожу, похоже, думает, что я собираюсь написать скрипт для управления сервером, но это совсем не то, что я делаю.
Чтениеhttp://tuxgraphics.org/npa/systemd-scripts/и man systemd.service
( man systemd.unit
я даже не уверен, что именно я должен понимать) у меня есть:
[Unit]
Description=My umount script
After=network.target syslog.target
[Service]
Type=oneshot
ExecStop=/home/PL/bin/umountb2.sh
StandardOutput=journal
Но я понятия не имею, правильно ли это, и я еще меньше уверен, что это будет выполнено в нужное время. Мне нужно, чтобы это выполнялось когда-то после того, как все обычные пользователи выйдут из системы, но не до того, как будут размонтированы все файловые системы.
Я использую Ubuntu 22.04.2.
Редактировать: теперь файл конфигурации выглядит так:
Description=My special shutdown script
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/home/PL/bin/umountb2.sh
[Install]
WantedBy=multi-user.target
И дела пошли лучше, но есть проблема, потому что мой скрипт cryptsetup
вызывает ошибку. Я думаю, что он выполняется слишком поздно, потому что когда я перезапускаю, я запускаю, journalctl -b -1 --dmesg
там только 3 сообщения, которые следуют за моим скриптом, первое из которых:
ядро: nfsd: последний сервер завершил работу, очищается кэш экспорта