Como executar um script bash antes de desligar usando o systemd?

Como executar um script bash antes de desligar usando o systemd?

Eu tenho um script bash executável (.bash_history_cleaner) que limpa meu histórico do bash

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

Quero executar este script ao desligar ou reiniciar o sistema e seguiresta resposta que usa systemdcom o nome do serviço como bash_history_cleaner.servicee habilitou-o no systemctl. O serviço está instalado e funcionando,

[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

Seu comportamento pretendido deve ser limpar meu histórico do bash ao desligar ou reiniciar. Mas não está funcionando, desliguei e reiniciei o sistema várias vezes, mas o script não foi executado. Como executamos um script bash antes do desligamento usando o systemd?

Responder1

Por que não aproveitar as vantagens do sistema Linux e de seu /tmpdiretório para armazenar seus arquivos .bash_historyem um local mais volátil?

Para alterar a localização do seu .bash_historyarquivo, você precisa definir a HISTFILEvariável. Para que o arquivo seja excluído a cada reinicialização, coloque o arquivo no /tmp/diretório.

Você pode adicionar algo como o seguinte ao seu ~/.bashrcarquivo para que essas configurações persistam:

HISTFILE=/tmp/.bash_history

Você pode confirmar que outros usuários não conseguem ler seu histórico verificando as permissões do arquivo de histórico criado:

ls -lsa /tmp/.bash_history

Isso fará com que o histórico do seu usuário seja removido na reinicialização, mas não afetará outros. Você pode definir esses arquivos de configuração no nível do sistema, /etc/bash.bashrcse realmente desejar. Você também podecolocar /tmpna RAMpara garantir que ele seja limpo.

informação relacionada