ion*_*lex 33 server apt kernel purge
我正在管理几台用于核心服务(NTP、DNS 等)的服务器,我突然发现其中一台服务器似乎保留了 3 个最新内核,而不是其他服务器上的 2 个:
nul@quark:~$ sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
nul@quark:~$ dpkg -l |grep linux-image
ii linux-image-3.13.0-51-generic 3.13.0-51.84 amd64 Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii linux-image-3.13.0-52-generic 3.13.0-52.85 amd64 Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii linux-image-3.16.0-37-generic 3.16.0-37.49~14.04.1 amd64 Linux kernel image for version 3.16.0 on 64 bit x86 SMP
ii linux-image-extra-3.13.0-51-generic 3.13.0-51.84 amd64 Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii linux-image-extra-3.13.0-52-generic 3.13.0-52.85 amd64 Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii linux-image-extra-3.16.0-37-generic 3.16.0-37.49~14.04.1 amd64 Linux kernel extra modules for version 3.16.0 on 64 bit x86 SMP
ii linux-image-generic 3.13.0.52.59 amd64 Generic Linux kernel image
ii linux-image-generic-lts-utopic 3.16.0.37.29 amd64 Generic Linux kernel image
...
nul@dwarf:~$ sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
nul@dwarf:~$ dpkg -l |grep linux-image
ii linux-image-3.13.0-52-generic 3.13.0-52.85 amd64 Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii linux-image-3.16.0-37-generic 3.16.0-37.49~14.04.1 amd64 Linux kernel image for version 3.16.0 on 64 bit x86 SMP
ii linux-image-extra-3.13.0-52-generic 3.13.0-52.85 amd64 Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii linux-image-extra-3.16.0-37-generic 3.16.0-37.49~14.04.1 amd64 Linux kernel extra modules for version 3.16.0 on 64 bit x86 SMP
ii linux-image-generic 3.13.0.52.59 amd64 Generic Linux kernel image
ii linux-image-generic-lts-utopic 3.16.0.37.29 amd64 Generic Linux kernel image
Run Code Online (Sandbox Code Playgroud)
所有服务器都保持相同,不知道我能做什么,一定是某个地方的参数但找不到它!
请满足我的好奇心!谢谢
Ter*_*nce 40
有一个自动生成的文件,用于说明要自动apt-get删除哪些内核以及保留哪些内核。
告诉apt-get它们是哪个内核的文件/etc/apt/apt.conf.d/01autoremove-kernels是从/etc/kernel/postinst.d/apt-auto-removal.
通常发生的情况是,当您接收内核更新时,当内核版本更改时,例如从3.13到3.16,/etc/apt/apt.conf.d/01autoremove-kernels然后更新以保留3.16*内核,然后设置为删除所有3.13内核,除非生成脚本指定不删除。
从apt-auto-removal脚本:
#作者:Steve Langasek # # 将以下内核包标记为 not-for-autoremoval: # - 当前启动的版本 # - 我们需要的内核版本 # - 最新的内核版本(使用从 grub 复制的规则确定) # 决定启动哪个内核的包) # - 第二个最新的内核版本,如果启动的内核版本是 # 已经是最新的,并且这个脚本是为同一个版本调用的, # 以确保在新安装的情况下回退仍然可用 # 此 ABI 的内核无法启动 # 在一般情况下,这会导致正好保存两个内核,但它可以 # 结果保存了三个内核。最好是在一边犯错 # 保存太多内核比保存太少内核。 # # 我们生成这个列表并保存到 /etc/apt/apt.conf.d 而不是标记 # 数据库中的包,因为这是从 postinst 脚本运行的,并且 apt # 将在退出时覆盖数据库。
但是,这有时不会将它们标记为自动删除,因为某些编码已更改版本以防止发生这种情况。
如果要autoremove根据脚本标记除所需内核之外的先前内核,请从终端窗口运行以下命令:
sudo apt-mark auto ^linux-image-
Run Code Online (Sandbox Code Playgroud)
然后,当您运行该apt-get autoremove命令时,只能删除旧的和不再需要的命令。我在下面举了例子:
第一个显示系统上的所有内核减去当前正在运行的内核。
root@terrance-Linux:/home/share# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/ d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' linux-headers-3.16.0-34 linux-headers-3.16.0-34-generic linux-headers-3.16.0-36 linux-headers-3.16.0-36-generic linux-headers-3.16.0-37 linux-headers-3.16.0-37-generic linux-headers-4.0.0-040000 linux-headers-4.0.0-040000-generic linux-image-3.16.0-34-generic linux-image-3.16.0-36-generic linux-image-3.16.0-37-generic linux-image-4.0.0-040000-generic linux-image-extra-3.16.0-34-generic linux-image-extra-3.16.0-36-generic linux-image-extra-3.16.0-37-generic
这显示了当前正在运行的内核。
terrance@terrance-Linux:~$ uname -r 4.0.1-040001-通用
terrance@terrance-Linux:~$ sudo apt-get autoremove [sudo] 露台密码: 阅读包裹清单...完成 构建依赖树 读取状态信息...完成 0 升级,0 新安装,0 删除,0 未升级。
terrance@terrance-Linux:~$ sudo apt-mark auto ^linux-image- linux-image-extra-3.16.0-33-generic 不能标记,因为它没有安装。 linux-image-extra-3.13.0-27-generic 不能标记,因为它没有安装。 linux-image-3.13.0-44-lowlatency 不能标记,因为它没有安装。 linux-image-3.13.0-27-generic 不能标记,因为它没有安装。 linux-image-3.16.0-31-lowlatency 不能标记,因为它没有安装。 linux-image-3.16.0-36-generic 设置为自动安装。 linux-image-lowlatency-lts-utopic 不能被标记,因为它没有安装。 linux-image-extra-3.13.0-36-generic 不能标记,因为它没有安装。 linux-image-3.13.0-36-generic 未安装,无法标记。 linux-image-4.0.0-040000-generic 设置为自动安装。 linux-image-extra-3.13.0-45-generic 不能标记,因为它没有安装。 linux-image-3.16.0-25-generic 未安装,无法标记。
注意: 上面的内容太长,无法一一列举,所以我截断了一点。
terrance@terrance-Linux:~$ sudo apt-get autoremove 阅读包裹清单...完成 构建依赖树 读取状态信息...完成 以下软件包将被删除: linux-image-3.16.0-34-generic linux-image-3.16.0-36-generic linux-image-4.0.0-040000-generic linux-image-extra-3.16.0-34-generic linux-image-extra-3.16.0-36-generic 0 升级,0 新安装,5 移除,0 未升级。 此操作后,将释放 613 MB 磁盘空间。 你要继续吗?[是/否]
因此,在运行这些命令后,您可以看到我现在可以自动删除除当前内核 (4.0.1-040001-generic) 和下一个最新内核 (3.16.0-37-generic) 之外的所有旧内核。
希望这会有所帮助。
| 归档时间: |
|
| 查看次数: |
28212 次 |
| 最近记录: |