Ubuntu linux标头正在EC2机器上消耗大量磁盘空间。使用rm命令手动删除标题是否安全?
aws上的EC2机器充满了多个linux标头,目前磁盘空间已满100%。我运行了类似于apt get autoremove的命令,但它抛出了一个错误Ubuntu linux标头正在EC2机器上消耗大量磁盘空间。使用rm命令手动删除标题是否安全?,ubuntu,amazon-ec2,linux-kernel,Ubuntu,Amazon Ec2,Linux Kernel,aws上的EC2机器充满了多个linux标头,目前磁盘空间已满100%。我运行了类似于apt get autoremove的命令,但它抛出了一个错误 No apport report written because the error message indicates a disk full error dpkg-deb: error: subprocess paste was killed by signal (Broken pipe) 我可以通过rm命令删除旧标题吗?安全吗?如果我用rm
No apport report written because the error message indicates a disk full error
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
我可以通过rm命令删除旧标题吗?安全吗?如果我用rm命令删除,我应该在那之后做任何清理吗?
以下是标题列表:
du -h -d1 /usr/src/ | sort -hr
2.8G /usr/src/
106M /usr/src/linux-aws-headers-4.4.0-1099
106M /usr/src/linux-aws-headers-4.4.0-1098
106M /usr/src/linux-aws-headers-4.4.0-1096
106M /usr/src/linux-aws-headers-4.4.0-1095
106M /usr/src/linux-aws-headers-4.4.0-1094
106M /usr/src/linux-aws-headers-4.4.0-1092
106M /usr/src/linux-aws-headers-4.4.0-1090
106M /usr/src/linux-aws-headers-4.4.0-1088
106M /usr/src/linux-aws-headers-4.4.0-1087
106M /usr/src/linux-aws-headers-4.4.0-1085
106M /usr/src/linux-aws-headers-4.4.0-1084
106M /usr/src/linux-aws-headers-4.4.0-1083
106M /usr/src/linux-aws-headers-4.4.0-1079
106M /usr/src/linux-aws-headers-4.4.0-1077
106M /usr/src/linux-aws-headers-4.4.0-1075
106M /usr/src/linux-aws-headers-4.4.0-1074
106M /usr/src/linux-aws-headers-4.4.0-1072
106M /usr/src/linux-aws-headers-4.4.0-1070
106M /usr/src/linux-aws-headers-4.4.0-1069
106M /usr/src/linux-aws-headers-4.4.0-1066
106M /usr/src/linux-aws-headers-4.4.0-1065
106M /usr/src/linux-aws-headers-4.4.0-1062
106M /usr/src/linux-aws-headers-4.4.0-1061
106M /usr/src/linux-aws-headers-4.4.0-1060
13M /usr/src/linux-headers-4.4.0-1100-aws
13M /usr/src/linux-headers-4.4.0-1099-aws
13M /usr/src/linux-headers-4.4.0-1098-aws
13M /usr/src/linux-headers-4.4.0-1096-aws
13M /usr/src/linux-headers-4.4.0-1095-aws
13M /usr/src/linux-headers-4.4.0-1094-aws
13M /usr/src/linux-headers-4.4.0-1092-aws
13M /usr/src/linux-headers-4.4.0-1090-aws
13M /usr/src/linux-headers-4.4.0-1088-aws
13M /usr/src/linux-headers-4.4.0-1087-aws
13M /usr/src/linux-headers-4.4.0-1085-aws
13M /usr/src/linux-headers-4.4.0-1084-aws
13M /usr/src/linux-headers-4.4.0-1083-aws
13M /usr/src/linux-headers-4.4.0-1079-aws
13M /usr/src/linux-headers-4.4.0-1077-aws
13M /usr/src/linux-headers-4.4.0-1075-aws
13M /usr/src/linux-headers-4.4.0-1074-aws
13M /usr/src/linux-headers-4.4.0-1072-aws
13M /usr/src/linux-headers-4.4.0-1070-aws
13M /usr/src/linux-headers-4.4.0-1069-aws
13M /usr/src/linux-headers-4.4.0-1066-aws
13M /usr/src/linux-headers-4.4.0-1065-aws
13M /usr/src/linux-headers-4.4.0-1062-aws
13M /usr/src/linux-headers-4.4.0-1061-aws
13M /usr/src/linux-headers-4.4.0-1060-aws
测向命令输出:
df -k
Filesystem 1K-blocks Used Available Use% Mounted on
udev 499316 0 499316 0% /dev
tmpfs 101444 10740 90704 11% /run
/dev/xvda1 8065444 8049060 0 100% /
tmpfs 507212 0 507212 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 507212 0 507212 0% /sys/fs/cgroup
/dev/xvdf 5029504 10244 4740732 1% /data
tmpfs 101444 0 101444 0% /run/user/1000
这个命令对我起了作用:
apt-get -f autoremove
上下文
我遇到了与OP相同的错误。为了能够运行jpereira回答中建议的命令(apt get-f autoremove
),我首先必须释放大约10MB的空间
但当我运行它时,发生了一件奇怪的事情,apt get说它将删除所有的linux头文件
(和其他一些)包,但它首先尝试安装另一个包(snapd
),但因为没有空间安装它,所以过程失败
下次我尝试运行该命令时,就好像apt-get
忘记了linux头文件(以及其他)包一样。因此,我继续尝试手动移除其中一个包:
sudo apt-get remove linux-aws-headers-4.4.0-1065
此命令成功地从/usr/src
目录中删除了2个目录。它删除了与包同名的目录和同名的包,但将-aws
移到了末尾
要删除所有这些文件,我运行了这个命令,但不要使用它,因为我最终删除了一些不会被autoremove
功能删除的文件包,而且我也没有删除所有会被autoremove
功能删除的文件包
cd /usr/src
while read pkg; do sudo apt-get -y remove $pkg; done < <(find . -maxdepth 1 -type d -name "linux*" -printf "%f\n")
确保该命令的输出是一个包列表,其中每个包位于一行中。如果可行,那么继续运行类似于我之前使用的命令:
while read pkg; do sudo apt-get -y remove $pkg; done < <(echo "<PASTE COPIED LIST OF PACKAGES HERE>" | cut -c3- | tr " " "\n")
在读取pkg时;do sudo apt get-y删除$pkg;完成<要安全删除linux标头,请始终使用:
$ sudo apt-get autoremove
有时,上述命令会给出如下错误:
Reading package lists... Error!
E: Could not create temporary file for /var/cache... (28: No space left on device)
E: The package lists or status file could not be parsed or opened.
在这种情况下,手动删除一个或两个旧标题。
要执行此操作,请首先转到/usr/src
文件夹,并使用以下命令按日期(降序)列出文件:
$ cd /usr/src
$ ls -lt
然后选择一个旧的头文件(例如linux-aws-headers-4.4.0-1067
),并使用以下命令将其删除:
$ sudo rm -r linux-aws-headers-4.4.0-1067
执行此操作后,命令sudo apt get autoremove
应该可以正常工作。I使用此shell代码自动删除不需要的目录:
sudo apt-get autoremove
cd /usr/src
sudo rm -r $(comm -23 <(ls /usr/src) <(apt-file search /usr/src/* | awk -F / '{print $4}' | sort -u))
sudo-apt-get-autoremove
cd/usr/src
sudo rm-r$(comm-23I使用dpkg
和apt get-f安装首次修复包状态
然后,我尝试按照apt-get-autoremove
的建议删除旧内核
但这只会删除一个内核。
在那里,我发现安装了更多
dpkg --get-selections|grep linux-modules|grep -v deinstall
我必须明确删除这些内核:
apt-get remove linux-image-4.4.0-1123-aws linux-image-4.4.0-1121-aws linux-image-4.4.0-1119-aws linux-image-4.4.0-1114-aws ... linux-modules-4.4.0-1124-aws linux-modules-4.4.0-1121-aws linux-modules-4.4.0-1119-aws linux-modules-4.4.0-1114-aws ...
之后,我可以使用apt-get-autoremove
进行清理,它删除了标题
报告了一些残羹剩饭,因此我不得不手动清理:
cd /lib/modules
rm -rf 4.4.0-1124-aws 4.4.0-1123-aws 4.4.0-1122-aws 4.4.0-1121-aws4.4.0-1119-aws 4.4.0-1118-aws 4.4.0-1117-aws 4.4.0-1114-aws ...
我仍然不知道为什么apt-get-autoremove
对我不起作用。通常(在正确的发行版中)这些都是由软件包提供的。你可以在Ubuntu中使用apt
或dpkg
检查发生了什么。清除(删除)是安全的冗余包。在您的情况下,我希望查看是否有apt
缓存剩余,并从清理它开始(不使用rm
命令)。谢谢@0andriy,你知道有什么特别的命令可以用来检查apt
缓存并清理它吗?@hithyshi安装apt file
命令,然后运行apt file search/usr/src/linux-aws-headers-4.4.0-1099
来查找负责这些文件的包。谢谢@0andriy,谢谢Marco Bonelli。我做了一些工作hings和它目前帮助清理了一些空间。我用rm命令手动删除了12个冗余头。然后运行清除命令:example-rm-rf linux-aws-headers-4.4.0-1060
,然后sudo apt get purge linux-image-4.4.0-1060-aws
。我对12个冗余头执行了上述操作。这已经清除了很多spa现在是ce。必须采取措施确保不会重复此操作。这很有帮助,因为我在运行sudo apt autoremove时在一个特定的头上出现错误。我只是按照此处所述手动删除了它,然后重新运行autoremove,没有任何问题。
cd /lib/modules
rm -rf 4.4.0-1124-aws 4.4.0-1123-aws 4.4.0-1122-aws 4.4.0-1121-aws4.4.0-1119-aws 4.4.0-1118-aws 4.4.0-1117-aws 4.4.0-1114-aws ...