방금 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을 입력해야 하기 때문에 정확해야 한다고 생각하지만 두 번째 명령이 문제인 것 같습니다. ssh(bash sedclearmalw.sh)를 통해 실행을 시도했는데 약 15초 동안 실행되는 것처럼 보였지만 다음을 사용하여 확인한 결과 작업이 완료되지 않았습니다.
grep -rl '_0xaae8'
_0xaae8을 포함하는 1개의 파일을 반환합니다. 어떤 도움이라도 대단히 감사하겠습니다. 쉘 스크립트의 위 명령이 (스크립트가 아닌) ssh를 통해 실행될 때 제대로 작동한다는 것을 알고 있으므로 간단한 것이어야 합니다.
답변1
문제는 상대 경로를 사용하여 발생합니다. 예약된 작업을 실행할 때 cron
소유자의 홈 디렉터리를 작업 디렉터리로 사용합니다. 예를 들어 작업을 루트로 예약하면 해당 작업 디렉터리는 /root/
Cent OS 시스템에 있게 됩니다.
명령에 절대 경로를 지정해야 합니다 cd
. 스크립트에서 다른 명령을 실행하지 않는 경우 모든 명령을 한 줄로 실행할 수 있습니다.
grep -rl '_0xaae8' /full/path/to/public_html/ | xargs sed -i 's/var\s_0xaae8.*//g'