Answers:
最近我面临类似的情况。安装了太多应用程序,它们开始使用我的root挂载空间。我列出了我遵循的几个步骤,希望您也可以使用相同的步骤。
清理apt-get缓存。以下命令将从apt-get缓存目录中删除所有下载的deb文件。
运行以下命令: sudo apt-get clean
将/ home挂载点移动到其他驱动器。以前,我的主文件夹位于根驱动器上。因此,我将主文件夹移至单独的驱动器。这帮助我减轻了根安装的压力,因为大多数应用程序将其数据存储在/ home / user_name /文件夹中。了解如何将主文件夹移动到单独的驱动器。
增加根分区的大小我知道这是非常明显的答案。但是请相信我,我们的数据需要随着时间而变化。我以为20 GB / root挂载就足够了,但是随着一年的时间,我重新调整了root挂载的大小并增加到50 GB。
apt-get clean
甚至删除已安装的软件包。您可能希望保留这些内容,以防升级失败。
我使用以下命令通过删除旧的标题和图像成功清除了3.5 GB:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
您可以通过执行命令的第一部分来检查将清除哪些软件包:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
-y
apt-get命令中的选项不是必需的。如果您忽略它,apt-get会(仅一次)询问您是否应该删除所有管道包。恕我直言,最好不要使用-y
它,它为您提供了另一种检查的可能性(除了上面提到的第二个命令)。对我来说,这在根分区上释放了15GB!
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
尝试删除我系统中当前安装的内核版本。注意不要使系统无法启动。
uname -r
找到当前内核,并注意不要删除它。如果提供的homebrand
用于检查将清除哪些软件包的命令没有显示当前内核,那么您应该安全地运行他提到的purge命令。
使用dpkg-query
发现最大的包,并删除你不再需要的那些(来源):
dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'
wajig sizes
sudo apt autoclean # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.
sudo shutdown -rf # it will restart your PC immediately and check filesystem in next boot.
删除旧内核版本(如homebrand所建议)可以释放大量空间,如果您还没有这样做的话。
有多种删除旧内核版本的方法,可以在以下答案中找到一系列不同的选项:如何删除旧内核版本以清理引导菜单?
我的首选方法主要是来自笔势回报的答案,将其分解为相当简单的可理解的步骤:
打开终端并检查您当前的内核:
uname -r
不要删除该内核!
接下来,在下面键入命令以查看/列出系统上所有已安装的内核。
dpkg --list | grep linux-image
查找所有低于当前内核的内核。当您知道要删除的内核时,请继续以下操作将其删除。
运行以下命令以删除您选择的内核。
sudo apt-get purge linux-image-x.x.x.x-generic
然后,当您完成清除后,答案将对“ update-grub2”说,这可能现在已经过时了:sudo update-grub
应该适用于Ubuntu 14.04以后的版本。然后,他们还说“重新启动系统”(看来是这样,以便您可以看到已清理的启动菜单),因此在这种情况下没有必要。
grub引导加载程序菜单用于在主页上显示所有较早的内核版本,但现在它们被放在子菜单后面。整洁得多,但是Ubuntu / Linux的新手可能并不知道它们在那里占用了空间。
如建议的那样,不要删除当前内核,建议也保留以前的内核版本,以防万一您需要回滚到该内核。
有更快的方法可以执行此操作,但是我更喜欢此方法的简单性,主要是因为我可以理解其中的每个命令:
“我正在使用什么内核版本?我有什么内核版本?好吧,清除该内核版本。”
漂洗,重复,欣赏您腾出的空间。
复制要从dpkg --list | grep linux-image
终端中获得的结果中要删除的特定较旧内核的名称,然后使用sudo apt-get purge
并粘贴复制的名称是相当容易的。
删除3或4个较旧的内核通常会在根驱动器中释放大约1 GB的空间。
当我需要在服务器上腾出更多可用空间时,请使用以下命令:
find / -type f -size +50M -exec du -h {} \; | sort -n
它会找到所有大于50 MB du -h
的文件,并"sort -n
在管道制作列表按文件大小进行数字排序之后,使“ ”成为更好的文件列表。
按照Ubuntu社区文档上的说明,我发现了一个巨大的垃圾文件-看起来像是/var/log/syslog.1的备份,大概是某些东西在向syslog注入大量负载...
找到它的命令是:
sudo find / -size +1G
然后.Trash
删除文件夹中的任何大文件可能都可以删除...
这是我运行以释放根分区空间的脚本
function myclean {
## Show free space
df -Th | grep -v fs
# Will need English output for processing
LANG=en_GB.UTF-8
## Clean apt cache
apt-get update
apt-get -f install
apt-get -y autoremove
apt-get clean
## Remove old versions of snap packages
snap list --all | while read snapname ver rev trk pub notes; do
if [[ $notes = *disabled* ]]; then
snap remove "$snapname" --revision="$rev"
fi
done
## Set snap versions retain settings
if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
rm -f /var/lib/snapd/cache/*
## Remove old versions of Linux Kernel
# This one-liner is deprecated since 18.04
# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
# New 2 lines to remove old kernels
dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
## Rotate and delete old logs
/etc/cron.daily/logrotate
find /var/log -type f -iname *.gz -delete
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
## Show free space
df -Th | grep -v fs
}
docker system prune
/var/crash/*.crash
太
在Ubuntu中,每个文件夹可以有自己的文件系统。这意味着您可以将任何文件夹移动到其自己的分区,另一个磁盘,甚至在远程网络上。这在主目录中特别流行,因为这意味着您可以重新安装Ubuntu,而无需更改个人设置或丢失任何文件。它在网络中也很流行,在该网络中,用户应该能够登录到不同的计算机,并且仍然可以获取其个人设置和文件。但这在许多不同的情况下很有用,例如您的情况。
应用程序没有像您建议的那样安装在特定的文件夹中。应用程序的不同部分放置在文件系统的不同部分中。例如,主程序通常位于/ usr / bin中,而配置文件位于/ etc中。在您的情况下,对于MySQL,数据库本身位于/ var中的某个位置。我认为/ var / mysql。
由于/ usr和/ var都是根文件系统中的目录,因此它们将使用根文件系统空间。但是正如我所说,您可以将它们移动到不同的文件系统。对于MySQL,您可以配置数据库的存储位置。例如,您可以轻松地将数据库移动到/home/username/.mysql/databases。
您不能更改程序包管理器安装应用程序的路径。大多数应用程序文件保存到/usr
。如果要恢复根分区上的空间,则/usr
可以使用另一个分区。
来自评论:
复制时保留权限,即,如果不确定文件管理器将执行什么操作,请更好地使用命令行。
正确的方法是将新文件系统挂载到/ usr或使用mount --bind
。尚不清楚符号链接的工作原理。
/opt
。
/opt
“规则”中安装了东西。
如果您安装了mssql数据库服务器,则可能会耗尽您的内存。运行NCurses磁盘使用情况
$ sudo ncdu /
检查哪些文件夹和文件占用最大存储空间。mssql数据通常存储在
/var/opt/mssql/backup/