如何获取自启动 Debian 服务器以来发出的所有“apt-get”命令?

如何获取自启动 Debian 服务器以来发出的所有“apt-get”命令?

我需要回到 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并将它们全部卸载,除了您绝对需要的那些。确保保留一些关键软件包,例如sudoopenssh-server,否则您将使 VPS 无法使用。此类实验最好在虚拟机中进行,这样您就有办法修复它,或者在损坏它时重新开始。

相关内容