linux: cara menjalankan perintah di direktori yang diberikan

16

Saya hanya ingin menjalankan perintah (sebenarnya skrip shell) dari direktori yang diberikan sebagai tugas cron. Bagaimana saya bisa menjalankannya sehingga diatur ke direktori yang diberikan tanpa menggunakan cd.

Zombie
sumber

Jawaban:

16

Pertanyaan Anda tidak masuk akal. Gunakan cd. Jika Anda meminta jawaban untuk tidak digunakan cdkarena Anda sudah mencobanya dan itu tidak berhasil, kemungkinan Anda tidak memasukkannya dengan benar di crontab.

Cara paling sederhana adalah dengan menulis skrip shell kecil yang akan melakukan cd dan menjalankan tugas utama Anda, kemudian cron skrip tersebut.

Daenyth
sumber
1
Bisakah crontab membiarkan saya memasukkan banyak perintah ke dalam satu pekerjaan? Jika tidak, saya harus men - harcode cd [path]. Dan path mungkin berubah, sehingga menyebabkan masalah penyebaran yang sangat mengganggu dan juga mendesentralisasi konfigurasi yang merupakan sesuatu yang saya hindari dengan cara apa pun.
Zombies
1
@ Zombies: ya, Anda dapat menempatkan beberapa perintah di dalam satu pekerjaan (mis. Memisahkannya dengan titik koma atau &&), tetapi Anda juga dapat menulis skrip terpisah yang berisi semua perintah dan cukup meletakkan path ke skrip di cron, seperti disarankan Daenyth. Script Anda dapat melakukan sesuatu seperti membaca direktori dari file konfigurasi jika Anda suka - intinya adalah, namun Anda ingin memasukkan nama direktori ke dalam skrip Anda, tidak ada alasan untuk tidak menggunakannya cd.
David Z
Saya melihat. Saya ingin menggunakan cd pada crontab secara langsung karena jika saya menulisnya dalam file, saya harus mengeditnya di setiap file yang membuat konfigurasi yang rumit / mudah rusak.
Zombies
3
Dan jika Anda meletakkan cd di file crontab, Anda harus mengeditnya di setiap file crontab. Saya tidak mengerti masalahnya. Mungkin Anda bisa menjelaskan apa yang Anda coba lakukan dengan lebih penuh.
garyjohn
Dan alasan lain untuk menjalankan skrip shell dari file crontab adalah untuk memastikan bahwa lingkungan diatur dengan benar. Lingkungan yang diberikan kepada pekerjaan cron biasanya bahkan nyaris tidak minimal, jadi Anda biasanya perlu mengatur ulang ke sesuatu yang lebih bermanfaat.
Jonathan Leffler
60

Cukup tentukan jalur ke skrip. Tidak perlu untuk cd:

0 12 * * * /path/to/script args

Jika naskah anda untuk mencari file di ., maka Anda akan harus menggunakan cd:

0 12 * * * cd /some/dir && /path/to/script args
Dijeda sampai pemberitahuan lebih lanjut.
sumber
2
Lihat juga serverfault.com/questions/290313/…
Will Sheppard
4
&&, seperti pada tautan jawaban @WillSheppard, akan lebih baik daripada ;karena &&hanya menjalankan perintah berikutnya jika perintah sebelumnya berhasil.
Max Heiber
1
@mheiber: diperbaiki
Dijeda sampai pemberitahuan lebih lanjut.