せっかちな人向け
現在動作中のカーネルのバージョンを知りたければ
uname -r
インストール済みのカーネルのバージョンを知りたければ
dnf list --installed kernel
(で表示されるものの最新のバージョンを見る)
両者が一致していれば、新しいカーネルをインストール後に再起動している。一致していなければ、新しいカーネルをインストール後に再起動していない。(<= これが確認したかった。1)
以下詳細
(実際に確認したのがRocky Linuxというだけで、Rocky Linux限定の話ではないと思います。)
背景
アップデートはサーバ管理者の嗜みの一つでしょう。一方、再起動は滅多にしないというのもサーバ管理者の嗜みの一つかと思います。この2つが合わさると、「アップデートはしたものの再起動してない気がする(ということは今実行しているのは古いバージョンのカーネルなのでは)」という事態によく陥るのではないかと思います。
やりたいこと
そんな時、いつアップデートしていつ再起動したか断言できればいいのですが、普通は「いや、そういえば再起動した気もするし。でも、それはアップデートの前のことだったかな」とかなるのではないでしょうか。それなら、アップデートしたカーネルのバージョンと現在実行中のカーネルのバージョンが分かればいいですよね。要するにLinuxでFreeBSDのfreebsd-versionの-kと-rみたいなことがやれれば良いわけです2。freebsd-versionのmanページにも
if a new kernel has been installed but the system has not yet rebooted, freebsd-version will print the version and patch level of the new kernel.
(-kオプションの説明)
なんてあります。これですよ、これ。今欲しいのは。
動作中のカーネルのバージョン
uname -r
です。これはRocky Linux限定でなく、Linux限定でもなく、Unix一般の話だと思います。
インストール済みのカーネルのバージョン
dnf list --installed kernel
kernelという名前でインストール済みのパッケージを表示する、ということです。3つ前のものまで保持しておくみたいですから、(最大)3つ表示されるでしょう。そのうち一番新しいバージョンを見れば「インストール済みの最新のカーネルのバージョン」が分かります。心配症の人は
dnf list --installed kernel*
とすればkernelで始まるパッケージをすべて表示してくれます。
rpm -qa | grep kernel
で確認できると書いてあるサイトも見たことがありますが、おそらく内容的には上と(ほぼ)同じものを表示することになるのではないかと。でも、今はdnfを使う方がダンディだと思います。
ここまで書いておいて何ですが、dnfやrpmということは(Rocky Linux限定ではないものの)当然Red Hat系の話をしています。Debian系はきっと他の誰かが頑張ってくれることでしょう3。
やってみた
ちょうどカーネルの新しいバージョンが出ていたので、実際にやってみました。再起動前には
だったものが、再起動後には
となりました。再起動前は実行中のカーネルのバージョンはインストール済みkernelパッケージの2番目のもの(39)だったのが、再起動後は3番目のもの(52)になっていることが分かります。