읽기 전용 파일 시스템을 확인하는 스크립트

읽기 전용 파일 시스템을 확인하는 스크립트

읽기 전용으로 마운트된 파일 시스템이 있는지 여러 시스템을 어떻게 확인할 수 있나요? 어쩌면 스크립트를 통해?

答え1

awk '$4~/(^|,)ro($|,)/' /proc/mounts

答え2

나는 과거에 다음을 사용했습니다

grep ' ro ' /proc/mounts

어떤 경우에는 RO로 설계된 원격 설치를 건너뛰고 싶을 수도 있습니다.

grep ' ro ' /proc/mounts | grep -v ':'

자동 마운트를 통해 설치된 항목을 건너뛰고 싶을 수도 있습니다.

grep ' ro ' /proc/mounts | egrep -v 'automount|autofs'

答え3

문제의 파일 시스템을 찾는 것이 목적이라면(즉, 파일 시스템 오류로 인해 마운트 상태가 읽기 전용으로 변경된 경우) 다음을 수행합니다(ext* 파일 시스템이라고 가정).

 tune2fs -e panic [raw-disk-partition-name]

전임자:

 tune2fs -e panic /dev/sda1

이것이 하는 일은 시스템에 패닉이 발생하여 서버를 다시 시작하고 문제를 해결하기 위해 문제의 파일 시스템에서 fsck를 호출하는 것입니다. 따라서 심각한 파일 시스템 문제는 읽기 전용 모드로 전환하는 대신 시스템이 자동으로 문제를 해결하도록 함으로써 처리되는데, 이는 별로 도움이 되지 않습니다. 또한, 손상된 파일 시스템을 실행하여 잠재적으로 시간이 지남에 따라 더 많은 피해를 입힐 가능성이 있는 것보다 문제가 있는 파일 시스템에 당황하여 수정하는 편이 낫습니다.

答え4

다른 답변에서 알 수 있듯이 또는 구문 분석을 /proc/mounts사용할 수 있습니다 . 예를 들어 읽기 전용 설치를 나열할 수 있습니다.grepawk

$ grep "\sro[\s,]" /proc/mounts

또는

$ awk '$4~/(^|,)ro($|,)/' /proc/mounts

콘텐츠를 구문 분석할 수 있는 또 다른 방법은 /proc/mounts다음과 같습니다.

$  grep '^ro$' /proc/fs/*/<device>/options

<device>하위 파일 시스템의 장치 노드 이름은 어디에 있습니까 /dev? 예를 들어

$ grep '^ro$' /proc/fs/*/sdc1/options

ro읽기 전용으로 설치된 경우 /dev/sdc1반환됩니다 .

(마운트된 파일 시스템 대신) 읽기 전용 블록 장치를 확인하려면 다음을 사용할 수 있습니다.

$ cat /sys/block/<device>/ro

1파일 시스템이 읽기 전용인지 읽기-쓰기인지 여부를 0반환합니다 .

위의 내용은 <device>실제 장치 노드를 나타냅니다. 심볼릭 링크 장치를 확인하려는 경우(예:장치 매퍼또는 by-uuid참조) basename및 를 사용하여 readlink장치 노드 이름을 얻을 수 있습니다. 다음 예와 같습니다.

$ grep '^ro$' /proc/fs/*/$(basename $(readlink -f /dev/mapper/foo)/options
$ cat /sys/block/$(basename $(readlink -f /dev/mapper/foo)/ro

関連情報