私はDebianを使用しています。最後の更新以降の時間が特定の期間(または他の期間)より大きいか小さい場合にのみ、apt-get更新を実行したいと思います。直接コマンドを使用し、クローントリックまたは同様の方法を使用しないでください。。
apt-get以前の状態について何も知らないとします。、オペレーティングシステムがインストールされてからアップデートがリリースされなかったか、2分前に手動でトリガされたか、無人アップグレードサービスによって自動的にリリースされた可能性があります。
例えば。
if(time > 30 min) apt-get update
if(time > 2 days) something else
この問題はaskubuntuで見つかったもう1つの問題と似ていますが、Debian設定の他の設定のために最後の更新コマンドが発生したタイミングを示すタイムスタンプファイルが見つかりません。
ベストアンサー1
/var/cache/apt/pkgcache.bin
このファイルは実行されるたびに再生成されますapt-get update
(それ以外の場合は再生成されません)。
apt-get update
たとえば、過去1時間で実行されていない場合にのみ実行したい場合は、次のようにします。
#!/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
または
#!/bin/sh
if [ -z "$(find /var/cache/apt/pkgcache.bin -mmin -60)" ]; then
apt-get update
fi
このスクリプトの複数のコピーをほぼ同時に実行する場合は、すべて実行することを決定できますapt-get update
。これが問題の場合は、ロックを使用してください(完全に別々の問題です)。