부팅 후 프로세스 시작

부팅 후 프로세스 시작

다음은 Linux에서 프로세스가 시작되는 방법이라는 것을 알고 있습니다.

  • init.d (또는 이와 유사한 것)에서
  • 쉘에서 (사용자에 의해)
  • 실행 중인 네이티브 데몬에서 분기됨

Linux에서 위 범주에 속하지 않는 프로세스를 시작할 수 있습니까? 예를 들어, 사용자가 모르는 사이에 프로세스가 시작될 수 있습니까?

답변1

리눅스에서는 거의모든 공정(서버 및 데몬 포함)다음으로 시작됨포크(2)(때때로 표준 C 라이브러리에서 사용됨클론(2))자주 팔로우하다실행(2)시스템 호출. 이것데몬(3)라이브러리 함수는 이러한 기능(및 기타 몇 가지 기능)을 사용합니다.시스템 호출(에 나열됨시스템 호출(2)....)

오직예외는희귀한커널에 의해 마술처럼 시작된 프로세스. 여기에는 다음이 포함됩니다.

  • 내부에(일반적으로 /sbin/init이는 다음과 같을 수 있습니다.체계요즘에는 커널을 부팅하고 init=/bin/bash커널이 초기화될 때 시작되는 GRUB를 통해 이를 전달할 수 있습니다.

  • 일부커널에 의해 마법처럼 시작되는 프로그램은 거의 없습니다.(일부 외부 이벤트가 발생할 때), 때때로모듈 프로브,핫스왑, 등....

init1980년대에 존재했던 Unix(예: SunOS3). 자동 시작과 유사한 프로세스인 AFAIK는 hotplug최근 Linux에 추가되었습니다(아마도 Linux 3 또는 최소 2.6 이상 참조).우데브)

대부분의 프로그램과 프로세스( login, bash, getty, cron, 포함 atd) mysqld는 & 의 자손이며 기본적으로 예외(예: )를 무시할 init 수 있으며 모든 프로세스가 & 의 자손인 Linux 시스템을 가질 수 있습니다 (Linux 1.0이 어떤 상황인지). x 지난 세기의 커널). 사용forkexecvehotpluginit나무(1)프로세스 트리를 봅니다.

에 관한 위키 페이지를 읽어보세요.리눅스 시작 프로세스&PowerUp에서 Bash 프롬프트까지(약간 구식일 수 있지만 대부분 여전히 정확합니다.)

사용자 ID 설정권한과 관련된 영리한 메커니즘입니다.세스루이드(2),바우처(7),능력(7),네임스페이스(7)).

나는 독서를 추천한다고급 Linux 프로그래밍첫 번째. 그 책 뒤에는 몇 가지 함수나 시스템 호출이 나왔습니다(예:signalfd(2),이노티파이(7),전자 여론조사(7)....).

관련 정보