unRAID 사용자 스크립트에서 jdupes 출력 로깅

unRAID 사용자 스크립트에서 jdupes 출력 로깅

jdupes중복 파일을 관리하는 데 사용하는 unRAID 서버가 있습니다 . 사용자 스크립트를 설정했습니다 jdupes -rL /dir1 /dir2. 그러나 사용자 스크립트의 로그는 표시되지 않습니다 jdupes.

jdupes출력은 터미널에서 작동합니다. stdbuf -oL jdupes -rL /dir1 /dir2 >output.txt 2>&1스크립트에서 호출 하면 output.txt에 내가 확인해야 하는 데이터가 포함됩니다.

그러나 두 방법 모두 사용자 스크립트에서는 작동하지 않습니다. 나도 시도했다

output=$(stdbuf -oL jdupes -rL /dir1 /dir2 2>&1)
echo $output
blah=42
echo $blah

42내가 시도한 다른 작업으로는 임시 파일에 쓰고 다시 읽고 출력을 로그에 반영하는 것(임시 파일은 생성되었지만 기록되지 않음), 사용자 스크립트의 로그에 직접 쓰는 것 등이 있습니다 . file(출력 없음) 및 tee파일(파일이 생성되었지만 비어 있음).

이러한 모든 메서드는 터미널에서 호출될 때 작동합니다. 나는 이것이 unRAID 사용자 스크립트와 jdupes 간의 상호 작용과 관련된 문제라고 생각하지만 어떤 조언이라도 도움이 될 것입니다.

고쳐 쓰다:

따라서 표준 출력 jdupes은 다음과 같습니다(내 의견 포함).

Scanning: x files, y items (in d specified)                # line 1
Progress [i/j, k pairs matched] n%  (confirm: m%)          # line 2

# output lines (I want to log these)
[SRC] /dir1/file1
----> /dir2/filex1

[SRC] /dir1/file2
----> /dir2/filex2

터미널에서 실행하면 1행과 2행이 터미널에 표시되고 실행 중에 업데이트됩니다. 실행이 완료되면 라인 1과 출력 라인이 표시됩니다.

터미널에서 실행하고 비슷한 파일로 리디렉션되면 jdupes -rfL /dir1 /dir2 >> output.txt실행 중에 1행과 2행이 터미널에 나타나고 완료 후에는 1행이 터미널에 있고 출력 행은 output.txt에 있습니다. 이것이 바로 제가 원하는 일입니다.

그러나 사용자 스크립트에서 실행하면 로그 파일에 아무 것도 표시되지 않습니다. Chris의 답변에 있는 방법을 사용하면 로그 파일에 실행 중에 계속 업데이트되는 1행과 2행이 표시되지만 스크립트가 완료된 후에는 로그 파일이 비어 있습니다. 라인 1도 없고, 라인 2도 없고, 출력 라인도 없습니다. 출력 라인이 로그 파일에 개별적으로 표시되기를 원합니다.

이것이 내 질문과 의도를 더 명확하게 해주기를 바랍니다.

관련 정보