use*_*548 5 scripting debian apt
我在 debian 上。仅当自上次更新以来的时间大于或小于特定数量时,我才想执行 apt-get 更新(可能还有其他内容),并且使用直接命令,没有 cron 技巧或类似的。
假设我对 apt-get previous state 一无所知,自安装操作系统以来可能从未发布过更新,或者在 2 分钟前手动触发,或者由无人值守升级服务自动发布。
例如。
if(time > 30 min) apt-get update
if(time > 2 days) something else
Run Code Online (Sandbox Code Playgroud)
这个问题类似于我在 askubuntu 中发现的另一个问题,但由于 debian 配置中的设置不同,我找不到通知我上次更新命令何时发生的时间戳文件。
/var/cache/apt/pkgcache.bin
每次apt-get update
运行时都会重新生成文件(否则不会重新生成)。
例如,如果您只想apt-get update
在过去一小时内未运行的情况下运行,则可以使用
#!/bin/sh
last_update=$(stat -c %Y /var/cache/apt/pkgcache.bin)
now=$(date +%s)
if [ $((now - last_update)) -gt 3600 ]; then
apt-get update
fi
Run Code Online (Sandbox Code Playgroud)
或者
#!/bin/sh
if [ -z "$(find /var/cache/apt/pkgcache.bin -mmin -60)" ]; then
apt-get update
fi
Run Code Online (Sandbox Code Playgroud)
请注意,如果您几乎同时运行此脚本的多个副本,它们可能都决定运行apt-get update
. 如果这是一个问题,请使用锁(这是一个完全独立的问题)。
归档时间: |
|
查看次数: |
1738 次 |
最近记录: |