
Bash를 사용하여 명령줄에서 호출하면 제대로 실행되는 스크립트가 있습니다. 그러나 cron이 이를 실행하려고 시도하면 "mysql: 명령을 찾을 수 없음" 오류와 함께 실패합니다.
cron이 bash를 쉘로 사용하지 않기 때문이라고 생각하지만 cron에서 bash를 사용하도록 만드는 방법을 알 수 없습니다.
나는 이것을 스크립트 상단에 추가하려고 시도했습니다.
#!/bin/bash
그러나 기쁨은 없습니다. cron이 bash를 쉘로 사용하도록 하려면 어떻게 해야 합니까? 저는 bash와 cron을 처음 접했기 때문에 간단한 것이 빠졌을 수도 있습니다. 나는 여러 개의 serverfault 게시물을 읽었고(모두 링크할 수 있지만 새로운 사용자는 할 수 없음) 가능한 한 최선을 다해 정보를 이해하고 적용하려고 노력했으며 엄청난 양의 검색을 했지만 막혔습니다.
답변1
Pulegium이 맞습니다. 문제는 PATH인 쉘 유형이 아닙니다. cron이 실행될 때 검색 경로가 매우 제한되어 있으므로 mysql
명령을 입력하는 대신 /path/to/mysql
실행 파일의 실제 경로를 입력해야 합니다. 일반적으로 /usr/local/bin/mysql
. 정확한 경로를 찾으려면 검색해야 합니다. 또한 쉘 문제인 경우 cron 파일에서 bash를 실행한 다음 스크립트를 실행할 수 있습니다. /bin/bash /path/to/script.sh
이렇게 하면 bash가 파일을 처리하는 것임을 확인할 수 있습니다.
답변2
cron 스크립트에서는 명령에 대한 절대 경로를 사용하는 것이 가장 좋습니다. 사용자 정의한 PATH 설정에 의존하지 않도록 합니다.