Как выполнить скрипт 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?

2
задан 22 June 2019 в 03:46

1 ответ

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

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

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

HISTFILE=/tmp/.bash_history

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

ls -lsa /tmp/.bash_history

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

1
ответ дан 22 June 2019 в 03:46

Другие вопросы по тегам:

Похожие вопросы: