Soru NFS'ye monte edilen Crontab


Çalışan Cronjob @reboot, nfs paylaşımındaki dosyanın mevcut olmadığını döndürür.

Örnek

@reboot python /abs/path/to/script.py

başlangıçta crontab'dan gelen posta "daha fazla veya daha az" yazıyor

/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.

Komut herhangi bir sorun olmadan komut satırından çalıştırılabilir.
Teori, cronjob, mount çalıştırılmadan önce çalışıyor olmasıdır.
Sorular.

  1. Bu teori doğru mu?
  2. Sürücünün takılıncaya kadar işi beklemeye zorlamanın bir yolu var mı? .... Sadece bir uykuya 60 koymaktan başka bir şey. ;) Bunu zaten denedim, ama vurdum ve özledim ve zamanın% 100'ünü hızlı bir şekilde çalıştırmak için senaryoya ihtiyacım var.

7
2017-10-08 16:54


Menşei


Hangi dağılımı kullanıyorsunuz? - Sven♦


Cevaplar:


Kullanabilirsiniz mountpoint Komutunuzu çalıştırmadan önce montajın yapıldığından emin olmak için komut örn. (varsayım / abs montaj noktasıdır)

#!/bin/bash
while true
do
    if mountpoint -q /abs
        then
            /usr/bin/python /abs/path/to/script.py
            break
        fi
    sleep 10
done

12
2017-10-08 17:20



+1 Hiç duymadım mountpoint - Bu oldukça kullanışlı! - Sven♦
@SvenW Burada aynı. Şimdi bununla bir avuç script güncellemeyi yapıyorum. - Aaron Copley
Sistem yeniden başlatılırken yanıt olarak bunu seçerek, neyin sisteme monte edilip edilmeyeceğini ve dosya sistemi nemi hazır olmadan önce kurmaya çalışmanın felaket olabileceğini bile bilmiyoruz. - Rusty Weber


Ağlamadan sonra cronun başlamasından beri problemin ne olduğundan emin değilim. En azından Red Hat ve türevleri. /etc/fstab ile _netdev seçenek ya da başka nerede?

Başlangıçta bir şeyi yürütmek için standart yöntem, içeriğe dahil etmektir. /etc/rc.local. Bu, ağ başlatıldıktan ve diğer tüm hizmetler başlatıldıktan sonra çalıştırılacaktır. (Uzak dosya sistemlerinin montajı dahil.)

(Ya da sadece bir betik yeniden başlatıldıktan sonra betiği yürütmek için bir neden var mı?)


4
2017-10-08 17:20



Evet pay fstab'a monte edildi. Ubuntu'da koşuyordum, bu da ağın çalışmamış olabileceği anlamına geliyor. etc / rc.local en iyi çözüm gibi görünmektedir, ancak crontab'da @restart varsa, varsayım çalışması gerekir. - Rusty Weber


İşte size bazı fikirler:

  1. NFS'nin takılı olup olmadığını kontrol edin. Değilse, bağlayın ve komut dosyanızı çalıştırın:

    [ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py

  2. komut dosyasını start() NFS init betiğinin işlevi:

    echo -n $"Starting NFS mountd: "
    daemon rpc.mountd $RPCMOUNTDOPTS
    RETVAL=$?
    echo
    [ $RETVAL -ne 0 ] && exit $RETVAL || python /abs/path/to/script.py
    

1
2017-10-08 17:11





Python betiğinin çalışabildiğinden kesinlikle emin olmak için. Bağlantı noktasının geldiğini doğrulamak için yerel depoda depolanmış bir komut dosyasına sarmanız gerekir.

Gibi bir şey (sözde kod uyarı):

while (!ScriptExists && ErrorCount < 10)
do
    mount /my/mount/point
    sleep 10
    ErrorCount++
done

1
2017-10-08 17:11