FreeBSD의 crontab에서 컬이 작동하지 않는 스크립트

FreeBSD의 crontab에서 컬이 작동하지 않는 스크립트

나는 bash스크립트를 가지고 있습니다 :

#!/usr/local/bin/bash

/usr/local/bin/curl ifconfig.io --interface tun15071 -m 15 -w "%{http_code}\n" > /home/user/out

...그리고 다음 crontab:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
* * * * * /home/user/cron_ch.sh

Cron이 작업을 수행하지만 파일을 변경하지 않습니다. 콘솔에서 스크립트를 수동으로 실행하면 파일이 변경됩니다.

크로나 기록:

Aug  5 09:57:00 GAME2 /usr/sbin/cron[66337]: (user) CMD (/home/user/cron_ch.sh)

온라인에서 찾은 정보에 따르면 이는 크론 환경과 사용자의 차이로 인한 것일 수 있습니다. 이 문제를 해결할 수 있는 변수가 보이지 않습니다.

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
TERM=xterm
MAIL=/var/mail/root
LOGNAME=root
USER=root
USERNAME=root
HOME=/root
SHELL=/bin/csh
SUDO_COMMAND=/usr/bin/su
SUDO_USER=user
SUDO_UID=1022
SUDO_GID=1022
HOSTTYPE=FreeBSD
VENDOR=amd
OSTYPE=FreeBSD
MACHTYPE=x86_64
SHLVL=1
PWD=/home/mateo
GROUP=wheel
HOST=name
REMOTEHOST=255.255.255.255
EDITOR=vi
PAGER=more
BLOCKSIZE=K

사용자는 cron에서 메일을 받지 못했습니다. Cron은 다른 사용자를 위해 작업을 수행합니다.

답변1

cron 항목 SHELL에는 변수를 /bin/bash.

거기에 특별히 복사하지 않으면 쉘은 로 작동하지 않습니다 /bin/bash. FreeBSD 기본 시스템은 처럼 작동하지 않습니다. bashFreeBSD 패키지 시스템에서 설치하면 다음과 같이 설치됩니다 /usr/local/bin/bash (참조).hier(7)수동FreeBSD 디렉토리 계층 구조의 레이아웃에 대한 정보를 보려면)

이는 cron이 스크립트를 실행하려고 할 때 스크립트를 실행하기 위한 셸을 시작할 수 없으며 실패한다는 의미입니다.

수동으로 실행하는 경우 (현재 작동 중인) 셸을 사용합니다.

일반적으로 crontab을 구성할 때 꼭 필요한 경우가 아니면 어떤 환경도 덮어쓰지 마십시오(예, 때로는 경로가 어려울 수 있습니다).

관련 정보