Her dakika crontab'dan bir python kabuğu çalıştırıyorum:
* * * * * /home/udi/foo/bar.py
/home/udi/foogibi, bazı gerekli alt dizinleri vardır /home/udi/foo/logve /home/udi/foo/configbu, /home/udi/foo/bar.pyifade eder.
Sorun, crontabkomut dosyasını farklı bir çalışma dizininden çalıştırdığı için açmaya çalışmak ./log/bar.logbaşarısız oluyor.
Betiğe çalışma dizinini betiğin kendi dizinine değiştirmesini söylemenin güzel bir yolu var mı? Ben açıkça komut dosyası nerede olduğunu söylemek yerine, herhangi bir komut dosyası konumu için işe yarayacak bir çözüm fantezi.
DÜZENLE:
os.chdir(os.path.dirname(sys.argv[0]))
En kompakt zarif çözümdü. Cevaplarınız ve açıklamalarınız için teşekkürler!
crontabuse-case ile ilgisiz : her ikisi desys.argv[0]ve__file__script kullanılarak çalıştırılırsa başarısız olurexecfile();inspecttabanlı bir çözüm kullanılabilir.