私はcpanelで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'
私はcdコマンドがディレクトリに戻り、public_htmlを入力する必要があるので正確でなければならないと思いますが、2番目のコマンドは問題のようです。 ssh(bash sedclearmalw.sh)を介して実行しようとしましたが、約15秒間実行されているように見えましたが、以下を使用して確認した結果、操作は完了しませんでした。
grep -rl '_0xaae8'
_0xaae8を含む1つのファイルを返します。どんな助けでも大変感謝します。シェルスクリプトの上記のコマンドが(スクリプトではなく)sshを介して実行されると正しく機能することがわかっているので、単純なものでなければなりません。
答え1
問題は相対パスを使用して発生します。スケジュールされたタスクを実行するときは、所有者cron
のホームディレクトリを作業ディレクトリとして使用します。たとえば、ジョブをrootとしてスケジュールすると、その作業ディレクトリは/root/
Cent OSシステムにあります。
コマンドに絶対パスを指定する必要がありますcd
。スクリプトで他のコマンドを実行しない場合は、すべてのコマンドを1行で実行できます。
grep -rl '_0xaae8' /full/path/to/public_html/ | xargs sed -i 's/var\s_0xaae8.*//g'