如何使用 systemd 在關機前執行 bash 腳本?

如何使用 systemd 在關機前執行 bash 腳本?

我有一個可執行的 bash 腳本 (.bash_history_cleaner),它可以清理我的 bash 歷史記錄

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

我想在系統關閉或重新啟動時執行此腳本並遵循這個答案使用了systemd服務名稱為 asbash_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如果您確實需要,您可以設定此系統級設定檔。你甚至可以放入/tmp內存以確保其已清除。

相關內容