mknod 명령은 무엇에 사용됩니까?


51

방금 Ubuntu를 기본 OS로 사용하기 시작했고하지 말아야 할 일에 대해 배우고 과거 사람들이 저지른 나쁜 일에 대해 배우고 싶었습니다. 나는 유닉스와 리눅스 시스템 관리자 가 새로운 곳에서 자신의 시스템에서했던 공포 이야기에 대해이 이메일을 보았습니다 . 그들 중 많은 사람들이 mknod 명령을 사용하여 문제를 해결하고 문제를 해결했습니다. 나는이 명령에 대해 들어 본 적이 없으며 Ubuntu의 매뉴얼 페이지는별로 도움이되지 않습니다. 그래서 제 질문은,이 명령이 무엇에 사용되는지, 그리고 일상적인 사용에 유용한 예제는 무엇입니까?

답변:


47

mknod원래 캐릭터를 생성하고 채우는 장치를 차단하는 데 사용되었습니다 /dev/. 요즘 같은 소프트웨어 udev는 커널이 해당 하드웨어를 감지했을 때 가상 파일 시스템에서 장치 노드를 자동으로 생성하고 제거하지만 원래 /dev/설치 중에 채워진 디렉토리 일뿐 입니다.

따라서 거의 완전한 재난이 발생하면 /dev가상 파일 시스템이로드 및 / 또는 급격히 udev실패하지 않으면 mknod최소한 초보적인 장치 트리를 다시 채워서 무언가를 백업 할 수 있습니다 ...하지만 그래, sysadmin 공포 이야기 시간. 개인적으로는 복구 용 USB 스틱 또는 CD를 권장합니다.

명명 된 파이프를 만드는 것 외에도 최종 사용자가 자신에게 관심을 가질 필요가 있고 심지어 '일일 사용'의 정의를 확장하는 데 사용할 수있는 일일 사용을 생각할 수 없습니다.


따라서 드라이버를 통해 장치와 통신하는 방법을 배우지 않고도 시스템과 통신하는 방법으로 시스템에 연결된 장치에서 실제로 사용하는 가상 파일을 작성하는 매우 전문적인 방법입니까?
Mark Tomlin

1
그러나 udev리눅스에만 해당 되는가? 아마도 다른 유닉스 계열 시스템은 여전히 ​​수동으로 장치를 생성합니까?
Faheem Mitha

2
@ 마크 어, 아니. 가상 장치 파일을 작성하면 소프트웨어가되는 방법입니다 가정 의 드라이버를 통해 장치와 통신 할 수 있습니다. 드라이버는 커널에 후크를 만듭니다. mknod는 후크를 소프트웨어가 연결할 수있는 장치 파일에 연결하는 장치 파일을 만듭니다.
Shadur

@Faheem 확실하지 않습니다. FreeBSD는 사용 devfs하거나 사용하는 것 같지만 devd개인적인 경험은 없습니다. 다른 유니스가 장치 노드를 만드는 과정을 자동화하는 자체 방법을 찾았다 고 생각합니다.
Shadur

@mark 예를 들어 Alsa는 /dev/snd감지하고 지원하는 각 사운드 하드웨어 비트의 다양한 요소 에 해당 하는 일련의 노드를 생성 합니다. 사운드를 사용하는 소프트웨어는 해당 장치를 사용하여 어떤 종류의 사운드 카드를 사용 중인지 정확하게 몰라도 사운드를 생성 할 수 있습니다.
Shadur

7

명명 된 파이프를 만들 수 있습니다.

나는 그것을 하나의 프로그램과 함께 사용하고 다른 하나는 그것에 쓰기 위해 사용합니다.

프로세스간에보다 쉽게 ​​통신 할 수 있습니다.

그렇지 않으면 존재하지 않는 장치에 대한 장치 파일을 만들 수 있습니다.

또한 : http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds3/mknod.htm


정답은 정확하지만 Shadur는 모든 수준의 독자에게 명확한 답변을 제공하므로이 질문에 대한 답변을 찾는 사람들에게 가장 적합하다고 생각합니다.
Mark Tomlin

나는 실제적인 접근 방식을 설명하려고 노력했다. mknod명명 된 파이프를 만드는 것 외에 다른 용도로 사용 하는 것은 드문 일이 아닙니다.
polemon

5

Oracle ASM 디스크 그룹을 생성하기 위해 원시 장치에서 작업하는 Oracle DBA로서 정기적으로 mknod장치를 연결 하는 데 사용 합니다.

위의 답변은 우리가 시스템 관리자가 아니기 때문에 매우 도움이되었습니다. 스토리지 관리자의 관점에서는 사용하기가 드물지만 mknodOracle ASM 관점에서는 일반적으로 사용 되는 경우가 드물다고 지적했습니다. (누군가 우리를 위해 더 나은 방법을 생각 해낼 수 있습니까?)


1
Linux에서 ASM을 실행 중이며 mknod를 실행할 이유가 없습니다. 나는 심볼릭 링크를 만드는 udev 스크립트를 가지고 있지만 mknod가 필요한 것이 무엇인지 확실하지 않습니다 ... Linux가 아닌 한. 물론이야.
derobert

당신이 변경하거나 추가 할 경우, 현대 리눅스 시스템에 있음을 알린다 @JayJee /dev으로 mknod, 이러한 변경 사항은 다음에 시스템이 다시 부팅 될 때 멀리 갈 것입니다. udev부팅시 변경 사항이나 추가 사항을 영구적으로 유지하기 위해 스크립트 나 규칙 파일을 작성해야합니다.
telcoM

3

IMHO, 명명 된 파이프를 만들더라도 mkfifo 명령은 mknod보다 낫습니다. 하나는 이름 자체를 설명하는 것입니다. 둘째, -m 옵션을 사용하여 umask 설정을 무시할 수 있습니다.


1
... 파이프라는 이름을 붙인 지 10 년이 지나서야 존재했습니다. 많은 사람들이 mknod foo p그것이 유일한 길이었을 때 배웠습니다 .

최근에 coreutils를 살펴볼 때까지 mknod에 대해 들어 본 적이 없습니다. 난 항상 mkfifo를 사용했습니다 ...
Six

0

“mknod”명령은 AT & T에 의해 Unix (tm) 버전 4의 라이센스 사용자에게 릴리스되었습니다. 나는 사본을 얻기 위해 시간과 돈을 소비하는 것이 가치가 있다고 당신에게 추천 할 것입니다.

Bell System Technical Journal, 57 : 6. 1978 년 7 월 -8 월 pp 1905-1929. 유닉스 타임 쉐어링 시스템. (리치, DM; 톰슨, 케이.)

이 문제, 특히이 기사에서는 Unix (tm))와 같은 우아하고 컴팩트하며 빠르고 안정적이며 안전하며 다양한 운영 체제를 구축 할 수있는 몇 가지 기본 개념을 이해하게 될 것입니다. 현재 사용 가능한 다양한 시스템은 여전히 ​​다재다능합니다 ;-)

여기서 몇 가지를 언급하려고합니다.

1) setuid 및 setgid 비트 및 상기 비트의 사용으로 사용자를 신뢰할 수있는 도메인과 신뢰할 수없는 권한 도메인으로 분리하는 방법 홉은 신뢰할 수있는 사용자가 시스템에 "# cd /; rm -rf * .o”에서는 권한의 부적절한 사용과“파괴 공간”을 모두 확인하십시오. 또한 인용 문구가있는 문장의 끝 부분은 마침표와 닫는 인용 부호의 순서를 나타냅니다. 영어 문법은 짜증 난다 (fm). dmr과 ken은 semnal 특허를 대중에게 기증했습니다.

2) 파일과 동일한 네임 스페이스를 통한 장치 액세스 여기에 작은 도구의 단순한 우아함이 다른 간단한 도구와 결합되어 설립자가 생각하지 않은 활동을 수행하는 곳이 강력 해집니다.

3) 데이터 공간의 파일은 문자열입니다. 구조는 프로그램 공간의 프로그램에 의해 부과되며 복잡한 Swiss-Army-Knife 프로그램과 밀접한 관련이 없습니다. Apple (R), Microsoft (R) 및 IBM (R)은 BSTJ를 읽는 제품이 많을수록 더 나은 제품을 보유했을 수 있습니다.

4) stdin, stdout, stderr.

5) 쉘, 해석 명령 프로세서, 간단한 도구를 쉽게 구성 할 수 있습니다.

6) 내부 루프의 코드 만 최적화하고 제한된 시간과 비용을 계산하십시오.

7) 언어 번역 프로세서에 i / o 구문을 포함시키지 마십시오.

C. <포트란

8) 키스.

9)“MACRO로 작성된 작은 도구를 사용하여 구현 된 RSX-11D에 대한 시간 공유 확장 기능, 나보다 다른 방법보다 좋은 실시간 시스템에 대한 다중 사용자 시간 공유 ayaeem 시스템 확장을 구현하는 것이 더 쉽습니다. unavoidat, 그렇지 않으면 더 높은 수준의 언어 pr 스크립트가 꽤 좋았을 때, 248k 바이트 PDP-11 // 45에 16 명의 사용자 (나머지 코어 인 16k 솔리드 스테이트 메모리). FOCAL, BASIC, FORTRAN IV, C, MACRO-11, 링크 편집, 프로그램 실행, 배치, 대화식 및 LAB-11 및 A / D에 대한 독창적 인 맞춤형 인터페이스를 사용하여 여러 과학 실험의 제어 / 데이터 수집을 통한 동시 프로그램 개발, D / A, 고해상도 클록, ...

9600baud CRT 또는 120cps 프린터 30cps DECwriter로 자극적 인 지연 편집이 관찰되지 않습니다. 300 lpm 프린터가 장착 된 약간 거친 스타카토. RJE 용 UT200 및 2780 RSX-11M, RSX-11M +, IAS 및 초기 버전의 VMS보다 Fastesr 프로그램 개발

대기열로 구현 된 우선 순위 연결 ATL의 행복한 특성을 사용하여 실시간 작업으로 구현 된 매우 간단한 시간 공유 스케줄러입니다.

요즘 유닉스 종류는 매우 빠르지 만 CPU가 3 초 안에 무한 루프를 할 수 있기 때문입니다. TFC.


입력 실수를 실례합니다. iPhone과 Parkinson은 잘 어울리지 않습니다. C <FORTRAN <COBOL <PL / 1, 왼쪽이 더 좋습니다.
k6mrm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.