我需要回到 VPS 的基础知识,但我不想将其清除干净。
我知道 Debian 将apt-get
命令存储在某处,但是这些命令被分成单独的日志文件。
是否有可能将所有这些放在一起以获得apt-get
我已发出的所有命令的完整列表(基本上这样我就可以反转它们)?
我正在寻找这个输出:
$ blah
apt-get install libpack-4 libpack-5 libpack-6 libpack-dev
apt-get purge libpack-4
apt-get install blah-1 blah-2
apt-get purge somepack-1
apt-get install libpack-4 libpack-5 libpack-6 libpack-dev
apt-get purge libpack-4
apt-get install blah-1 blah-2
apt-get purge somepack-1
apt-get install libpack-4 libpack-5 libpack-6 libpack-dev
apt-get purge libpack-4
apt-get install blah-1 blah-2
apt-get purge somepack-1
apt-get install libpack-4 libpack-5 libpack-6 libpack-dev
apt-get purge libpack-4
apt-get install blah-1 blah-2
apt-get purge somepack-1
答案1
去/var/log/apt/
在那里您将找到当前的登录信息term.log
以及history.log
已有的信息.gz
。过去几个月的文件。
gunzip 所有的history.log 文件,然后运行以下行:
cat history.log.* | grep Commandline |awk -F":" '{print $2}'> all_apt-get-commands.txt
在该文件中,all_apt-get-commands.txt
您将找到所有命令的列表。
答案2
@jcbermu 解决方案的一项补充。
可以zgrep
直接使用gzip压缩的和未压缩的文件,这将完整的命令(包括gunzipping)简化为一行:
zgrep CommandLine /var/log/apt/history.log* | cut -d\ -f 2-
history.log*
而不是history.log.*
使用,因此电流history.log
也包括在内。
要获得独特的线条,请将其通过管道传输uniq
。要获取仅包含apt-get
调用的行,请将其通过管道传输到grep ^apt-get
.
答案3
正如其他帖子中提到的,您必须查看/var/log/apt
.为了达到您想要的效果,您可以尝试以下操作:
>| out.log; for i in $(ls -1rt $(find /var/log/apt -name '*history*')); do if [[ $i =~ \.gz$ ]]; then zgrep "Commandline" $i | awk -F': ' '{ print $2; }' >>out.log; else grep "Commandline" $i | awk -F': ' '{ print $2; }' >>out.log; fi done;
文件 out.log 应包含按日期排序的命令
答案4
您可以登录/var/log/apt/history.log*
。日志会定期轮换,因此较旧的日志可能不再存在。一旦这些日志消失,就没有类似的东西了。如果您使用 VPS 一段时间,您可能无法知道最初有什么。
除非磁盘空间不足,否则卸载软件包没有什么意义。如果这就是问题所在,请查找您不需要的大包。以下命令通过增加大小列出已安装的软件包:
dpkg-query -W -f='${Installed-Size;8} ${Package}\n' | sort -n
如果您想了解该 VPS 的初始配置,请询问托管提供商的论坛,有人可能会告诉您。
如果您想使用最小系统进行学习,请注意您不会学到很多东西;但一个好的起点是卸载所有软件包优先事项是必需的或重要的。这是最容易做到的资质:限制 ( l
) 对非必需/重要包的查看搜索词 ~pstandard | ~poptional | ~pextra
并将它们全部卸载,除了您绝对需要的那些。确保保留一些关键软件包,例如sudo
和openssh-server
,否则您将使 VPS 无法使用。此类实验最好在虚拟机中进行,这样您就有办法修复它,或者在损坏它时重新开始。