Cron, 종료 코드 및 로깅을 사용한 자동 업데이트 스크립트

Cron, 종료 코드 및 로깅을 사용한 자동 업데이트 스크립트

저는 Debian, Raspian, Mint를 실행하는 여러 컴퓨터를 관리하고 있습니다. 일부 컴퓨터에서는 자동 업데이트 및 업그레이드를 원합니다. 이 작업을 수행하고 업데이트 성공 여부를 기록하는 스크립트 초안을 작성했습니다.

#!/bin/bash

captains_log=/home/jason/mission_control/captains.log

apt-get update;
if [ $? == 0 ]; then
    apt-get upgrade -y;
    if [ $? == 1 ]; then
        echo `date`": Daily update failed" >> $captains_log
    else
        echo `date`": Daily update successful" >> $captains_log
    fi
else
    echo `date`": Daily update failed" >> $captains_log
fi

@daily루트에서 실행 되도록 스크립트를 설정했습니다 crontab. 명령을 수동으로 실행하면 필요에 따라 실행됩니다. 스크립트를 실행할 때 cron로그에는 성공했지만 소프트웨어는 업데이트되지 않았습니다.

누구든지 내가 어디로 잘못 가고 있는지 말해 줄 수 있습니까?

답변1

권장되는 방법은 명령을 사용하는 것입니다 unattended-upgrades. 설정은 간단합니다.

apt-get install unattended-upgrades
dpkg-reconfigure unattended-upgrades

이것이 cron 스크립트에서 원하는 결과를 얻는 데 필요한 전부입니다. 바퀴를 재발명할 필요가 없습니다.

0이 아닌 반환 코드는 스크립트 및 해당 성공 보고에 관한 한 실패로 간주됩니다. 스크립트는 1 이외의 모든 것을 성공으로 처리합니다. 종료 코드를 수동으로 확인할 필요가 없습니다 if.

if apt-get upgrade -y; then
    echo "$(date): Daily update successful" >> $captains_log
else
    echo "$(date): Daily update failed" >> $captains_log
fi

셸에서 "명령을 찾을 수 없음"이 발생하면 종료 코드 127이 반환됩니다.

답변2

apt-getcrons shell-searchpath에 있습니까 ?

cron 작업에서는 항상 외부 명령의 전체 경로를 사용하는 것이 좋습니다.

관련 정보