Bir komut dosyasını cron ile çalıştırırken "komut bulunamadı"


29

Senaryomu crontab'da çalıştırmak istiyorum ama bazı problemlerim var.

Komut dosyamda bu komutu çalıştırıyorum:

db2 connect to myDB2

Bu db2inst1 kullanıcısı olarak çalıştırdığımda iyi çalışıyor , ancak bu betiği db2inst1 crontab'da çalıştırdığımda şunu alıyorum:

db2: komut bulunamadı.

Bunu Nasıl Çözebilirim?

Yanıtlar:


43

Bir komutun mutlak yolunu yazmak zorunda kalmamak için, $PATHortam değişkenine eklenen kabuklar , her dizin: ve aramalar soldan sağa doğru yapılır. crongenellikle bu $PATHdeğişken de dahil olmak üzere tüm ortamı temizler . Bu nedenle, komut dosyası kabuktaki davranışa kıyasla cronunuzda farklı davranabilir.

Mutlak yollar kullan

Programın tam yolunu bulmak için kullanıcı which db2olarak çalıştırın . Çıktı ise , cron komutunuz şöyle görünür:db2inst1db2/usr/bin/db2

/usr/bin/db2 connect to myDB2

PATH değişkenini ayarla

Değişkeni almak için kullanıcı echo "$PATH"olarak çalıştırın ve bu değişkenin cron betiğinizde de kullanılabilir olduğundan emin olun. Örneğin çıktı olsaydı, bir sonraki satırı shell betiğinizin en üstüne koyardınız:db2inst1$PATH/usr/local/bin:/usr/bin:/bin

export PATH="/usr/local/bin:/usr/bin:/bin"


3

Db2 ve myDB2'nin ne olduğunu tanımlamanız gerekir , aksi takdirde ' file ' veya ' mutlak konumunu kullanın. çalıştırmak istediğiniz application ' .

Örnek:

/bin/rm /home/ubuntu/a.txt
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.