Ich habe ein ausführbares Bash-Skript (.bash_history_cleaner), das meinen Bash-Verlauf bereinigt
#!/bin/bash
cat /dev/null > ~/.bash_history && history -c && exit
Ich möchte dieses Skript beim Herunterfahren oder Neustarten des Systems ausführen unddiese Antwort, die systemd verwendetmit dem Dienstnamen as bash_history_cleaner.service
und aktivierte ihn in systemctl. Der Dienst ist aktiv und läuft,
[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
Das beabsichtigte Verhalten sollte darin bestehen, meinen Bash-Verlauf beim Herunterfahren oder Neustarten zu löschen. Aber es funktioniert nicht. Ich habe das System mehrmals heruntergefahren und neu gestartet, aber das Skript wird nicht ausgeführt. Wie führen wir mit systemd ein Bash-Skript vor dem Herunterfahren aus?
Antwort1
Warum nutzen Sie nicht die Vorteile des Linux-Systems und seiner /tmp
Verzeichnisse, um Ihre Daten .bash_history
an einem flüchtigeren Ort zu speichern?
Um den Speicherort Ihrer .bash_history
Datei zu ändern, müssen Sie die HISTFILE
Variable festlegen. Um die Datei bei jedem Neustart zu löschen, platzieren Sie die Datei im /tmp/
Verzeichnis.
~/.bashrc
Damit diese Einstellungen erhalten bleiben, können Sie Ihrer Datei beispielsweise Folgendes hinzufügen :
HISTFILE=/tmp/.bash_history
Sie können sicherstellen, dass andere Benutzer Ihren Verlauf nicht lesen können, indem Sie die Dateiberechtigungen der erstellten Verlaufsdatei überprüfen:
ls -lsa /tmp/.bash_history
Dies führt dazu, dass der Verlauf Ihres Benutzers beim Neustart gelöscht wird, andere Benutzer werden davon jedoch nicht betroffen. Sie können diese Konfigurationsdateien auf Systemebene so einstellen, wie /etc/bash.bashrc
Sie es wirklich möchten. Sie können sogarin /tmp
den RAM legenum sicherzustellen, dass es gelöscht wird.