cron에서 호출된 것처럼 명령을 실행하는 방법

cron에서 호출된 것처럼 명령을 실행하는 방법

스크립트를 작성하고 이를 cron 작업으로 설정했습니다. 하지만 환경변수의 차이로 인해 제대로 동작하지 않습니다.

이 경우에는 조금 변경하여 crontab -e크론 작업 시간을 분 단위로 설정한 후 다음 분 동안 기다려서 결과를 표시합니다. 나는 이것이 완전히 터무니없는 접근 방식이라고 생각하지만 더 좋은 방법을 모르겠습니다.

크론 작업에서 호출되는 것처럼 스크립트를 실행할 수 있는 방법이 있다면 그 방법을 사용하겠습니다.

이 작업을 수행하는 방법을 아는 사람이 있나요?

답변1

반대 접근 방식은 다음과 같습니다. 로그인 환경을 사용하도록 cron 실행을 강제합니다.

bash -lc "your_command"

Bash 매뉴얼에서:

-c string     If the -c option is present, then commands are read from string.
              If there are arguments after the string, they are assigned to the
               positional parameters, starting with $0.
-l            Make bash act as if it had been invoked as a login shell
               (see INVOCATION below).

부르다(약간 벗겨진 부분):

bash가 --login 옵션을 사용하여 대화형 로그인 셸 또는 비대화형 셸로 호출되면 먼저 /etc/profile 파일(파일이 있는 경우)에서 명령을 읽고 실행합니다. 파일을 읽은 후 ~/.bash_profile, ~/.bash_login, ~/.profile을 순서대로 찾아 존재하고 읽을 수 있는 첫 번째 파일부터 명령을 읽고 실행합니다. 이 동작은 셸을 시작할 때 --noprofile 옵션을 사용하여 비활성화할 수 있습니다.

더 알고 싶으세요?

답변2

또 다른 방법은 다음과 같습니다.

/usr/bin/env --환경 무시주문

매뉴얼 페이지에서 env:

-i, --ignore-environment

빈 환경에서 시작

답변3

더 좋은 방법은 을 사용하는 것입니다 at.

여기 몇 가지 예가 있어요

 echo $PWD/script.sh | at now

또는

 echo "reboot" | at 5:00

또는

 echo "mail -s test user@host" | at now + 1 hour

날짜/시간은 다음과 같습니다

관련 정보