回答:
ターミナルでコマンド履歴を確認できます:
history | grep 'apt update'
時間で確認するには:
HISTTIMEFORMAT="%d/%m/%y %T " history | grep '[a]pt update'
([a]
正規表現の一部は文字にのみ一致しa
ますが、履歴をgrepするときに一致しないという効果があります。)
それが役に立てば幸い !
HISTTIMEFORMAT
が設定されていない場合、.bashrc
このコマンドは、現在のシェルセッションから実際に実行されたコマンドの正しいタイムスタンプのみを持ちます。現在のセッションからのものではない他のすべてのコマンドについては、タイムスタンプは~/.bash_history
ファイルの変更タイムスタンプのみを表示します。これらのタイムスタンプは~/.bash_history
ファイルに保存されないため、他のセッションからのコマンドのタイムスタンプを表示できません。これらのスタンプはまだメモリにあるため、現在のセッションのタイムスタンプを表示できます。
apt
ときや、ユーザー.bash_history
がトリミングされたとき。
のタイムスタンプを確認し/var/lib/apt/periodic/update-success-stamp
ます。
$ ls -l /var/lib/apt/periodic/update-success-stamp
-rw-r--r-- 1 root root 0 Jan 25 01:41 /var/lib/apt/periodic/update-success-stamp
ここではJan 25 01:41
、apt-get
最後に実行された時刻です。時間のみを取得するには、ターミナルで次のコマンドを使用します。
$ ls -l /var/lib/apt/periodic/update-success-stamp | awk '{print $6" "$7" "$8}'
Jan 25 01:41
最終更新時刻を確認するのに最適な場所です。/var/lib/apt/periodic/
空であることがわかった場合は、試すことができます、
ls -l /var/log/apt/history.log
更新
ファイル上のいくつかの理由によることが判明しているupdate-success-stamp
かは、history.log
いくつかのシステムでは利用できないまま。新しいある提案からderobert ファイルに見ては/var/cache/apt/pkgcache.bin
。
pkgcache.bin
Aptのメモリマップパッケージキャッシュの場所です。更新のたびに更新されます。したがって、最後apt
に更新された時刻を知ることは完璧な候補です。
次のコマンドを使用して正確な時間を知ることができます。
ls -l /var/cache/apt/pkgcache.bin | cut -d' ' -f6,7,8
または
stat /var/cache/apt/pkgcache.bin
/var/lib/apt/periodic/
ディレクトリが空である
/var/cache/apt/pkgcache.bin
。また、ls
; の出力を解析しないでください。stat
代わりに使用してください。ことを覚えておいてくださいls
(また、私はあなたがアップデート-通知-共通がインストールされている場合にのみ、あなたが提案する最初のファイルを取得すると思います)など、ファイルの年齢に依存、出力はロケールに依存
/var/cache/apt/pkgcache.bin
パッケージのインストールについても触れられているようですので、最後のapt-get update
実行を確認する信頼できる方法ではありません。
apt-get clean
最近実行されたDebian 8システムには何もありません/var/cache/apt/pkgcache.bin
。/var/lib/apt/lists
代わりにmtimeを使用してみapt-get update
ます。これは、実際に操作する生のキャッシュされていないデータのようです。
私は/var/cache/apt
実行する必要があるかどうかを判断するために使用しますapt-get update
。デフォルトでは、現在の時間とのキャッシュ時間の差/var/cache/apt
が24時間未満であれば、実行する必要はありませんapt-get update
。デフォルトの更新間隔は、関数に数値を渡すことでオーバーライドできますrunAptGetUpdate()
function trimString()
{
local -r string="${1}"
sed -e 's/^ *//g' -e 's/ *$//g' <<< "${string}"
}
function isEmptyString()
{
local -r string="${1}"
if [[ "$(trimString "${string}")" = '' ]]
then
echo 'true'
else
echo 'false'
fi
}
function info()
{
local -r message="${1}"
echo -e "\033[1;36m${message}\033[0m" 2>&1
}
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
また、ファイルについて興味があるかもしれません:
/var/log/apt/term.log
rootとしてlessまたはcatを使用して開きます。
apt-get update
、明らかにログに記録されていません。
@ssokolowの最後のコメントとここからの回答を組み合わせて、このコマンドがapt-get update
過去7日間実行されなかった場合に実行されます。
[ -z "$(find -H /var/lib/apt/lists -maxdepth 0 -mtime -7)" ] && sudo apt-get update
説明:
-mtime -7
過去7日間に変更時刻があるファイルを検索します。-mmin
短い時間が気になる場合に使用できます。-maxdepth 0
findがディレクトリのコンテンツに入らないようにします。 -H
/var/lib/apt/lists
ソフトリンクの場合は逆参照find
失敗した場合、コマンドが実行されます。これは安全なデフォルトのように思えます。デフォルトを反転する場合-n
は、テストおよび-mtime +7
検索コマンドで使用します。次のトピックに関するこの質問への回答を投稿しました
「apt-get upgrade」を具体的に探すため、このトピックに対する答えはあまり適切ではないかもしれません。出力例を次に示します。
xenial% 9: ./linuxpatchdate
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2
ソースコードと詳細な説明については、他のトピックを参照してください。
LAST_UPDATED=$( stat --format="%X" /var/cache/apt/pkgcache.bin )
UNIX_TIME=$( date +%s )
TIME_DIFF=$(( UNIX_TIME - LAST_UPDATED ))
if [[ "${TIME_DIFF}" -gt 43200 ]]
then
# It's been 12 hours since apt-get update was ran.
fi
history | grep 'apt-get update'
:)