읽기 전용으로 마운트 / 재 마운트하지 못하게하는 파일을 어떻게 나열합니까?
A) 패키지 fuser
에서 찾을 수 있습니다 psmisc
. 이것은 내가 fuser
빛을 발하는 유스 케이스 이며보다 유용합니다 lsof
.
# fuser -v -m / 2>&1 | grep '[Ff]r.e'
그러면 읽기 (f) 및 쓰기 (F)를 위해 파일이 열려있는 모든 프로세스가 표시됩니다. 읽기 전용으로 마운트 / 재 장착하지 못하게하는 파일은 쓰기 (F)를 위해 열린 파일입니다.
쓰기 위해 루트 디렉토리 파일을 열어 실행 파일로 실행중인 프로세스를 종료하십시오 .
# for fupid in $(fuser -v -m / 2>&1 | grep Fr.e | awk '{print $2}'); do kill $fupid; done
그것은 systemd
경고와 함께 의견 위에 있습니다. 경우 systemd
이며 init
다음 fuser
그것을보고 다른 고려 사항이 있습니다 것입니다. systemd
실행 하면 방금 확인하여 프로세스를 종료 한 경우에도 뒤에서 프로세스를 다시 시작할 수 있습니다 fuser
. systemd
전통적인 것보다 훨씬 앞선 것 sysvinit
입니다.
B) 설명 의 업데이트 는 시스템에 ... 만 init
있고 getty
여전히 실행 중임을 나타냅니다 .
시스템이 사용 systemd
하고 있지 않다는 의견이 표시 됩니다 init
. 스트레칭시, systemd
입니다 init
. 의견에 명시 적으로 말하지 않았으므로 sysvinit
문제의 시스템이에 대한 기본 확장 systemd
을 사용한다고 가정합니다 init
. 또는이 게시물을 우연히 본 스트레치를 사용하는 다른 사람들 systemd
이이 부분을 유용하게 사용할 수 있습니다.
당 데비안 위키 ,
시스템 초기화 프로세스는 init 데몬에 의해 처리됩니다. 스퀴즈 및 이전 릴리스에서는 해당 데몬이 sysvinit 패키지에서 제공되며 다른 방법은 지원되지 않습니다. 에서 씩씩 거리는 기본 초기화 데몬이 여전히,sysvinit
하지만 systemd의 "기술 미리보기"가 가능합니다. 에서 제시 하고 스트레칭 , 기본 초기화 시스템입니다systemd
만, Sysvinit의 전환이 지원됩니다.
jessie 이후로 systemd 만 완전히 지원됩니다. sysvinit는 대부분 지원되지만 데비안 패키지는 sysvinit 시작 스크립트를 제공하지 않아도됩니다. runit도 패키지되어 있지만 다른 테스트와 동일한 수준의 테스트 및 지원을받지 않았으며 현재 PID 1로 지원되지 않습니다.
함께 systemd
실행은 문제없이 다시 마운트 할 수 있도록 / 확보하기 위해주의해야 할 몇 가지 추가 단계가 있습니다.
또는에 system.slice
대한 열린 파일을 보유하고 있을 가능성 이 있습니다 (둘 다 소켓 종속성이 있음). 또는 경우는 이 리스폰 수있는 실행 에 임대를 기록하는 / var에 / ... ( 은 / var는 / 등, 항상 자신의 장치가 아닙니다) 및 당신이 죽일 찾을 수 있지만, 그것은 바로 다시 시작됩니다. systemd-journald.service
systemd-udevd.service
NetworkManager
dhclient
fuser
dhclient
NetworkManager
도덕은 '원하다'/ (그리고 훨씬 더 systemd
) 자동화 될 수있는 많은 것들 입니다.
실행 가능하다면 systemd
실행 레벨 1에 해당하는 것이 일치합니다 rescue.target
(및 runlevel1.target
에 대한 심볼릭 링크 rescue.target
임).
1) 시스템을 rescue.target
# systemctl isolate rescue.target
루트 암호를 입력하라는 메시지가 나타납니다. 화면의 지시를 따르십시오.
2) 구조 쉘에서 /를 원하는 것을 찾으십시오.
# systemctl show -p Wants /
일반적으로 system.slice
; 원하는 모든 것을 중지하십시오. 예 :
# systemctl stop system.slice
3)이 시점에서, 다시 마운트는해야 하지 보고 mount: / is busy
하고 mount -o remount,ro /
있어야 작동합니다. 그렇지 않은 경우로 다시 확인하십시오 fuser
.
4) FWIW; 또한 umount
다른 장치가 다른 마운트의 하위 디렉토리 (예 : 중첩 마운트)에 마운트 될 때 실패하는 경우 도 보았습니다 . 예를 들어, / var / 또는 / boot / 가 다른 장치에 있고 마운트 된 umount /
경우 실패합니다 . 비록 아직이 경우에 작동합니다.mount -o remount,ro /
lsblk
중첩 된 마운트를 시각화하는 데 도움이 될 수 있습니다.
lsof + L1이 더 이상 연결 해제 된 열린 파일을 나열하지 않는 이유는 무엇입니까?
사용할 수 없기 때문에 (소켓 또는 대부분의 FIFO 및 파이프) 더 이상 파일을 열지 않거나 (부모 프로세스가 파일 설명자를 닫았 음) 링크 수가 1보다 큽니다.
man lsof (8) 세부 사항 ...
+ | -L [l]
이 옵션 은 사용 가능한 파일 링크 수 목록을 활성화 ( '+') 또는 비활성화 ( '-')합니다 ( 예 : 소켓 또는 대부분의 FIFO 및 파이프에는 사용할 수 없음).
다음 번호없이 + L을 지정하면 모든 링크 수가 나열됩니다. -L을 지정하면 (기본값) 링크 수가 표시되지 않습니다.
+ L 다음에 숫자가 오면 해당 링크보다 링크 수가 적은 파일 만 나열됩니다 . (-L 뒤에 숫자가있을 수 없습니다.) ''+ L1 ''형식의 스펙은 링크 해제 된 열린 파일을 선택합니다. 양식의 스펙은 +aL1 <file_system>
지정된 파일 시스템에서 링크되지 않은 열린 파일을 선택합니다.
w
또는u
에서FD
의 열lsof
출력을 위해 또는F
출력의fuser -vm /
예. 그러나 나는 당신에게 철저한 목록을 줄 수는 없습니다. needrestart 패키지 를 설치할 수도 있습니다 .