실행중인 스크립트로 작성중인 파일을 여는 것이 안전합니까?


20

파일에 쓰는 쉘 스크립트를 실행 중입니다.
이 스크립트를 완료하는 데 시간이 오래 걸릴 수 있으며 전체 스크립트가 완료 될 때까지 기다리지 않고 부분 출력을 모니터링하고 싶습니다.

스크립트가 작성하는 파일을 두 번 클릭해도 안전합니까?


4
그. 또한 미리 알고 있다면 티를 통해 스크립트 출력을 파이프 할 수 있습니다.
Hennes

1
관련 세미 티 특공대입니다 : 일부 파일에 동시에 단말기에 출력을 전달할 수 있습니다 : man7.org/linux/man-pages/man1/tee.1.html
Cheiron

답변:


42

파일을 읽으면 안전하지만 언급 한 두 번 클릭하면 일부 편집기에서 파일을 열어 변경하고 저장하는 옵션을 제공 할 수 있습니다. 미스 클릭이 발생하므로 파일을 변경할 수없는 명령을 사용하는 것이 좋습니다.

이들은 터미널에서 작동하는 예입니다. 그들은 파일을 읽습니다.

cat file
less file
less +F file
tail -n 5 file
tail -f file

4
더 똑똑한 파일 편집기는 파일이 변경되었다는 경고를 표시하고 파일을 다시로드할지 묻지 만 벙어리 편집기는 그렇지 않을 수 있습니다.
user1306322

5
@ user1306322 안전하지는 않습니다. 파일이 쓰기 위해 열려 있기 때문에 Juts가 지속적으로 쓰여지는 것을 의미하지는 않습니다. 에디터가 실행되는 동안 아무 것도 쓰지 않으면 눈치 채지 못할 것입니다. 그리고 편집기는 새 파일을 작성하고 맨 위에 이름을 바꿀 수 있으므로 (이름 바꾸기가 원자 적이므로) 쓰여지는 파일이 삭제됩니다. 그 시점부터 작성된 출력은 삭제 된 파일로 이동합니다.
kasperd

13

글을 쓰지 않는 한 괜찮습니다.

그러나, 나는 사용하는 것이 좋습니다

tail -f log_file

다른 터미널에서.

이 명령은 파일을 "따라" log_file스크립트에 의해 업데이트되는 즉시 새로 추가 된 내용을 작성합니다.


1

Kamil Maciorowski의 답변에 의견을 추가 할 담당자가 충분하지 않습니다.

일부 파일의 tail -F file경우 다음을 계속 회전하도록해야합니다. 예를 들어 syslog를보고 있습니다.


-1

스크립트 (또는 기본 프레임 워크 구현)가 작업 중에 파일 핸들을 반복적으로 열고 닫는 경우 다음과 같은 이유로 후속 쓰기 모드 열기에서 공유 위반 오류가 발생할 수 있습니다.
1) 스크립트가 쓰기를 요청할 수 있습니다. 단독 모드에서 액세스 (동시 읽기 액세스 제외). 파일 편집기 / 뷰어 프로그램이 파일을 아직 읽기만하는 경우 쓰기 스크립트에서 오류가 발생할 수 있습니다.
2) 또한 일부 파일 편집기 / 뷰어는 파일을 연 전체 기간 동안 파일을 잠급니다.

결론적으로 파일을 보는 데 사용중인 프로그램에 따라 문제가 발생할 수 있습니다. 그리고 파일에 쓰는 스크립트의 구현 (또는 기본 프레임 워크)으로 인해 발생할 수있는 문제가 있습니다.


1
내 경험상 Linux에서는 매우 드문 일입니다 (주 : 저는 집 사용자입니다). Windows에 문제가 있음을 알고 있지만 질문에는 Linux 태그가 붙어 있습니다. Linux에서 "편집기 / 뷰어"가 어떻게 작동합니까? 어떤 종류의 리눅스에서 잠금은 필수입니까?
Kamil Maciorowski

@KamilMaciorowski 불행히도, 나는 특정한 경고 목록이 없습니다. 자물쇠는 어디에서나 필수는 아니며 (Windows에서도 마찬가지) 일부 사람들은 자물쇠를 사용합니다. 나는 단지 그러한 문제가 가능하다는 것을 말하고 있으며, 미션 크리티컬 한 상황에서는이 접근법을 부주의하게 사용하지 마십시오. 이것이 적용되는지 또는 중요한지를 결정하는 것은 OP에 달려 있습니다. 위의 질문의 존재는 OP에 대해 이러한 현상이 이미 발생했을 가능성을 높입니다. 아무 일도 일어나지 않는다고 주장하는 대답은 새로운 정보를 많이 제공하지 않습니다.
Roland Pihlakas

1
@RolandPihlakas 나는이 답변의 저자 그것을 경험했다고 생각 합니다 -Windows 에서만 . 따라서 Linux를 통한 POSIX 호환 시스템과는 무관하며 출력을 모니터링 tail -f하거나 less +F일상적으로 모니터링합니다 .
Chromatix

난 정말 대해 혼동하고있어 @Chromatix 건설 당신은 내 의견에 포인트를 대답하지 않았다 ... 당신의 추론의 일부가 어떤 제안이나 새로운 정보는 Windows 용 개인 증오 외에, 여기에 제공하는 것을보고 실패 모두에 . 내가 경험 한 것을 왜 신경 쓰나요? 개인적으로 가지 마십시오.
Roland Pihlakas

@RolandPihlakas 귀하의 답변은 Linux에서 파일을 읽기 전용으로 여는 것이 실제로 그렇지 않을 때 위험하다는 매우 확고한 인상을주기 때문에. 실제로 "파일 끝"이 "레코드 끝"또는 "줄 끝"을 의미하지 않는 한, 추가되는 파일을 읽는 것이 안전합니다. 실패 하는 유일한 경우 는 쓰기 응용 프로그램에 "필수 잠금"이있는 경우 (표준 POSIX 잠금은 "자문 잠금") 거의 정의되지 않은 오류가 발생할 수 있습니다. 엉뚱한 행동보다.
Chromatix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.