‘apt-get update’가 마지막으로 실행 된 시간을 아는 방법은 무엇입니까? apt-get update입니다. 오늘

리포지토리 목록을 업데이트하는 명령은 apt-get update입니다.

오늘 또는 지난 24 시간 동안 실행되었는지 확인하는 방법은 무엇입니까?

파일 타임 스탬프를 확인해야하는지 모르겠습니다. 또는 다른 apt 명령을 발행하십시오. 또는 dpkg 유틸리티를 사용하십시오.

매뉴얼 페이지에서 유용한 것을 찾을 수 없습니다.



답변

터미널에서 명령 내역을 확인할 수 있습니다.

history | grep 'apt update'

시간별로 확인하려면 다음을 수행하십시오.

HISTTIMEFORMAT="%d/%m/%y %T " history | grep '[a]pt update'

( [a]정규 표현식 의 일부는 문자와 만 일치 a하지만 기록을 잡을 때 자체와 일치하지 않는 효과가 있습니다.)

그것이 도움이되기를 바랍니다!


답변

의 타임 스탬프를 확인하십시오 /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:41apt-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.binApt의 메모리 매핑 패키지 캐시 위치입니다. 각 업데이트 후에 갱신됩니다. 따라서 마지막 apt으로 업데이트 된 시간을 아는 것이 가장 좋습니다.

다음 명령을 사용하여 정확한 시간을 알 수 있습니다.

ls -l /var/cache/apt/pkgcache.bin | cut -d' ' -f6,7,8

또는

stat /var/cache/apt/pkgcache.bin

답변

내가 /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

rootless 또는 cat 으로여십시오 .


답변

이 명령을 사용합니다

stat /var/cache/apt/ | grep -i -e access -e modify

마지막으로 액세스 한 시간을 표시합니다. 마지막으로 ‘apt-get update’를 실행하면 실제로 업데이트되었습니다.

시간이 다르면 사용 가능한 업데이트가 없을 수 있습니다. 특정 시간에 crontab에서 업데이트 및 업그레이드를 실행하고 있으므로 업데이트가 실행되었는지 여부를 알 수 있습니다.


답변

@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 +7find 명령에서 사용하십시오.

답변

방금 다음 주제에 대한이 질문에 대한 답변을 게시했습니다.

업데이트 내역은 어디에서 찾을 수 있습니까?

대답은 “apt-get upgrade”를 찾기 때문에이 주제에는 적합하지 않을 수 있습니다. 다음은 샘플 출력입니다.

xenial% 9: ./linuxpatchdate
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2

소스 코드 및 자세한 설명은 다른 주제를 참조하십시오.