DevOPS 스크립트의 경우 Debian 시스템을 업그레이드한 후 Debian에 설치된 최신 Linux 커널 버전을 확인하고 실행 중인 버전( uname -r
)과 비교해야 합니다.
이 문제를 해결하는 가장 쉬운 방법은 무엇입니까?
필요한 경우 시스템을 자동으로 다시 시작하려면 어떻게 해야 합니까?
답변1
질문에서 지적했듯이 현재 실행 중인 커널은 다음을 사용하여 얻을 수 있습니다.
uname -r
출력은 다음과 같습니다.
4.19.0-8-amd64
대신 패키지 관리자에서 최신 커널 패키지 버전을 얻어야 합니다. amd64
아키텍처와 표준 설치를 가정하면 linux-image-amd64
항상 최신 커널 패키지를 가리키는 메타패키지 종속성을 확인할 수 있습니다.
dpkg-query -f '${Package}: ${Depends}\n' -W linux-image-amd64
출력은 다음과 같습니다.
linux-image-amd64: linux-image-4.19.0-8-amd64
이를 쉘 스크립트에 넣으려면 두 가지 추가 단계가 필요합니다. 먼저 다음을 통해 아키텍처를 자동으로 결정해야 합니다.
dpkg --print-architecture
출력은 다음과 같습니다.
amd64
linux-image-
둘째, 커널 패키지 이름에서 접두사를 제거 해야 합니다 .
echo linux-image-4.19.0-8-amd64 | sed s/^linux-image-//
출력은 다음과 같습니다.
4.19.0-8-amd64
이 모든 것을 종합하고 올바른 쉘 스크립트 참조를 추가하면 다음과 같은 결과를 얻을 수 있습니다.
if [ "$(uname -r)" != "$(dpkg-query -f '${Depends}' -W "linux-image-$(dpkg --print-architecture)" | sed s/^linux-image-//)" ]; then
reboot
fi
답변2
일반적인 방법으로 이 작업을 수행하는 가장 좋은 방법은 다음과 같습니다.이 댓글에 설명되어 있음.
이 스크립트를 복사하여 붙여넣고 실행 가능하게 만든 다음 실행하면 예상한 결과를 얻을 수 있습니다.