종료(또는 재부팅)가 진행 중인지 감지할 수 있습니까?

종료(또는 재부팅)가 진행 중인지 감지할 수 있습니까?

시스템이 부팅될 때 시작되고 시스템이 종료될 때 종료되도록 bash에서 스크립트를 작성하려고 합니다. 내 생각은 나 자신을 위한 시스템 가동 시간 추적기를 만드는 것이었습니다.

이를 위해 일일 가동 시간을 파일에 저장하고 싶습니다. 하지만 사용자(또는 시스템)가 언제 종료를 트리거하는지 알 수 있는 방법을 찾을 수 없습니다. 그렇지 않으면 세션 종료 시간을 파일에 저장할 수 없기 때문에 이는 매우 중요합니다.

또는 x 기간 후에 루프를 실행하고 현재 가동 시간을 저장하여 수행할 수 있습니다. 하지만 불필요한 디스크 작업을 수행하는 것은 비효율적이라고 생각합니다.

이에 대한 기성 솔루션(또는 기본 명령)이 있을 수 있지만 직접 코딩하고 싶습니다.

답변1

설치 스크립트보다는 로그 파일을 검사하여 대부분의 정보를 얻을 수 있습니다. 종료/다시 시작 시 스크립트를 직접 실행하려면 시스템에 따라 systemd 스크립트 또는 init 스크립트를 설치할 수 있습니다. 실제로 종료/시작 이벤트를 측정하기 위한 스크립트를 설치해도 충돌이 해결되지 않으므로 로그를 확인해야 합니다.

이 파일은 /var/log/wtmp재부팅을 기록하며 각 부팅이 끝날 때 이벤트를 기록합니다. 명령은 last이 파일을 해석하고 기본적으로 시작 사이의 시간을 표시합니다(그러나 시작 사이의 가동 시간은 표시하지 않음). 그러나 종료는 기록되지 않습니다. wtmp 항목을 추가하여 wtmp에서 종료를 기록하는 스크립트를 추가하는 것도 가능합니다.

충돌을 해결하려면 각 다시 시작 시간을 살펴본 다음 /var/log/syslog*다시 시작 시간이 있는 파일을 찾은 다음 시작이 시작되기 전의 첫 번째 항목으로 돌아가서 해당 시간을 확인해야 합니다.

tuptime 패키지가 대부분의 작업을 수행하고 정확히 당신이 원하는 것일 수도 있습니다.

관련 정보