crontab - / bin / sh: wget: perintah tidak ditemukan

2

Saya ingin mengatur crontab di Macbook Pro saya yang menjalankan Lion. Saya menjalankan yang biasa crontab -edan memberikan pekerjaan cepat untuk melihat apakah semuanya berfungsi ok ---

*/10 * * * * wget -O - -q -t 1 http://site.local/cron.php

10 menit kemudian saya melihat saya mendapat "surat" dari sistem yang menyatakan ---

/bin/sh: wget: command not found

Saya sudah menginstal wget karena saya dapat menjalankan program dari baris perintah

Bagaimana cara memperbaiki kesalahan ini? Apakah crontab saya atau .bash_profilememerlukan shebang?

Allan Bendy
sumber
2
Dimana anda wget? Cukup sediakan path lengkap di crontab Anda.
slhck

Jawaban:

9

Mungkin ada hubungannya dengan lingkungan Anda yang berbeda ketika dijalankan sebagai cron job (yaitu PATHvariabel lingkungan berbeda dari apa yang Anda gunakan dari terminal bash).

Di terminal bash Anda, gunakan whichuntuk mencari tahu mana wgetyang sedang digunakan:

laptop [ ~ ]: which wget
/opt/local/bin/wget

Kemudian gunakan path lengkap dalam pekerjaan cron:

*/10 * * * * /opt/local/bin/wget -O - -q -t 1 http://site.local/cron.php

Untuk pekerjaan cron, saya biasanya menjalankan skrip bash alih-alih menentukan perintah langsung di crontab. Ini sedikit lebih mudah untuk di-debug dan menjaga crontab sedikit lebih bersih.

Markus Orreilly
sumber
/usr/bin/which: illegal option -- -adalah apa yang saya dapatkan ketika saya berlariwhich
Allan Bendy
@allanb Apakah itu yang Anda dapatkan saat berlari which wget? Apakah kamu yakin
slhck
MacBook-Pro:~ allan$ which wget /usr/bin/which: illegal option -- - usage: which [-as] program ...
Allan Bendy
Sangat aneh. Anda dapat mencoba menggunakan pencarian sorotan mac dengan ini: mdfind -name wget | grep -E "/ wget $" mungkin mendapatkan lebih dari satu jawaban
Markus Orreilly
Bagaimanapun, menggunakan seluruh jalur berhasil bagi saya.
Allan Bendy
2

Untuk mengetahui di mana perintah tertentu berada coba:

which wget

atau

which <certain-command>

Output harus menyediakan jalur yang dapat dieksekusi. Sebagai contoh:

linux-dgr7:~ # sudo which wget
/usr/bin/wget 

kemudian ubah entri seperti:

*/10 * * * * /usr/bin/wget -O - -q -t 1 http://site.local/cron.php

Jika wget tidak muncul setelah melakukan yang ... Anda harus menambahkan lokasi ke variabel PATH.

PATH=$PATH:/where/ever/path/is

atau

PATH=$PATH:/opt/wget
Jay
sumber
2
Anda tidak perlu sudomelakukannya which.
slhck