답변:
터미널에서 명령 내역을 확인할 수 있습니다.
history | grep 'apt update'
시간별로 확인하려면 다음을 수행하십시오.
HISTTIMEFORMAT="%d/%m/%y %T " history | grep '[a]pt update'
( [a]
정규 표현식 의 일부는 문자와 만 일치 a
하지만 기록을 잡을 때 자체와 일치하지 않는 효과가 있습니다.)
그것이 도움이되기를 바랍니다!
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
최근에 실행 된 데비안 8 시스템 에는 없습니다 /var/cache/apt/pkgcache.bin
. /var/lib/apt/lists
대신 apt-get update
실제로 mtime을 사용하는 캐시되지 않은 원시 데이터 인 것처럼 보이기 때문에 대신 mtime을 사용하려고합니다 .
내가 /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의 마지막 주석을 here 의 답변과 결합하면 이 명령은 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
찾기가 디렉토리의 내용으로 들어 가지 않도록합니다. -H
/var/lib/apt/lists
소프트 링크 인 경우 역 참조find
실패하면 명령이 실행됩니다. 이것은 안전한 기본값처럼 보입니다. 기본값을 뒤집으려면 -n
테스트 및 -mtime +7
find 명령에서 사용하십시오.방금 다음 주제에 대한이 질문에 대한 답변을 게시했습니다.
대답은 "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'
:)