Crontab - Jalankan di direktori

170

Saya ingin mengatur pekerjaan agar dijalankan setiap hari di root crontab. Tetapi saya ingin menjalankannya dari direktori tertentu sehingga dapat menemukan semua file yang dibutuhkan, karena aplikasi memiliki banyak jalur relatif.

Lagi pula, dapatkah saya memberi tahu crontab untuk menjalankan dari direktori tertentu?

pengguna333746
sumber

Jawaban:

318

Semua pekerjaan dijalankan oleh shell, jadi mulailah snippet shell itu dengan perintah untuk mengubah direktori.

cd /path/to/directory && ./bin/myapp

Mengenai penggunaan &&bukannya ;: biasanya itu tidak membuat perbedaan, tetapi jika cdperintah gagal (misalnya karena direktori tidak ada) dengan &&aplikasi tidak dieksekusi, sedangkan dengan ;itu dieksekusi (tetapi tidak dalam direktori yang dimaksud ).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Daripada menambahkan sebagian besar jawaban duplikat, izinkan saya tambahkan saja bahwa Anda dapat memilih shell mana (misalnya, Anda perlu bash daripada sh, misalnya) dengan mengatur SHELLdi crontab Anda.
Edd Steel
12
+1. setiap solusi pertanyaan terkait lainnya adalah menulis ulang skrip dengan jalur absolut. ini persis apa yang saya butuhkan
Conrad.Dean
2
Karena penasaran, dapatkah Anda menggunakan titik koma ;alih - alih double ampersand &&atau apakah itu tidak berhasil? Dan mengapa?
Joshua Pinter
32
@ JoshPinter Biasanya tidak ada bedanya. Tetapi jika cdperintah gagal (misalnya karena direktori tidak ada), dengan &&, aplikasi tidak dieksekusi. Dengan ;, ini dieksekusi (tetapi tidak di direktori yang dimaksud).
Gilles 'SANGAT berhenti menjadi jahat'
1
Saya akan melakukan ini untuk semua pekerjaan cron dari aplikasi saya, Anda menyelamatkan saya dari mengubah file sumber saya, terima kasih banyak
Akuntan.