DVD에서 실행중인 bash 스크립트가 있습니다. 이 스크립트는 다중 볼륨 tar 파일을 DVD에서 로컬 시스템으로 복사합니다. 사본을 부분적으로 통과하면서 스크립트는 사용자에게 두 번째 DVD를 넣으라는 메시지를 표시하고 남은 파일이 복사됩니다. 스크립트는 첫 번째 DVD에는 있지만 두 번째 DVD에는 존재하지 않습니다.Bash 스크립트가 오류없이 종료됩니다.
이 스크립트는 마지막 파일을 복사 한 후, 단순히 tar 다중 볼륨 추출 작업 및 후속 처리를 시작하기 전에 중지합니다. 오류나 메시지가보고되지 않았습니다. 나는 '-x'를 사용하여 bash를 실행하려고 시도했지만 아무런 의심도 없습니다. 더 불행한 것은이 행동이 일치하지 않는다는 사실입니다. 때로는 스크립트가 중지되지만 다른 시간에는 문제없이 계속 진행됩니다.
나는 스크립트에서 strace를 실행했습니다. 복사 작업의 결론에 따라,이 참조 :
read(255, "\0\0\0\0\0\0\0\0\0\0"..., 5007) = 1302
read(255, "", 5007) = 0
exit_group(0) = ?
그 bash는 메모리에 스크립트 파일을 읽고 거기에서 그것을 실행하지만에서 스크립트 파일을 다시 읽어하려고 가능성이 알고 어떤 점과 실패 (더 이상 존재하지 않기 때문에)? tar 파일은 상당히 크며 스크립트가 시작될 때부터 마지막 파일을 복사 할 때까지 (두 번째 DVD에서) 약 10-15 분이 소요됩니다.
dmesg에 메모리가 부족하거나 그와 같은 것을 제공 할만한 것이 있습니까? 내가 시도해 볼만한 점은 스크립트를 수정하여 로컬 저장소에 자신을 복사하고 거기에서 스스로를 실행하는 것입니다. – timmins
제안 해 주셔서 감사합니다. 나는 dmesg를 점검 할 것이다. 나는 실제로 스크립트를/tmp에 복사 한 다음 거기에서 다시 호출하는 것에 대해 생각해 보았습니다. 내 유일한 관심사는 부모 스크립트가 여전히 DVD에서 실행된다는 것입니다. 아마도 bash는 자식 스크립트가 종료 될 때까지 부모 스크립트를 다시 읽으려고 시도하지 않을 것입니다 (어쨌든 끝났습니다). – LousyG
방금 재현 할 수있었습니다. dmesg의 아무 것도.흥미롭게도, "cat/dev/zero>/dev/shm/file"을 실행하고 가능한 한 많은 메모리를 사용하기 위해 vi로 매우 큰 로그 파일을 여는 동안 재현했습니다 (32M을 무료로 사용했습니다!). . 나는 이것들이 원인인지 아니면 내가 운이 좋았는지 확실하지 않지만 주목할만한 가치가있다. 스크립트를 수정하여 자체를/tmp에 복사 한 다음 다시 실행하십시오. 그런 다음 다시 테스트 해 보겠습니다. 우리는 무슨 일이 일어날지를 볼 것입니다. – LousyG