systemd を使用してシャットダウン前に bash スクリプトを実行する方法は?

systemd を使用してシャットダウン前に bash スクリプトを実行する方法は?

私はbashの履歴を消去する実行可能なbashスクリプト(.bash_history_cleaner)を持っています

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

システムのシャットダウンまたは再起動時にこのスクリプトを実行したいのですが、systemdを使用するこの回答サービス名を次のようにしてbash_history_cleaner.servicesystemctlで有効にしました。サービスは起動して実行中です。

[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に入れる確実にクリアできるようにするためです。

関連情報