Bash를 사용하여 작은 로그를 작성하는 방법은 무엇입니까?

Bash를 사용하여 작은 로그를 작성하는 방법은 무엇입니까?

execPHP와 bash를 통해 애플리케이션을 실행합니다. 내 문제는 이것이 매우 큰 로그 파일을 생성한다는 것입니다. 초당 모든 활동에 대한 로그가 아닌 마지막 출력만 필요합니다.

이것은 내 격찬이다:

%s > %s 2>&1 & echo -n $! > %s

출력 파일을 추가하지 않고 다시 작성하려면 어떻게 수정해야 합니까?

전체 스크립트는 다음과 같습니다:

  exec(sprintf("%s > %s 2>&1 & echo -n $! > %s", $cmd, $outputfile, $pidfile));

이것은 나의 완전한 프로그램입니다:

$kovNev = 'uid1_fil_'.time();       
$cmd = 'btdownloadheadless --saveas /var/www/virtual/tigyisolutions.hu/boxy/htdocs/downloaded_torrent/'.$kovNev.'/   '.$_REQUEST["torrent"];
$outputfile = 'downloaded_torrent/folyamatok/'.$kovNev.'.txt';
$pidfile = 'downloaded_torrent/folyamatok/'.$kovNev.'_id.txt';
exec(sprintf("%s 2>&1 | tail > %s& echo -n $! > %s", $cmd, $outputfile, $pidfile));

답변1

> $outputfile파일을 추가하지 않고 덮어씁니다. >>파일에 추가됩니다. 어쨌든 쉘 구성을 사용할 때 파이프를 사용할 수 있습니다.

%s 2>&1 | tail > %s &

참고: 이는 경로에 특수 문자가 포함되지 않은 경우에만 작동합니다. 더 나은 해결책은 다음과 같습니다.

'%s' 2>&1 | tail > '%s'& echo -n $! > '%s'

이렇게 하면 ' 자체를 제외한 경로와 관련된 모든 문제가 방지됩니다.

관련 정보