2008-10-01 21 views
8

Cron yüklemesidir önce komutları öğrenme) ancak bu kısım her zaman "Dosya veya dizin bulunamadı" ile başarısız olur. Metachar'ın bir cron işi olarak çalıştırıldığında doğru bir şekilde enterpoze edilmediğini düşündüğümden. Komut dosyasını komut satırından yürütürsem iyi çalışır.bash komut kabuğundan çalışır ancak cron işi dan

ben :) neden çalışmıyor bunun için ve tabii bir çalışma çözüm gibi

Teşekkür 1 geri bunun için popüler bir soru rozeti var bu soruya geldi

düzenleme # ederim. Ben ilk bunu, sadece son zamanlarda

#!/bin/bash 
find /home/user/Maildir/.SPAM/cur/ -t file | xargs rm 

ve

Xargs adam sayfası üzerinden okuma ve bu

#!/bin/bash 
find /home/user/Maildir/.SPAM/cur/ -t file | xargs --no-run-if-empty rm 

kısa Xargs seçeneğine bunu değiştirildi

+0

Lütfen crontab'ınızdaki satırı düzenleyin ve ekleyin. –

+0

/etc/cron.daily –

cevap

14

Dizinde hiç dosya yoksa, joker karakteri genişletilmez ve doğrudan komutuna geçirilir. "*" Adlı bir dosya yok ve daha sonra "Dosya veya dizin bulunamadı." Bunu yerine deneyin:

Ya da rm için "-f" bayrağını kullanın. Bu komutla ilgili diğer sorun, komut satırının maksimum uzunluğu için çok fazla spam olduğunda ne olduğudır. Eski bir tek yöneticilerin bir seferde bir dosya rm bulmak varsa

find /home/user/Maildir/.SPAM/cur -type f -exec rm '{}' + 

: Böyle bir şey muhtemelen daha iyi bir genel olduğunu

çok fazla dosya yanı sıra hiçbir dosyalarını işleme
find /home/user/Maildir/.SPAM/cur -type f | xargs rm 

. Charles Duffy'ye bulmak için + seçeneğine işaret etmek için teşekkürler.

+0

tahmin etmek yerine yolu bulmak için hangi rm kullanacağım Aslında, yeterli yeni bulmalı xargs gerekmez: find /home/user/Maildir/.SPAM/cur -type f -exec rm - f '{}' '+' –

+0

, bulucunun bir \ ile bitmemesi gerekir; ? – hop

+0

Dosyaları silmek, 'find'' -delete' eylemini de destekleyen çok sık kullanılan bir görevdir. -exec rm '{}' 'yapmak için açık bir gereksinim yoktur. – ulidtko

0

Tam yolu belirterek Are -r olduğunu cronjob'de senaryoya Bir başka not


yerine

00 3 * * * myscript.sh 

00 3 * * * /home/me/myscript.sh 

, ben erişebilir linux kutularının tümü üzerinde /bin/rm bu. Makinenizde gerçekten /usr/bin/rm olduğunu kontrol ettiniz mi?

+0

dosyasında, /etc/cron.daily/ dosyasında/etc/crontab – Tanj

+0

Hmmm adresinde bulunan bir yorumda belirtilmiştir. Bu çok tuhaf. –

+0

Bu, vixie-cron'un bir gentoo dağıtımında ayarlandığı varsayılan yoldur. ya da/bin/rm için bir bağlantı olmasına rağmen/bin/rm'dir. Belki bir sonraki sefer – Tanj

0

deneyin cron dosyasının üstüne

[email protected] 

ekleme ve size gönderilecek herhangi bir giriş/hataları almalısınız.

Ayrıca cronjob

0 30 * * * /usr/bin/rm /home/user/Maildir/.SPAM/cur/* 
0

bir kuvvet seçeneğini kullanmayı deneyin ve rm komutuna bir yol ekleme hakkında unutmak gibi komutunu eklemeyi düşünün. Ben ... ihtiyaç olmamalıdır düşünüyorum

rm -f 

Bu dizinde hiç dosya olmasa bile, rm komutu başarısız olmayacak sağlayacaktır. Bu bir kabuk betiğinin parçasıysa, * çalışmalıdır. Görünüşe göre boş bir diriniz olabilir ...

Komut dosyasının geri kalanının yürütüldüğünü anlıyorum, değil mi?

0

Sisteminizde /usr/bin/ gerçekten bulunan rm gerçekten mi? Her zaman rm'un /bin/'da bulunması gerektiğini düşündüm.

İlgili konular