로그 파일 이름에 시간 추가

로그 파일 이름에 시간 추가

log_Jan_01_hh:mm:ss변수 timestamp가 다음과 같이 정의되도록 log_files의 이름을 지정하고 싶습니다 date +"%b_%d_%T".
이제 값을 변수로 설정하면 다음과 같습니다.

setenv now `date +"%b_%d_%T"`

그런 다음 $now변수는 그 순간 업데이트된 값을 가져오므로 로그 파일의 이름은 항상 동일합니다.

$now매 순간 가치를 새로 고치려면 어떻게 해야 합니까 ?

답변1

문자열을 저장 $now하고 호출할 때 백틱을 추가하면 현재 날짜를 얻게 됩니다.

[~]% setenv now 'date +"%b_%d_%T"'

[~]% echo $now
date +"%b_%d_%T"

[~]% echo `$now`
"Dec_03_13:09:52"

[~]% echo `$now`
"Dec_03_13:09:54"

이는 다음을 수행하는 것과 사실상 동일합니다.

[~]% echo `date +"%b_%d_%T"`

호출 변수를 재평가하도록 명령에 지시할 방법이 없습니다 tcsh. 변수에 문자열을 할당하면 $now해당 tcsh문자열을 생성한 명령이 무엇인지 알 수 없습니다.
또 다른 (가능한) 해결책은 함수를 사용하는 것일 수도 있지만 tcsh그 함수도 누락되었습니다...

답변2

crontab에 추가하고 매분마다 실행하십시오.

crontab -e

다음과 같은 줄을 삽입하세요.

* * * * * setenv now 'date +"%b_%d_%T"'

저장 및 종료. 변수는 1분마다 업데이트됩니다.

관련 정보