Как оказалось, часть команды shutdown уже была выполнена (и размонтирована файловая система) до выполнения этих сценариев.
Следовательно, монтируем файловую систему в начале сценария и размонтируем ее вконец необходим.
Просто добавьте:
mount -oremount,rw /
... в начале скрипта (под #! / bin / bash)
...затем получите код сценария ...
и затем завершите сценарий с помощью:
mount -oremount,ro /
Итак, сценарий OP должен стать:
#!/bin/bash
mount -oremount,rw /
touch /home/pi/ShutdownFileTest.txt
mount -oremount,ro /
...затем он создает файл /home/pi/ShutdownFileTest.txt непосредственно перед выключением / перезагрузкой.
Тем не менее использование этого метода может оказаться нецелесообразным.Вместо этого лучше создать службу, которая запускается всякий раз, когда компьютер включен и работает нормально, но запускает нужный сценарий, когда служба завершается (что происходит при завершении работы / перезагрузке).
Это подробно объясняется здесь , но по существу:
1: создать файл (назовем его example.service).
2: добавить следующее в example.service:
[Unit]
Description=This service calls shutdownScript.sh upon shutdown or reboot.
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/home/pi/shutdownScript.sh
[Install]
WantedBy=multi-user.target
3: Переместите его в правильный каталог для systemd, запустив sudo mv /home/pi/example.service /etc/systemd/system/example.service
4: Убедитесь, что скрипт, запускаемый при завершении работы, имеет соответствующие разрешения: chmod u+x /home/pi/shutdownScript.sh
5: Запустить службу: sudo systemctl start example --now
6: Запустить службу автоматически при загрузке: sudo systemctl enable example
7: Остановить службу: sudo systemctl stop example
Это последнееКоманда будет имитировать то, что обычно происходит, когда система выключается, т.е. она запускает /home/pi/shutdownScript.sh (без фактического выключения системы).
Затем можно дважды перезагрузиться, и она должна работать извторая перезагрузка вперед.
РЕДАКТИРОВАТЬ: Нет, нет, это не так.Это сработало в первый раз, когда я его проверил, но после этого перестал работать.Не уверен почему.Если я выясню, как заставить его работать, я отредактирую этот ответ и удалю это сообщение (или, если кто-то другой знает, пожалуйста, не стесняйтесь редактировать ответ для меня).