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を介して実行すると問題なく機能することがわかっているので、助けていただければ幸いです。
問題は、相対パスの使用によるものです。 cron
がスケジュールされたジョブを実行すると、所有者のホームディレクトリが作業ディレクトリとして使用されます。たとえば、rootユーザーとしてジョブをスケジュールした場合、その作業ディレクトリは/root/
になります( Cent OSシステム)。
cd
コマンドで絶対パスを指定する必要があります。スクリプトでこれ以上コマンドを実行しない場合は、すべてを1行で実行できます。
grep -rl '_0xaae8' /full/path/to/public_html/ | xargs sed -i 's/var\s_0xaae8.*//g'