如何使用 systemd 在关机前执行 bash 脚本?

如何使用 systemd 在关机前执行 bash 脚本?

我有一个可执行的 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 历史记录。但它不起作用,我多次关闭并重启系统,但脚本没有执行。我们如何使用 systemd 在关机前执行 bash 脚本?

答案1

为什么不利用 Linux 系统及其/tmp目录将您的信息存储.bash_history在更易变的地方呢?

要更改文件的位置.bash_history,您需要设置HISTFILE变量。要使文件在每次重启时被删除,请将文件放在目录中/tmp/

您可以将以下内容添加到文件~/.bashrc以使这些设置持久保留:

HISTFILE=/tmp/.bash_history

您可以通过检查创建的历史文件的文件权限来确认其他用户无法读取您的历史记录:

ls -lsa /tmp/.bash_history

这将导致您的用户历史记录在重新启动时被删除,但不会影响其他人。您可以设置此系统级配置文件,例如/etc/bash.bashrc如果您真的想要。您甚至可以放入/tmpRAM以确保其被清除。

相关内容