Saya ingin menjalankan skrip Bash sebelum mematikan atau mem-boot ulang Pi saya (menjalankan Raspbian terbaru, turunan dari Debian).
misalnya jika saya mengetik sudo shutdown now atau sudo reboot now ke dalam command prompt, skrip Bash saya akan dijalankan sebelum melanjutkan dengan shutdown/reboot.
Saya membuat skrip yang sangat sederhana hanya untuk pengujian, untuk memastikan metode saya berfungsi sebelum saya repot-repot menulis skrip yang sebenarnya:
#!/bin/bash
touch /home/pi/ShutdownFileTest.txt
Saya kemudian menyalin file (bernama CreateFile.sh) ke /etc/init.d/CreateFile. Saya kemudian membuat symlink di /etc/rc0.d/ dan /etc/rc6.d/:
sudo ln -s /etc/init.d/CreateFile K99Dave
Saya tidak yakin tentang nama yang tepat untuk symlink tersebut. Beberapa situs web mengatakan "Mulai nama file dengan K", ada yang mengatakan "mulai dengan S", ada yang berkata: "mulai dengan K99 sehingga berjalan pada waktu yang tepat"...
Saya akhirnya mencoba semua hal berikut (tentu saja tidak sekaligus, tetapi satu per satu):
sudo ln -s /etc/init.d/CreateFile S00Dave
sudo ln -s /etc/init.d/CreateFile S99Dave
sudo ln -s /etc/init.d/CreateFile K00Dave
sudo ln -s /etc/init.d/CreateFile K01rpa
sudo ln -s /etc/init.d/CreateFile K99Dave
Setelah membuat setiap symlink, saya selalu menjalankan:
sudo chmod a+x /etc/init.d/CreateFile && sudo chmod a+x /etc/rc6.d/<name of symlink>
Saya kemudian reboot setiap kali.
Setiap kali, file di /home/pi/ShutdownFileTest.txt tidak dibuat; skrip tidak dijalankan.
Saya menemukan komentar ini di postingan lama, yang menyarankan bahwa di atas adalah metode yang ketinggalan jaman:
Cara modern untuk melakukan ini adalah melalui systemd. Lihat "man systemd-shutdown" untuk detailnya. Pada dasarnya, letakkan skrip shell yang dapat dieksekusi di /lib/systemd/system-shutdown/. Argumen seperti "halt" atau "reboot" akan diberikan yang memungkinkan Anda membedakan berbagai kasus jika perlu.
Saya menyalin skrip saya ke /lib/systemd/system-shutdown/, chmod +x, dan mem-boot ulang, tetapi masih belum berhasil.
Saya perhatikan komentar di atas mengatakan bahwa skrip dilewatkan "berhenti" atau "reboot" sebagai argumen. Karena ini harus berjalan secara identik dalam kedua kasus, saya berasumsi bahwa argumen tersebut tidak perlu benar-benar ditangani. Saya juga tidak tahu bagaimana menghadapi argumen itu, jadi saya tidak yakin apakah saya perlu melakukan sesuatu agar argumen itu berhasil atau tidak...
Bisakah seseorang memberi tahu saya di mana kesalahan saya?
Terima kasih sebelumnya, Dave