Cron ile otomatikleştirildiğinde neden apt-get başarısız oluyor?


15

Sistem güncellemelerimi otomatikleştirmek için cron kullanmaya çalışıyorum. Aşağıda crontab'ımı, komutlarımı ve ortaya çıkan hataları görebilirsiniz.

Upgrade.sh dosyasını root olarak çalıştırdığımda script iyi çalışıyor. Cron çalıştırdığında apt-get -y updatesorun çıkarmaz ama aptitude -y safe-upgradebaşarısız olur. Bu hatayı tahmin ediyorum: debconf: (This frontend requires a controlling tty.)sırayla üzerine yazmak için tamam olduğunu söyleyerek gerektiren grub güncellemeleri bir çekirdek güncelleme var çünkü /boot/grub/menu.lst. Ama yol hatalarını anlamıyorum. Ve denetimimin yapılmasını gerektirmeyen güncellemeleri istiyorum.

Bu soruyuunattended-upgrades okudum ve henüz kabul edilmemiş bir çözümü var ve bunu kullanabilirim, ama neden cron kullanamıyorum? Gerçekten basit ve daha linuxy olmalı gibi görünüyor.

crontab

root@daedalus:~/bin# crontab -l
# m h  dom mon dow   command
45 06 * * * ~/bin/upgrades.sh

upgrades.sh

root@daedalus:~/bin# cat upgrades.sh 
#!/bin/bash
/usr/bin/apt-get -y update
/usr/bin/aptitude -y safe-upgrade

Hatalar

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
Fetched 37.6MB in 4min 23s (143kB/s)
dpkg: warning: 'ldconfig' not found on PATH.
dpkg: warning: 'start-stop-daemon' not found on PATH.
dpkg: warning: 'update-rc.d' not found on PATH.
dpkg: 3 expected program(s) not found on PATH.
NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
A package failed to install.  Trying to recover:
dpkg: warning: 'ldconfig' not found on PATH.
dpkg: warning: 'start-stop-daemon' not found on PATH.
dpkg: warning: 'update-rc.d' not found on PATH.
dpkg: 3 expected program(s) not found on PATH.
NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Writing extended state information...

Yanıtlar:


10

Mesajlar size PATHortam değişkeninizin yanlış olduğunu söylüyor .

Eklemeyi deneyin

PATH=/usr/bin:/bin:/usr/sbin:/sbin

senin üstüne crontab.

Ya PATHda ikinci satırı ile aynı satırı koyabilirsiniz ~/bin/upgrades.sh. Bu şekilde testinizi komut satırından ve testiniz crontabaynı sonuçları vermelidir.


Anlıyorum. Komutu yanlışlıkla #! / Bin / bash satırının root'un normal yolunu yükleyeceğini düşünerek bir komut dosyasına koydum. Açıkçası yanılmışım. Peki, bir kullanıcının varsayılan yolunu ilk etapta ne belirler ve nasıl uygulanır?
djeikyb

Neden cron kullanıcının yolunu tutmuyor? Crontab veya betiğime yol eklemek daha mı iyi? Dezavantajları var mı?
djeikyb

Güvenlik nedeniyle olması gerekiyordu, ama katılıyorum, sinir bozucu. 1) Eğer senaryonuza koyarsanız PATH=..., örneğin bir dosyaya koyabilir ~/.envve senaryonun . ~/.envüst kısmına yakın bir yerde kullanarak yazdığınız her senaryodan kaynaklayabilirsiniz . Sonra değiştirirseniz PATHsadece bir dosyayı düzenlemek zorundasınız. 2) Eğer koyarsanız crontab, tüm cron komut dosyalarınızı düzenlemek zorunda kalmayacağınız anlamına gelir, ancak PATH(örneğin ~/.bashrcve crontab) öğenizi değiştirmek isterseniz düzenlemek için iki yeriniz olacaktır . Hangisi daha iyi size kalmış.
Mikel

Güzel. Sanırım sorum şu, neden güvensiz? Şu anda googling yapıyorum, ancak henüz bir şey bulamadım. Her neyse, değişiklikleri yaptım ve yarın sabah çalıştığında, başka bir şeyin sakat kalması durumunda cevaplandığını işaretleyeceğim.
djeikyb

Keşke ben de bilseydim. Bir neden varsa, ne belgeler ne de cronkaynak kodu ne olduğunu söylemez. Teorik olarak, tutarlı bir ortamı zorlamak olabilirdi, böylece bir crontab'ı bir kullanıcıdan diğerine kopyalayabilirsiniz, ancak sadece PATHdeğişti, bu sebep olamaz.
Mikel

14

Ana sorununuz zaten cevaplanmış olsa da, interaktif bir tty olmadan apt-get çalıştırdığınız için debconf uyarıları alıyorsunuz gibi görünüyor. Bu iletilerden kurtulmak için bu ortam değişkenini ayarlayabilirsiniz:

DEBIAN_FRONTEND=noninteractive

1

Topluluk wiki sayfası var: crontab'ın çalışmamasının nedeni . Bu durumda, neden cron'un sınırlı ortam değişkenleri gibi görünüyor. Bunu /etc/cron.daily içindeki bir kabuk komut dosyasından çalıştırabilir misiniz?


Cevabınızı yanlış anladınız, bu yüzden yorum yapacak bir şey yok.
luri

0

Gönderen CronHowto :

Çalıştırılan komutlara bağlı olarak, aşağıdaki satırları crontab dosyalarının en üstüne koyarak kök kullanıcıların PATH değişkenini genişletmeniz gerekebilir:

PATH = / usr / sbin: / usr / bin / sbin: / bin

Ama aslında, her şey seninle aynı şeyi yapıyor gibi görünüyor .... Bu hataları nereden aldın?

CRONTAB:

root@PORTATIL:/var/log$ crontab -l
* * */2 * * /usr/share/myupdate.sh > /var/log/myupdate.log

SENARYO:

root@PORTATIL:/etc# cat /usr/share/myupdate.sh 
#!/bin/bash
#Testing updates
apt-get update -y
apt-get upgrade -y

LOG:

root@PORTATIL:/etc# cat /var/log/myupdate.log 

Hit http://security.ubuntu.com lucid-security Release.gpg
Hit http://archive.canonical.com lucid Release.gpg
Hit http://archive.canonical.com lucid Release.gpg
Hit http://packages.medibuntu.org lucid Release.gpg
Get:1 http://dl.google.com stable Release.gpg [197B]
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://security.ubuntu.com lucid-security Release
Hit http://badgerports.org lucid Release.gpg
Hit http://archive.canonical.com lucid Release
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net maverick Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Get:2 http://dl.google.com stable Release [1347B]
Hit http://security.ubuntu.com lucid-security/main Packages
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net lucid Release
Hit http://packages.medibuntu.org lucid Release
Hit http://download.virtualbox.org lucid Release.gpg
Hit http://archive.canonical.com lucid Release
Hit http://linux.dropbox.com lucid Release.gpg
Get:3 http://dl.google.com stable/main Packages [1110B]
Hit http://security.ubuntu.com lucid-security/restricted Packages
Hit http://security.ubuntu.com lucid-security/main Sources
Hit http://security.ubuntu.com lucid-security/restricted Sources
Hit http://security.ubuntu.com lucid-security/universe Packages
Hit http://security.ubuntu.com lucid-security/universe Sources
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net maverick Release
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net lucid Release
Hit http://badgerports.org lucid Release
Hit http://archive.canonical.com lucid/partner Packages
Hit http://security.ubuntu.com lucid-security/multiverse Packages
Hit http://security.ubuntu.com lucid-security/multiverse Sources
Hit http://ppa.launchpad.net lucid Release
Hit http://packages.medibuntu.org lucid/free Packages
Hit http://download.virtualbox.org lucid Release
Hit http://es.archive.ubuntu.com lucid Release.gpg
Hit http://linux.dropbox.com lucid Release
Hit http://archive.canonical.com lucid/partner Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://es.archive.ubuntu.com lucid-updates Release.gpg
Hit http://badgerports.org lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net maverick/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://packages.medibuntu.org lucid/non-free Packages
Hit http://linux.dropbox.com lucid/main Packages
Hit http://es.archive.ubuntu.com lucid Release
Hit http://download.virtualbox.org lucid/contrib Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://es.archive.ubuntu.com lucid-updates Release
Hit http://es.archive.ubuntu.com lucid/main Packages
Hit http://es.archive.ubuntu.com lucid/restricted Packages
Hit http://es.archive.ubuntu.com lucid/main Sources
Hit http://es.archive.ubuntu.com lucid/restricted Sources
Hit http://es.archive.ubuntu.com lucid/universe Packages
Hit http://es.archive.ubuntu.com lucid/universe Sources
Hit http://es.archive.ubuntu.com lucid/multiverse Packages
Hit http://es.archive.ubuntu.com lucid/multiverse Sources
Hit http://es.archive.ubuntu.com lucid-updates/main Packages
Hit http://es.archive.ubuntu.com lucid-updates/restricted Packages
Hit http://es.archive.ubuntu.com lucid-updates/main Sources
Hit http://es.archive.ubuntu.com lucid-updates/restricted Sources
Hit http://es.archive.ubuntu.com lucid-updates/universe Packages
Hit http://es.archive.ubuntu.com lucid-updates/universe Sources
Hit http://es.archive.ubuntu.com lucid-updates/multiverse Packages
Hit http://es.archive.ubuntu.com lucid-updates/multiverse Sources
Fetched 2654B in 1s (1628B/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Hatalarım bana gönderilen cron iş günlüğünden geliyor. Seninle aynı 10.04 kullanıyorum. Garip ..
djeikyb

Thre kısıtlayıcı bir PATH ayarlayan bazı cron yapılandırma dosyası olmalı ... Şu anda sorun yaşamıyorum.
luri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.