Как выполнить bash-скрипт перед выключением с помощью systemd?

Как выполнить bash-скрипт перед выключением с помощью systemd?

У меня есть исполняемый скрипт bash (.bash_history_cleaner), который очищает мою историю bash

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

Я хочу выполнить этот скрипт при выключении или перезагрузке системы и следоватьэтот ответ, который использует systemdс именем службы как bash_history_cleaner.serviceи включил его в systemctl. Служба запущена и работает,

[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

Его предполагаемое поведение должно быть таким, чтобы очищать мою историю bash при выключении или перезапуске. Но это не работает, я выключал и перезапускал систему много раз, но скрипт не выполняется. Как нам выполнить скрипт bash перед выключением с помощью systemd?

решение1

Почему бы не воспользоваться преимуществами системы Linux и ее /tmpкаталога для хранения ваших данных .bash_historyв более нестабильном месте?

Чтобы изменить местоположение файла .bash_history, вам нужно задать HISTFILEпеременную. Чтобы файл удалялся при каждой перезагрузке, поместите файл в каталог /tmp/.

~/.bashrcЧтобы эти настройки сохранились, вы можете добавить в свой файл что-то вроде следующего :

HISTFILE=/tmp/.bash_history

Вы можете убедиться, что другие пользователи не могут читать вашу историю, проверив права доступа к созданному файлу истории:

ls -lsa /tmp/.bash_history

Это приведет к удалению истории вашего пользователя при перезагрузке, но не повлияет на других. Вы можете установить эти файлы конфигурации системного уровня, /etc/bash.bashrcесли вы действительно хотите. Вы можете дажепоместить /tmpв оперативную памятьчтобы гарантировать его очистку.

Связанный контент