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?


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.


/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

2
Anda tidak perlu sudomelakukannya which.
slhck
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.