문제

삼바 프로세스가 주어진 파일을 죽이지 않고 닫도록 강요하는 방법이 있습니까?

Samba는 각 클라이언트 연결에 대한 프로세스를 엽니 다. 때로는 필요한 파일이 필요한 것보다 훨씬 오래 열린 파일을 보유하고 있음을 알 수 있습니다. 보통 나는 단지 프로세스를 죽이고 (Windows) 클라이언트는 다음에 공유에 액세스 할 때 다시 열립니다. 그러나 때로는 다른 파일을 오랫동안 적극적으로 읽고 있으며 전체 연결이 아니라 하나의 파일을 '킬'하고 싶습니다.

편집 : 'NET RPC 파일 닫기'를 시도했지만 작동하지 않는 것 같습니다. 왜 그런지 아는 사람 있나요?

편집하다: 이것 내가 비슷한 것을 찾은 가장 좋은 언급입니다. Microsoft 서버가 해결 방법을 가지고있는 Win32 클라이언트에게는 문제가있는 것 같습니다. 그러나 삼바는 그렇지 않습니다. 나는 net rpc file close <fileid> 명령이 효과가 있었는데, 그 이유를 계속 찾으려고 노력할 것입니다. 이 경우 문제를 해결하지 못하더라도 Luckylindy의 답변을 받아들이고 있습니다.이 경우 유일한 유용한 절차이기 때문입니다.

도움이 되었습니까?

해결책

이것은 특히 Win98 기계에서 Samba에 연결할 때 시스템에서 항상 발생합니다. 우리는이 단계를 따르기 위해 그것을 해결합니다 (아마도 당신과 유사 할 것입니다).

  • 파일을 사용하는 컴퓨터를 확인하십시오 (즉 lsof|grep -i <file_name>)
  • 문제가되는 컴퓨터에서 해당 파일을 열거나 작업 관리자에 프로세스가 숨어 있는지 확인하십시오.
  • 운이 없다면 사용자에게 중요한 네트워크 프로그램을 종료하도록하십시오.
  • Linux에서 사용자의 삼바 프로세스를 처치하십시오 (예 : kill -9 <pid>)

더 나은 방법이 있었으면 좋겠다!

다른 팁

첫 번째 답변에 실제로 더 많은 질문이 포함되어 있었고 실제로는 많은 도움이되지 않았기 때문에 새로운 답변을 만들고 있습니다.

약간의 검색을 한 후에는 최신 버전의 Samba에 대한 현재 오픈 버그를 찾을 수 없었습니다. 삼바 버그 보고서 웹 사이트 및 새로운 버그를 만듭니다. 이것은 누군가가 아이디어를 고치는 방법에 대한 아이디어를 제안하고 개발자가 문제를 보도록하는 가장 간단한 방법입니다. Luckylindy는 이전 답변에 이것이 5 년 동안의 방식이라고 말하면서 의견을 남겼습니다. 프로젝트는 오픈 소스를보고하거나 패치를 제공하여 잘못된 것을 고치는 가장 좋은 방법입니다.

또한 메일 링리스트 항목 하나를 찾았습니다. 삼바 파일을 엽니 다, 그들은 추가하는 것을 제안합니다 posix locking=no 구성 파일에는 파일을 잠그지 않으면 NFS에 나눠진 파일이 없으면 파일이 고정 된 경우에도 잠겨있는 경우.

원한다면 PTRACE를 사용하고 프로그램에 첨부하는 프로그램을 작성할 수 있으며 모든 파일을 통과하고 잠금을 해제하고 닫습니다. 그러나 이것이 Samba를 알 수없는 상태로 남길 수 있다는 점에 유의하십시오. 이는 더 위험 할 수 있습니다.

내가 이미 언급 한 작업은 Samba를 주기적으로 작업으로 다시 시작하는 것입니다. 나는 그것이 해결책이 아니라는 것을 알고 있지만 일시적으로 작동 할 수 있습니다.

이것은 아마도 여기에 응답 될 것입니다. UNIX 시스템의 다른 프로세스에서 파일 설명자를 닫는 방법

'Net RPC 파일 Close'는 Samba에게 파일을 닫으라고 지시하는 의사 소통을 닫을 때까지 닫히지 않을 때까지 닫히지 않기 때문에 'Net RPC 파일 Close'은 작동하지 않을 것입니다.

Samba에 명시적인 옵션이없는 경우 표준 UNIX 인터페이스가있는 열린 파일 디스크립터를 외부로 닫는 것은 불가능합니다.

일반적으로 말하면, 당신은 외부에서 프로세스 파일 설명자로 막을 수 없습니다. 그러나 루트로서 당신은 물론 1997 년의 그 프랙 기사에서 볼 수 있듯이 그렇게 할 수 있습니다. http://www.phrack.org/issues.html?issue=51&id=5#article - 그래도 생산 시스템에서 그렇게하지는 않을 것입니다 ...

이 경우 더 나은 질문은 이유일까요? 파일을 일찍 닫으려면 왜? 궁극적으로 파일을 닫아야하는 목적은 무엇입니까? 당신은 무엇을 성취하려고 노력하고 있습니까?

Samba는 열린 파일을보고 닫기위한 명령을 제공합니다.

모든 열린 파일을 나열하려면 :

NET RPC 파일 -U Adadmin%비밀번호

바꾸다 Adadmin 그리고 비밀번호 Windows Ad Domain Admin의 자격 증명으로. 이렇게하면 파일 ID, 누가 OPEN OPEN OPEN의 사용자 이름, 잠금 상태 및 파일 이름이 제공됩니다. 결과를 Grep을 통해 배관하여 결과를 필터링하고 싶을 것입니다.

닫으려는 파일을 찾으면 파일 ID 번호를 복사 하고이 명령을 사용하십시오.

순 RPC 파일이 닫힙니다 FileId -유 Adadmin%비밀번호

나는 이와 같은 것을 달성해야했기 때문에 공유하는 장치를 쉽게 마운트 할 수있었습니다. 이 빠른 배쉬 스크립트를 썼습니다.

#!/bin/bash
PIDS_TO_CLOSE=$(smbstatus -L | tail -n-3 | grep "$1" | cut -d' ' -f1 - | sort -u | sed '/^$/$
for PID in $PIDS_TO_CLOSE; do
    kill $PID
done

단일 논증이 필요합니다.

smbclose /media/drive

그 인수 (GREP)와 일치하는 모든 경로는 닫혀 있으므로 꽤 구체적으로해야합니다. (삼바를 통해 열린 파일 만 영향을받습니다.) 분명히, 다른 사용자가 열린 파일을 닫으려면 루트가 필요하지만 열린 파일에는 잘 작동합니다. 파일의 다른 힘 폐쇄와 마찬가지로 데이터 손상이 발생할 수 있습니다. 파일이 비활성이라면 괜찮을 것입니다.

그것은 꽤 못 생겼지 만, 나의 유스 케이스 (전체 마운트 포인트를 닫음)의 경우 충분히 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top