apt.cron.daily 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/sh
  2. #
  3. # cron job for apt-get update
  4. #
  5. # Update-Package-Intervall is in days
  6. #
  7. STAMP=/var/lib/apt/update-stamp
  8. #set -e
  9. do_update()
  10. {
  11. touch $STAMP.new
  12. if apt-get update -qq; then
  13. if [ -x /usr/bin/dbus-send ]; then
  14. dbus-send --system / app.apt.dbus.updated boolean:true
  15. fi
  16. mv $STAMP.new $STAMP
  17. fi
  18. rm -f $STAMP.new
  19. }
  20. UpdateInterval=0
  21. RES=`apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists`
  22. eval $RES
  23. if [ $UpdateInterval -eq 0 ]; then
  24. exit 0
  25. fi
  26. # laptop check, on_ac_power returns:
  27. # 0 (true) System is on mains power
  28. # 1 (false) System is not on mains power
  29. # 255 (false) Power status could not be determined
  30. # Desktop systems always return 255 it seems
  31. if [ -x /usr/bin/on_ac_power ]; then
  32. /usr/bin/on_ac_power
  33. if [ $? -eq 1 ]; then
  34. exit 0
  35. fi
  36. fi
  37. if [ ! -f $STAMP ]; then
  38. do_update
  39. exit 0
  40. fi
  41. LastUpdate=`stat -c "%Y" $STAMP 2>/dev/null`
  42. Now=`date +%s`
  43. NeedUpdate=$(($LastUpdate+$UpdateInterval*3600*24))
  44. if [ $NeedUpdate -le $Now ]; then
  45. do_update
  46. fi