Her dakika crontab'dan bir python kabuğu çalıştırıyorum:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
gibi, bazı gerekli alt dizinleri vardır /home/udi/foo/log
ve /home/udi/foo/config
bu, /home/udi/foo/bar.py
ifade eder.
Sorun, crontab
komut dosyasını farklı bir çalışma dizininden çalıştırdığı için açmaya çalışmak ./log/bar.log
baş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!
crontab
use-case ile ilgisiz : her ikisi desys.argv[0]
ve__file__
script kullanılarak çalıştırılırsa başarısız olurexecfile()
;inspect
tabanlı bir çözüm kullanılabilir.