systemd를 사용하여 종료하기 전에 bash 스크립트를 실행하는 방법은 무엇입니까?

systemd를 사용하여 종료하기 전에 bash 스크립트를 실행하는 방법은 무엇입니까?

내 bash 기록을 정리하는 실행 가능한 bash 스크립트(.bash_history_cleaner)가 있습니다.

#!/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에 넣다확실히 지워지도록 말이죠.

관련 정보