¿Cómo ejecutar un script bash antes de apagar usando systemd?

¿Cómo ejecutar un script bash antes de apagar usando systemd?

Tengo un script bash ejecutable (.bash_history_cleaner) que limpia mi historial de bash

#!/bin/bash
cat /dev/null > ~/.bash_history && history -c && exit

Quiero ejecutar este script al apagar o reiniciar el sistema y lo seguíesta respuesta que usa systemdcon el nombre del servicio como bash_history_cleaner.servicey lo habilitó en systemctl. El servicio está en funcionamiento,

[Unit]
Description=Bash History Cleaner

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/eka/Scripts/.bash_history_cleaner

[Install]
WantedBy=multi-user.target

Su comportamiento previsto debería ser limpiar mi historial de bash al apagar o reiniciar. Pero no funciona, apagué y reinicié el sistema muchas veces pero el script no se ejecuta. ¿Cómo ejecutamos un script bash antes de apagar usando systemd?

Respuesta1

¿Por qué no aprovechar el sistema Linux y su /tmpdirectorio para almacenarlo .bash_historyen un lugar más volátil?

Para cambiar la ubicación de su .bash_historyarchivo, debe configurar la HISTFILEvariable. Para eliminar el archivo cada reinicio, coloque el archivo en el /tmp/directorio.

Puede agregar algo como lo siguiente a su ~/.bashrcarchivo para que estas configuraciones persistan:

HISTFILE=/tmp/.bash_history

Puede confirmar que otros usuarios no pueden leer su historial consultando los permisos del archivo de historial creado:

ls -lsa /tmp/.bash_history

Esto hará que el historial de su usuario se elimine al reiniciar, pero no afectará a los demás. Puede configurar estos archivos de configuración a nivel del sistema, como /etc/bash.bashrcsi realmente lo desea. Tu puedes inclusoponer /tmpen la RAMpara asegurarse de que se aclare.

información relacionada