AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 20747
In Process
Mark Roddy
Mark Roddy
Asked: 2009-06-06 11:10:34 +0800 CST2009-06-06 11:10:34 +0800 CST 2009-06-06 11:10:34 +0800 CST

使用 apt-get 查找上次更新的时间

  • 772

我需要找到最后一次

apt-get update

命令在我的服务器上运行。我如何确定这些信息?

linux ubuntu apt aptitude
  • 12 12 个回答
  • 32654 Views

12 个回答

  • Voted
  1. Tuomas
    2012-09-08T01:55:48+08:002012-09-08T01:55:48+08:00

    至少在 Ubuntu 系统中有一个文件 /etc/apt/apt.conf.d/15update-stamp 包含:

    APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
    

    所以看看你是否有 /var/lib/apt/periodic/update-success-stamp 如果你有,你可以使用

    stat -c %y /var/lib/apt/periodic/update-success-stamp
    

    命令获取最后一次“apt-get update”调用的时间。

    如果您的系统没有该 apt 配置文件,您可以随时添加它。

    • 30
  2. Hans Lambermont
    2013-05-07T06:24:26+08:002013-05-07T06:24:26+08:00

    Anapt-get update可能不会创建或更新文件,它会更新缓存目录,因此我们可以使用它来获取上次apt-get update运行时的时间戳:

    stat -c %Y /var/cache/apt/
    
    • 12
  3. rkthkr
    2009-06-06T11:16:57+08:002009-06-06T11:16:57+08:00

    您可以检查 /var/lib/apt/lists 中文件的访问时间,这些文件在您运行 apt-get update 时更新。如果 apt-get update 是用 sudo 运行的,你应该在 /var/log/auth.log 中记录一行。

    • 11
  4. Aaron Belovsky
    2012-07-05T14:50:59+08:002012-07-05T14:50:59+08:00

    不要离开锁定文件。锁定文件不可靠,随着时间的推移,它们往往会随着新的 Linux 版本而移动,并且许多程序在使用完锁定文件后会清理(删除)锁定文件。

    以下命令将为您提供所需的内容。

    ls -lt --time-style="long-iso" /var/log/apt | grep -o '\([0-9]\{2,4\}[- ]\)\{3\}[0-9]\{2\}:[0-9]\{2\}' -m 1
    

    这是两个命令合二为一。第一个命令的结果通过管道 (|) 符号过滤到第二个。

    在第一个命令中,我使用“ls”列出 /var/log/apt 目录的文件内容,该目录是存储 apt-get 的访问历史日志的目录。“-lt”部分实际上是两个开关。第一个“l”开关告诉“ls”每行列出一个文件的详细信息。第二个“t”开关告诉“ls”按日期和时间排序。“--time-style”强制日期时间以“YYYY-MM-DD HH:MM”格式显示。

    在命令的“grep”部分,“-o”开关告诉 grep 只显示每行中与正则表达式完全匹配的部分。我在这里使用的正则表达式检测“ls”命令中指定格式的日期时间。您还会注意到“grep”命令的最后一个真正的小魔法,即紧跟其后的数字“1”的“-m”开关。这告诉“grep”在找到第一个匹配项后停止寻找匹配项。

    因此,总而言之,我们列出了 apt 日志文件的详细信息,以便我们可以看到最后修改的日期,然后我们按日期排序并告诉 grep 将第一个日期从顶部拉出,然后返回。那是 apt-get 运行的最后日期。

    然而,暂时扮演魔鬼的拥护者,对于像 Ubuntu 这样的 Debian 平台来说,将 apt-get 安排为定期运行的作业是很常见的。如果您正在寻找 apt-get 执行的另一端的人,您实际上可能会找到一台机器。您始终可以将访问日志与 apt 日志进行匹配,以查看是否有任何时间戳重合。还可以在一定程度上查看用户的命令历史记录。

    希望这可以帮助!

    • 4
  5. slacy
    2009-06-06T11:59:23+08:002009-06-06T11:59:23+08:00

    我怀疑您可以检查文件 /var/cache/apt 上的最后修改时间,以确定最后一次更新应用于包列表的时间。

    我刚刚对此进行了测试,并连续运行了两次“sudo apt-get update”,并且日期与当前值没有变化,但我怀疑这是因为没有要应用的新更新,并且缓存已启动迄今为止。

    • 2
  6. Christian Long
    2016-04-16T07:32:22+08:002016-04-16T07:32:22+08:00

    如果在最后一天没有运行更新,这是一个简单的单行程序来运行更新。

    (find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp) && (/usr/bin/apt-get update)
    

    它查找更新成功标记文件,该文件在一天多前被修改。如果它找到正确年龄的文件,则运行更新。注意:必须存在 update-success-stamp 文件才能使其正常工作。

    • 2
  7. Josh Brower
    2009-06-06T11:19:43+08:002009-06-06T11:19:43+08:00

    Synaptic 记录历史文件 (>File > History),aptitude 在 /var/log/aptitude 中记录历史记录,在 /var/lib/aptitude/pkgstates 中记录自动安装的软件包,因此您可以检查这些以了解最新活动。

    • 1
  8. user104833
    2012-02-04T17:00:40+08:002012-02-04T17:00:40+08:00
    $ ls -l /var/lib/dpkg/lock 
    -rw-r----- 1 root root 0 2011-11-16 09:40 /var/lib/dpkg/lock
    
    • 1
  9. Nam Nguyen
    2015-02-24T12:38:28+08:002015-02-24T12:38:28+08:00

    我/var/cache/apt用来确定是否需要运行apt-get update. 默认情况下,如果当前时间和缓存时间的/var/cache/apt差小于24小时,我不需要运行apt-get update. 可以通过将数字传递给函数来覆盖默认更新间隔runAptGetUpdate()

    function getLastAptGetUpdate()
    {
        local aptDate="$(stat -c %Y '/var/cache/apt')"
        local nowDate="$(date +'%s')"
    
        echo $((nowDate - aptDate))
    }
    
    function runAptGetUpdate()
    {
        local updateInterval="${1}"
    
        local lastAptGetUpdate="$(getLastAptGetUpdate)"
    
        if [[ "$(isEmptyString "${updateInterval}")" = 'true' ]]
        then
            # Default To 24 hours
            updateInterval="$((24 * 60 * 60))"
        fi
    
        if [[ "${lastAptGetUpdate}" -gt "${updateInterval}" ]]
        then
            info "apt-get update"
            apt-get update -m
        else
            local lastUpdate="$(date -u -d @"${lastAptGetUpdate}" +'%-Hh %-Mm %-Ss')"
    
            info "\nSkip apt-get update because its last run was '${lastUpdate}' ago"
        fi
    }
    

    样本输出:

    <root@ubuntu><~/ubuntu-cookbooks/libraries>
    # runAptGetUpdate 
    
    Skip apt-get update because its last run was '0h 37m 43s' ago
    

    我从我的个人 github 中提取了这些函数:https ://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash

    • 1
  10. user658875
    2021-05-07T11:39:01+08:002021-05-07T11:39:01+08:00

    正如 fcm 在评论中所述,对 /var/lib/apt/lists/partial 进行统计。这是唯一对我有用的答案。

    • 1

相关问题

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve