현재 날짜를 가져 와서 PHP 스크립트를 실행하고 출력 및 오류를 현재 날짜가 포함 된 파일 이름으로 리디렉션하는 작은 스크립트가 있습니다.
DATE=$(date +"%Y%m%d")
FILE="log/${DATE}.log"
php -q script.php >> $FILE 2>&1
로컬 컴퓨터 (Windows 7, Aptana IDE)에서이 스크립트를 실행하면 PHP 스크립트가 제대로 작동하고 로그 파일에 예상 파일 이름이 있습니다 (예 :) 20140502.log
.
그러나 SFTP를 통해 해당 스크립트를 원격 시스템에 푸시하고 해당 스크립트를 실행할 때 파일 이름은 다음과 같습니다.
20140502?.log?
무엇이 문제 일 수 있습니까? SFTP 업로드를위한 인코딩은 UTF-8이 예상되는 ANSII입니다. 아니면 스크립트 자체에서 아무것도 변경해야합니까?
시스템 / 쉘에 대한 정보 :
[foo@bar path]$ sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
재미있는 사실 : cronjob이 해당 스크립트를 호출하면 물음표가 표시되지 않습니다. 스크립트를 수동으로 실행하는 경우에만 가능합니다.
LANG=en_US.UTF-8
입니다.
2>&1 >> $FILE
)은 stderr을 터미널로 보내고 stdout을 파일로 보냅니다. stderr도 파일로 이동하려면 다음이 필요합니다.>> $FILE 2>&1
?
문자를 표시 할 수 없음을 나타냅니다. 분명히 인코딩 차이처럼 들립니다. 당신은 우리에게 출력을 줄 수 있습니까env|grep -E '(LC|LANG)'
?