web-dev-qa-db-ja.com

cronジョブのシェルスクリプト

Cpanelで1つのcronジョブを設定しましたが、スクリプトを実行しているように見えますが、意図したとおりに機能しません。

Cpanelのcronジョブコマンドは次のとおりです。

/bin/sh /home/my-username/cronjobs/sedclearmalw.sh

スクリプトの内容は次のとおりです。

#!/bin/bash
cd ../public_html/
grep -rl '_0xaae8' . | xargs sed -i 's/var\s_0xaae8.*//g'

ディレクトリに戻ってpublic_htmlと入力する必要があるため、cdコマンドは正しいはずですが、2番目のコマンドが問題のようです。 ssh(bash sedclearmalw.sh)を介して実行しようとしましたが、次のコマンドで確認したように、約15秒間実行されているように見えますが、ジョブを実行していません。

grep -rl '_0xaae8'

そして、_0xaae8を含む1つのファイルを返します。シェルスクリプトの上記のコマンドは、(スクリプトではなく)sshを介して実行すると問題なく機能することがわかっているので、助けていただければ幸いです。

4
Conevski

問題は、相対パスの使用によるものです。 cronがスケジュールされたジョブを実行すると、所有者のホームディレクトリが作業ディレクトリとして使用されます。たとえば、rootユーザーとしてジョブをスケジュールした場合、その作業ディレクトリは/root/になります( Cent OSシステム)。

cdコマンドで絶対パスを指定する必要があります。スクリプトでこれ以上コマンドを実行しない場合は、すべてを1行で実行できます。

grep -rl '_0xaae8' /full/path/to/public_html/ | xargs sed -i 's/var\s_0xaae8.*//g'
2