Skip to main content

리눅스 명령 초기화 이해

칼리리눅스를 윈도우 10에 설치해 사용해보자!! (Windows 10 Kali Linux) (유월 2025)

칼리리눅스를 윈도우 10에 설치해 사용해보자!! (Windows 10 Kali Linux) (유월 2025)
Anonim

초기화 모든 Linux 프로세스의 부모입니다. 컴퓨터가 부팅 될 때 시작하는 첫 번째 프로세스이며 시스템이 종료 될 때까지 실행됩니다. 다른 모든 프로세스의 조상입니다.

주된 역할은 / etc / inittab 파일에 저장된 스크립트로 프로세스를 만드는 것입니다. 이 파일은 일반적으로 사용자가 로그인 할 수있는 각 행에 gettys를 생성하도록하는 항목을 저장하며, 특정 시스템에 필요한 자율 프로세스도 제어합니다.

런레벨

에이 런 레벨 선택한 프로세스 그룹 만 실행하도록 허용하는 시스템의 소프트웨어 구성입니다. 이 런레벨 각각에 대해 Init에 의해 생성 된 프로세스는 / etc / inittab 파일에 정의됩니다. Init는 8 개의 런레벨 (0에서 6, S 또는 s) 중 하나가 될 수 있습니다. 런레벨은 권한있는 사용자가 Telinit을 실행하게함으로써 변경됩니다.이 명령은 적절한 신호를 Init에 전송하여 어떤 런레벨을 변경할 지 알려줍니다.

런레벨 0, 1 및 6은 예약되어 있습니다. 런레벨 0은 시스템을 정지시키는 데 사용되고, 런레벨 6은 시스템을 재부팅하는 데 사용되며, 런레벨 1은 시스템을 단일 사용자 모드로 전환하는 데 사용됩니다. 런레벨 S는 런레벨 1을 입력 할 때 실행되는 스크립트에 의해 직접적으로 사용되는 것이 아닙니다.

런레벨 7에서 9까지는 유효하지만, "전통적인"유닉스 변종이이를 사용하지 않기 때문에 잘 설명되어 있지는 않습니다. 런레벨 S와 S는 동일합니다. 내부적으로, 이들은 동일한 런레벨에 대한 별명입니다.

부팅

Init가 커널 부트 시퀀스의 마지막 단계로 호출 된 후 / etc / inittab 파일을 찾아서 그 유형의 항목이 있는지 확인합니다 initdefault . initdefault 항목은 시스템의 초기 런레벨을 결정합니다. 해당 항목이 없거나 (/ etc / inittab을 전혀 사용하지 않는 경우) 시스템 콘솔에 런레벨을 입력해야합니다.

런레벨 S 또는 s는 시스템을 단일 사용자 모드로 만들고 / etc / inittab 파일을 필요로하지 않습니다. 단일 사용자 모드에서는 / dev / console에 루트 셸이 열립니다.

단일 사용자 모드로 들어가면 init은 /etc/ioctl.save에서 콘솔의 ioctl 상태를 읽습니다. 이 파일이 존재하지 않으면 init은 9600 baud 및 CLOCAL 설정으로 행을 초기화합니다. init이 단일 사용자 모드를 종료하면 콘솔의 ioctl 설정을이 파일에 저장하여 다음 단일 사용자 세션을 위해 다시 사용할 수있게합니다.

처음으로 다중 사용자 모드로 들어가면 Init는 boot 및 bootwait 항목을 수행하여 사용자가 로그인하기 전에 파일 시스템을 마운트 할 수있게합니다. 그런 다음, 런레벨과 일치하는 모든 항목이 처리됩니다.

새로운 프로세스를 시작할 때 Init은 먼저 / etc / initscript 파일이 존재하는지 확인합니다. 이 경우,이 스크립트를 사용하여 프로세스를 시작합니다.

자식이 종료 할 때마다, init은 / var / run / utmp 및 / var / log / wtmp에 존재하는 사실과 이유를 파일이 존재할 경우 기록합니다.

런레벨 변경하기

지정된 모든 프로세스를 생성 한 후 Init는 자손 프로세스 중 하나가 죽을 때까지 대기하거나 전원 파손 신호를 기다리거나 시스템 런레벨을 변경하기 위해 Telinit에서 신호를받을 때까지 대기합니다. 이 세 가지 조건 중 하나가 발생하면 / etc / inittab 파일을 다시 검사합니다. 언제든지 새 항목을이 파일에 추가 할 수 있습니다. 그러나 init은 위의 세 조건 중 하나가 발생하기를 기다립니다. Telinit Q 또는 q 명령은 즉각적인 응답을 제공하기 위해 Init를 깨우고 / etc / inittab 파일을 다시 검사 할 수 있습니다.

Init이 단일 사용자 모드가 아니고 powerfail 신호 (SIGPWR)를 수신하면 / etc / powerstatus 파일을 읽습니다. 그런 다음이 파일의 내용을 기반으로 명령을 시작합니다.

  • 실패): 전원이 공급되지 않습니다. UPS가 전원을 공급하고 있습니다. powerwait 및 powerfail 항목을 실행하십시오.
  • 승인): 전원이 복원되면 powerokwait 항목을 실행하십시오.
  • 낮은): 전원이 공급되지 않고 UPS의 배터리가 부족합니다. powerfailnow 항목을 실행하십시오.

/ etc / powerstatus가 없거나 F, O 또는 L 이외의 문자가 있으면 Init는 문자 F를 읽는 것처럼 작동합니다.

SIGPWR 및 / etc / powerstatus의 사용은 권장하지 않습니다. Init와 상호 작용하려는 사용자는 / dev / initctl 제어 채널을 사용해야합니다.

Init가 런레벨 변경을 요청 받으면, 새로운 런레벨에서 정의되지 않은 모든 프로세스에 경고 신호 SIGTERM을 보냅니다. 그런 다음 SIGKILL 신호를 사용하여 이러한 프로세스를 강제 종료하기 전에 5 초 동안 대기합니다. Init는 이러한 모든 프로세스와 하위 프로세스가 Init이 원래 만든 프로세스 그룹에 남아 있다고 가정합니다. 프로세스가 해당 프로세스 그룹 소속을 변경하면 이러한 신호를 수신하지 않습니다. 이러한 프로세스는 별도로 종료해야합니다.

텔리 니트

Telinit은 / sbin / init에 링크됩니다. 1 문자의 인수를 취해 적절한 동작을 실행하기 위해서 Init에 시그널을 보낸다. 텔리 니트의 지시는 다음과 같습니다.

  • 0, 1, 2, 3, 4, 5 또는 6: Init에 지정된 실행 수준으로 전환하도록 지시합니다.
  • a, b, c: 런레벨 a, b 또는 c가있는 / etc / inittab 파일 항목 만 처리하도록 Init에 지시하십시오.
  • Q 또는 q: Init에 / etc / inittab 파일을 다시 검사하도록 지시하십시오.
  • S 또는 s: Init에 단일 사용자 모드로 전환하도록 지시하십시오.
  • U 또는 u: init에게 스스로를 다시 실행하도록 지시합니다 (상태 유지). / etc / inittab 파일을 다시 검사 할 필요가 없습니다. 런레벨은 S, s, 1, 2, 3, 4 또는 5 여야합니다. 그렇지 않으면 요청이 자동으로 무시됩니다.

Telinit은 초기화 프로세스에게 SIGTERM 및 SIGKILL 신호를 보내는 데 걸리는 시간을 알려줄 수도 있습니다. 기본값은 5 초이지만이 값은 -t 초 선택권.

Telinit은 적절한 권한을 가진 사용자 만 호출 할 수 있습니다.

Init 바이너리는 프로세스 ID를보고 Init 또는 Telinit인지 확인합니다. 실제 Init의 프로세스 ID는 항상 1입니다.이 경우 Telinit을 호출하는 대신 Init를 바로 가기로 사용할 수 있습니다.