스크립트를 작성하고 이를 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
날짜/시간은 다음과 같습니다예