Crontab에서 어떤 명령을 사용하는 방법은 무엇입니까?

Crontab에서 어떤 명령을 사용하는 방법은 무엇입니까?

crontab에서 일반 사용자로 이 스크립트를 실행하고 싶습니다.

#!/usr/bin/env bash

PIDFILE=wp-content/uploads/sphinx/var/log/searchd.pid


if ! test -f ${PIDFILE} || ! kill -s 0 `cat ${PIDFILE}`; then
    `which searchd` --config /home/user/www/wordpress-page/wp-content/uploads/sphinx/sphinx.conf
fi

메모리가 1GB(Webfaction)를 초과하면 내 공유 서버가 모든 데몬을 종료하기 때문에 Sphinx Search 데몬을 다시 실행합니다.

CLI 명령을 통해 수동으로 스크립트를 호출하면 작동하지만 crontab에 추가하면 crontab -e(

which: no searchd in (/usr/bin:/bin)
/home/user/www/wordpress-page/run-searchd.sh: line 8: --config: command not found

간단히 말해서 루트 수준을 검색하지만 일반 사용자로 ssh를 통해 로그인할 때 내가 직접 호출하는 것처럼 작동하기를 원합니다. 어떻게 해야 하나요?

답변1

$PATH이는 쉘 외부에서 수행하기 때문일 수 있습니다 crontab.

command -v searchd | xargs dirname

이 명령은 시스템의 디렉토리를 반환하거나 searchd대화형 셸에 디렉토리가 없는 경우 오류를 반환합니다. 이제 실행하는 스크립트 상단에서 다음을 수행합니다.searchd$PATHcrontab

 PATH=<directory_from_above_command>:$PATH

searchd아니면 대신 전체 경로를 사용하십시오 which searchd.

which작동 방식을 완전히 이해하려면 아래를 계속 읽으십시오." which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?.

답변2

그냥 직접 사용하세요 searchid. which찾을 수 있다면 이미 당신 안에 있는 것이므로 여기서 사용할 $PATH필요는 없습니다 .which

실행할 수 있는지 확인하려면 유틸리티와 전체 절대 경로를 사용하세요.

질문도 참조하세요" which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?( which일반적인 상황에 대해).

관련 정보