시스템이 부팅될 때 시작되고 시스템이 종료될 때 종료되도록 bash에서 스크립트를 작성하려고 합니다. 내 생각은 나 자신을 위한 시스템 가동 시간 추적기를 만드는 것이었습니다.
이를 위해 일일 가동 시간을 파일에 저장하고 싶습니다. 하지만 사용자(또는 시스템)가 언제 종료를 트리거하는지 알 수 있는 방법을 찾을 수 없습니다. 그렇지 않으면 세션 종료 시간을 파일에 저장할 수 없기 때문에 이는 매우 중요합니다.
또는 x 기간 후에 루프를 실행하고 현재 가동 시간을 저장하여 수행할 수 있습니다. 하지만 불필요한 디스크 작업을 수행하는 것은 비효율적이라고 생각합니다.
이에 대한 기성 솔루션(또는 기본 명령)이 있을 수 있지만 직접 코딩하고 싶습니다.
답변1
설치 스크립트보다는 로그 파일을 검사하여 대부분의 정보를 얻을 수 있습니다. 종료/다시 시작 시 스크립트를 직접 실행하려면 시스템에 따라 systemd 스크립트 또는 init 스크립트를 설치할 수 있습니다. 실제로 종료/시작 이벤트를 측정하기 위한 스크립트를 설치해도 충돌이 해결되지 않으므로 로그를 확인해야 합니다.
이 파일은 /var/log/wtmp
재부팅을 기록하며 각 부팅이 끝날 때 이벤트를 기록합니다. 명령은 last
이 파일을 해석하고 기본적으로 시작 사이의 시간을 표시합니다(그러나 시작 사이의 가동 시간은 표시하지 않음). 그러나 종료는 기록되지 않습니다. wtmp 항목을 추가하여 wtmp에서 종료를 기록하는 스크립트를 추가하는 것도 가능합니다.
충돌을 해결하려면 각 다시 시작 시간을 살펴본 다음 /var/log/syslog*
다시 시작 시간이 있는 파일을 찾은 다음 시작이 시작되기 전의 첫 번째 항목으로 돌아가서 해당 시간을 확인해야 합니다.
tuptime 패키지가 대부분의 작업을 수행하고 정확히 당신이 원하는 것일 수도 있습니다.