Ubuntuでは、画像圧縮操作が原因でCronTabが失敗します。 "/bin/bash^M: 無効なソルバー: ファイルまたはディレクトリがありません。"

Ubuntuでは、画像圧縮操作が原因でCronTabが失敗します。

次のスクリプトを実行するためにcronjobを設定しようとしています。このスクリプトの機能は、WordPressディレクトリでpngとjpgファイルを見つけて圧縮することです。

    #!/bin/bash
echo `date` >> /root/optipng.log
find /home/ghost/wp-content/uploads -mtime -2 -iname '*.png' -print0 | \
 xargs -0 optipng -o7 -log /root/optipng.log -preserve
echo `date` >> /root/jpegoptim.log
find /home/ghost/wp-content/uploads  -mtime -2 -iname '*.jpg' -print0 | \
 xargs -0 jpegoptim --max=90 --preserve --totals >> /root/jpegoptim.log

だからファイルを作成しました」最適化.sh「/usr/localディレクトリから実行」クローンタップ-e「と言って、次のコマンドを追加しました。

00 10 * * *  root  /usr/local/optimize.sh

これは毎日10時に画像最適化を実行するようになっていますが、この場合は機能しません。上記のコマンドを次のように変更してログファイルを生成してみました。

00 10 * * *  root  /usr/local/optimize.sh &>/var/log/cron.log

ログファイルが空で、クローンジョブが実行されていません。 Stack Overflowで言及されている他の方法を試しましたが、そのうち何も機能しないようです。また、助けを得るために見つけた他のチュートリアルもリストしました。

https://askubuntu.com/questions/28995/setup-cron-weekly-backup

http://seravo.fi/2013/tips-to-optimize-images-for-faster-loading-websites

誰かがエラーがどこにあるかを指摘できますか? :)

PS - /usr/local/optimize.shファイルに700の権限を与え、sshを介して直接ファイルを実行しようとしましたが、次のエラーが返されました。

/bin/bash^M: bad interpreter: No such file or directory

以下は、Nanoエディタを使用してコマンドを作成する方法を正確に示す図です。 スクリプトにスペースはありません。

この質問は、次のStack Overflowの他の質問とは異なります。このcrontabジョブが実行されないのはなぜですか?ある意味では、cronファイルを書く方法によってエラーが発生するのではなく、Optimization.shファイルに隠された空白がいくつかあります。

ベストアンサー1

それでも多くの問題があります。

  1. Windowsコンピュータで罰金を生成し、サーバーにコピーしました。 「テキスト転送」モードがない場合、各行はCR / LFの終わりに残ります。他の人が提案したように、dos2unixファイルを実行すると問題が解決します。

  2. 他の人がすでに提案したように、#!から先行する空白行を削除します。

  3. /var/log/cron.log に書き込まないでください。これはシステムログファイルなので、記録しないでください。

  4. chmod -R 777単一のファイルを実行可能にするために使用しないでください。その代りchmod 755またはよりよいchmod a+x

  5. crontab -e他の人は、システムを使用するときに誰が誰であるかを知っているので、crontabユーザー名をフォーマットに含めないでください。

  6. echo `date`単に考えるよりもdate

おすすめ記事