시스템 시작 프로세스 및 서비스 관리

centos6
    bios POST --mbr 부트 시스템 --grub 메뉴 --로드 커널 --init 프로세스 초기화
    
centos7
    bios POST --mbr 부트 시스템 --grub2 메뉴 --로드 커널 --systemd 프로세스 초기화
    
1. 시스템 시작

1. BIOS(Basic Input Output System) 전원 공급 자체 테스트, 하드웨어 초기화, 부팅 운영 체제

2. 첫 번째 부팅 장치에서 MBR(Master Boot Record)의 부트로더를 읽고 실행
(grub 프로그램: Grand unified bootloader) 

3. 부트로더 설정에 따라 커널을 로드하면 커널이 하드웨어를 감지하고 드라이버를 로드하기 시작합니다.

부트 로더의 주요 기능은 다음과 같습니다.
    메뉴 제공: 사용자가
    코어 파일을 로드하기 위해 다른 부팅 항목을 선택할 수 있습니다. 부팅 가능한 프로그램 영역을 직접 지정하여 운영 체제를 시작합니다.
    다른 로더로 전송: 부팅 관리 기능을 다른 로더로 전송합니다.

Linux에서 커널의 저장 위치는 /boot 파티션입니다.로드할 두 가지 주요 파일이 있습니다:
    vmlinuz-3.10.0-514.el7.x86_64 커널 파일
    initramfs-3.10.0-514.el7.x86_64.img 가상 파일 시스템

다음을 사용할 수 있습니다. lsinitrd 명령을 사용하여 가상 파일 시스템을 볼 수 있습니다.
[root@localhost 부팅]# lsinitrd initramfs-3.10.0-957.el7.x86_64.img

sysvinit 시작 프로그램(linux6 버전)인 경우
4. 커널이 init 프로세스를 시작합니다
. 5. 시스템 초기화
6. Init는 /etc/inittab 파일을 찾아 시스템의 작업 수준을 결정합니다(X)
7. 해당 작업 수준 이벤트를 트리거하고 /etc/rcX.d에서 스크립트를 실행합니다. 8. /etc/rc.local
파일을 실행하여 로그인 인터페이스로 이동합니다
. 9. 사용자 이름과 암호를 입력하여 시스템에 들어갑니다.    

시스템 시작 프로그램(Linux7 버전)인 경우
GRUB2는 GRUB 세대에 비해 개선되어 더욱 강력하고 휴대 가능하며 강력합니다.
BIOS, uEFI 및 OpenFirmware를 지원하고 GPT 및 MBR 파티션 테이블을 지원합니다.
Apple의 HFS 파일 시스템 및 Windows의 NTFS 파일 시스템과 같은 비 Linux 시스템 지원
systemd는 Linux 시스템의 최신 초기화 시스템(init)입니다.주요 설계 목표는
sysvinit의 고유한 단점을 극복하고 시스템의 시작 속도를 향상시키는 것입니다. systemd와
우분투의 신생 기업은 경쟁자이지만 오늘날 우분투도

4. 하드웨어 드라이버가 성공적으로 로드된 후 커널은 능동적으로 systemd 프로그램을 호출하고
default.target 프로세스   로 부팅
합니다. 5. systemd는 sysinit.target을 실행하여 시스템을 초기화하고 basic.target을 실행하여 운영 체제를 준비합니다. 6. systemd는
multi-user.target에서 로컬 및 서버 서비스를 시작합니다.
arget
및 로그인 서비스
9, systemd는 그래픽에서 필요한 서비스를 실행합니다.

------------------------------------------

초기화와 Systemd의 차이점

초기화

1. 시작 시간이 길고 init는 직렬 시작이며 이전 프로세스가 시작된 후에야 다음 프로세스가 시작됩니다.

2. 스타트업 스크립트가 복잡하다 Init 프로세스는 스타트업 스크립트만 실행한다 다른 건 몰라도 스크립트가 스스로 여러 상황을 처리해야 하기 때문에
스크립트가 매우 길어지는 경우가 많다

3. /sbin/init에 있는 Linux 커널에 의해 로드되고 실행되며 시스템의 첫 번째 프로세스이며 PID는 항상 1입니다.


서비스를 지원하는 프로그램의 경우 설치 중에 /etc/init.d 디렉토리에 구성 파일이 자동으로 추가됩니다 . 예를 들어 서비스 제어 프로그램을 사용할 때 httpd를 시작하는 서비스를 실행합니다
. 그런 다음 서비스는
/etc/init.d/httpd 구성 파일에서 가리키는 /usr/sbin/httpd 실행 파일을 엽니다.


체계적인

1. 주문형 서비스를 시작하여 시스템 리소스 소비를 줄입니다.

2. 가능한 한 프로세스를 병렬로 시작하여 시스템 시작 대기 시간을 줄입니다.

3. /usr/lib/systemd/system에 있는 Linx 커널에 의해 로드되고 실행되며 시스템의 첫 번째 프로세스이며 PID는
항상 1입니다.


systemd를 지원하는 프로그램의 경우 구성 파일이 설치 중에 /usr/lib/systemd/system 디렉토리에 자동으로 추가됩니다 . 예를 들어 systemctl을 사용하여
프로그램을 제어할 때 httpd 서비스를 실행합니다. systemctl start httpd.service.
그런 다음 systemctl은 httpd.service 구성에서 가리키는
/usr/sbin/httpd 실행 파일을 엽니다.

프로그램을 시작하려면 systemctl enable
httpd 명령을 실행할 수 있습니다. 이는
/usr/lib/systemd/system 디렉토리의 httpd.service 파일을 가리키는 /etc/systemd/system 디렉토리에 소프트 링크를 추가하는 것과 같습니다. 이는
부팅 시 Systemd가 /etc/systemd/system 디렉토리의 구성 파일만 실행하기 때문입니다.


구성 파일의 차이점

Init 프로세스의 구성 파일
/etc/init.d/ 서비스 시작 스크립트 구성 파일의 저장소 디렉터리
/etc/inittab 기본 실행 수준 구성 파일
/etc/init/rcS.conf 시스템 초기화 구성 파일 /etc/init/rc.conf
각 실행 수준 초기화에 대한 구성 파일 -
/etc/init/rcS-sulogin.conf 단일 사용자 모드 시작 /sbin/sushell 환경 구성 파일 /etc/init/control-alt-de lete.conf
터미널에서 ctrl+alt+del 핫키 작업
/etc/sysconfig/init tty 터미널 설정 파일
/etc/init/start-ttys.conf 열려 있는 tty 터미널 수를 구성하고 장치 파일 /etc/init/tty.conf 또는
etc/init/serial.conf가 tty 터미널 열기를 제어합니다.

Systemd 프로세스용 구성 파일

/etc/systemd/system/default.target은 /etc/inittab 파일 구성을 대체합니다. 일반적으로 /lib/systemd/system/graphical.target에 대한 심볼릭 링크입니다.
/run/systemd/system/ 시스템 실행 중에 생성된 서비스 스크립트가 있는 디렉토리 /
etc/systemd/system/은 다양한 수준의 자체 시작 서비스를 저장합니다. /  usr/lib/systemd/system/ 및 /lib/systemd/system/ 그리고 두 파일은 완전히 동일합니다. 이전 /etc/init.d/run 수준 및 설명
과 유사한 각 서비스에 대한 시작 스크립트 설정
 
 

Runlevel Rehl 6/7 명령 Rhel7 명령
0 종료 상태 init 0 poweroff
1 시스템 복구 모드 init 1 systemctl isolate rescue.target
2 문자 인터페이스 다중 사용자 모드(네트워크 액세스 없음) init 2 systemctl isolate mutil-user.target 3 문자 인터페이스
전체 다중 사용자 모드 init 3 systemctl isolate mutil-user.target 4 init를 사용하는
할당되지 않은
다중 사용자 모드 4 systemctl isolate mutil-user.target 5 그래픽 인터페이스 it 5 (startx) systemctl isolate graphic.target 6 호스트 재시작 init 6 reboot 참고: 그래픽 잘라내기 문자 ctrl+alt+F2(F2-F6) 문자를 다시
그래픽
alt + F1으로 전환

실행 레벨 확인:
runlevel: 전환 전 실행 레벨 및 현재 실행 레벨 표시 
systemctl get-default: 현재 실행 레벨 표시   

영구적으로 부팅 모드 설정:
vim /etc/inittab #centos6
systemctl set-default multi-user.target/runlevel3 텍스트 모드로 기본 부팅
systemctl set-default graphic.target/runlevel5 그래픽 모드로 기본 부팅

---------------------------------------

2. 체계적인 서비스 관리

Systemd는 Linux 시스템의 최신 초기화 시스템(init)으로, 주요 설계 목표는
sysvinit의 고유한 단점을 극복하고 시스템 시작 속도를 향상시키는 것입니다. systemd와 우분투의
신생 기업이 경쟁하고 있으며, 우분투는 버전 15.04부터 systemd를
표준 시스템 초기화 시스템으로 채택했습니다.

시스템 초기화를 위해 해야 할 일이 많이 있습니다. SSHD 서비스 시작과 같은 백그라운드 서비스를 시작해야 하고
파일 시스템 마운트와 같은 구성 작업을 수행해야 합니다.
이 프로세스의 각 단계는 systemd에 의해 구성 단위, 즉 단위로 추상화됩니다 . 서비스는 구성 단위, 마운트 지점
은 구성 단위, 스왑 파티션 구성은 구성 단위,

서비스 단위: 시스템 서비스, 가장 일반적인 유형
Target 단위: 여러 단위로 구성된 그룹, 실행 환경 유형
Device Unit: 하드웨어 장치
Mount Unit: 파일 시스템 마운트 지점
Automount Unit: 자동 마운트 지점
Path Unit : Scope Unit:
Systemd Slice에 의해 시작되지 않은 외부 프로세스 Unit: 프로세스
그룹
Snapshot Unit: Systemd 스냅샷, 스냅샷으로 다시 전환 가능
Socket Unit: 프로세스 간 통신 소켓 서비스
Swap Unit: 스왑 파일
Timer Unit: 순환 실행 서비스

Rhel6은 Service 및 chkconfig를 사용하여 SystemV 아키텍처의 도구인 서비스를 관리합니다.

Rhel7은 이전 서비스와 chkconfig의 기능을 하나로 결합한 systemctl을 사용하여 서비스를 관리합니다.
영구적으로 또는 현재 세션에서만 서비스를 활성화/비활성화하는 데 사용할 수 있습니다. systemctl은 systemd 프레임워크의 도구입니다.

작업 Rhel6 이전 명령 Rhel7 새 명령
서비스 시작 서비스 네트워크 시작 systemctl 시작 네트워크
서비스 중지
서비스 네트워크 중지 systemctl 중지 네트워크 서비스 다시 시작 서비스 네트워크 다시 시작 systemctl 다시 시작 네트워크
확인 서비스 상태 서비스 네트워크 상태 systemctl 상태 네트워크 서비스 삭제 chkconfig --del httpd 서비스가 자동으로 시작되도록 설정 chkconfig --level 5 httpd on systemctl enable httpd
부팅  후 서비스가 자동으로 시작되지 않도록 chkconfig --level 5 httpd off systemctl disable httpd


활성화된 모든 서비스 표시 chkconfig --list systemctl list-unit-files | grep enabled
사용자 지정 서비스 추가 chkconfig --add test systemctl load test
부팅 후 서비스가 자동으로 시작되는지 확인 chkconfig --list | grep httpd systemctl is-enabled httpd
systemctl 시작에 실패한 서비스 보기 --failed

systemd의 몇 가지 일반적인 명령:
사용 가능한 모든 장치 나열: systemctl list-unit-files
실행 중인 모든 장치 나열: systemctl list-unit-files | grep enabled 사용 
가능한 모든 서비스 나열: systemctl list-unit-files --type=service 실행 중인 모든 서비스 나열: systemctl list-unit-files --type=
service | grep enabled 
Shield httpd 서비스: systemctl mask httpd
Unblock httpd: systemctl mask httpd ctl unmask httpd


RHEL7의 서비스 systemctl 스크립트는 시스템
(system)과 사용자(user)로 구분되는 /usr/lib/systemd/ 디렉토리에 저장되며, 예를 들어 부팅 후 로그인 없이 실행해야 하는 프로그램은
시스템 서비스, 즉 /usr/lib/systemd/system 디렉토리에 저장됩니다. 각 서비스는
.service로 끝나며 일반적으로 [Unit], [Service], [Install]의 세 부분으로 나뉩니다
.

vim /usr/lib/systemd/system/sshd.service 
[Unit] 
Description=OpenSSH 서버 데몬 
Documentation=man:sshd(8) man:sshd_config(5) 
After=network.target sshd-keygen.service 
Wants=sshd-keygen.service 

[Service]
Type=notify 
EnvironmentFile=/etc/sysconfig/sshd 
ExecStart=/usr/sbin/sshd -D $OPTIONS 
ExecReload=/bin/kill -HUP $MAINPID 
KillMode=process 
Restart=on-failure 
RestartSec=42s 

[설치] 
WantedBy=multi-user.target

[Unit]
[Unit] 블록은 일반적으로 구성 파일의 첫 번째 블록으로, Unit의 메타데이터를 정의하고
다른 Unit과의 관계를 구성하는 데 사용됩니다. 주요 분야는 다음과 같습니다.
설명: 짧은 설명
문서: 문서 주소
Requires: 현재 Unit이 의존하는 다른 Units 실행 중이 아니면 현재 Unit이 시작되지 않음 Wants: 현재 Unit과 협력하는 다른 Units 실행 중이 아니면 현재 Unit이 시작되지 않음 BindsTo: Requires와
유사 하게 지정된 Unit이 종료되면 현재 Unit 실행이 중지됨 Start Conflicts before the current Unit: 여기에 지정된 Unit은 현재 Unit Condition과 동시에 실행될 수 없습니다 ...: 현재 유닛이 충족해야 하는 조건, 그렇지 않으면 실행되지 않음 Assert ...: 현재 유닛이 충족해야 하는 조건, 그렇지 않으면 시작 실패를 보고합니다 .











[서비스]

[서비스] 부분은 서비스의 핵심이며 서비스의 일부 특정 작동 매개변수를 설정하는 것으로
서비스 유형의 단위에만 이 블록이 있습니다. 주요 분야는 다음과 같습니다.
유형: 시작 시 프로세스 동작을 정의합니다. 다음과 같은 값이 있습니다.

















always (항상 다시 시작), on-success, on-failure, on-abnormal, onabort, on-watchdog
TimeoutSec: Systemd가 현재 서비스를 중지하기 전에 대기할 시간(초)을 정의합니다.
Environment: 환경 변수를 지정합니다.

[설치] [설치]는 일반적으로 시작 방법과 부팅 후 시작
여부를 정의하는 데 사용되는 구성 파일의 마지막 블록입니다 .
주요 분야는 다음과 같습니다.
WantedBy: 그 값은 하나 이상의 Targets 현재 Unit이 활성화(enable)되면 심볼릭 링크는 /etc/systemd/system 디렉토리 아래 Target 이름 + .wants 접미사로
구성된 하위 디렉토리에 위치함 RequiredBy: 값은 하나 이상의 Targets 현재 Unit이 활성화되면 심볼릭 링크는 /etc/systemd/system 디렉토리 아래 Target 이름 + .required 접미사로 구성된 하위 디렉토리에 위치 Alias ​​: 기동 시 사용할 수 있는 현재 유닛 별칭 또한 현재 유닛이 활성화(활성화)되면 동시에 활성화될 다른 유닛 참고: 서비스에 설치 섹션이 없으면 일반적으로 다른 서비스에서 자동으로 호출해야 함 의미 합니다 .







대상
간단히 말해서 대상은 많은 관련 단위를 포함하는 단위 그룹입니다. 대상 을 시작할 때
Systemd는 그 안에 있는 모든 단위를 시작합니다. 이런 의미에서
Target의 개념은 "상태 지점"과 유사하며 Target을 시작하는 것은 특정 상태로 시작하는 것과 같습니다
.
기존의 초기 시작 모드에는 Target의 역할과 매우 유사한 RunLevel이라는 개념이 있습니다.
차이점은 RunLevel은 상호 배타적이라는 것입니다.여러 RunLevel을 동시에 시작하는 것은 불가능하지만
동시에 여러 Target을 시작할 수 있습니다.

//현재 시스템의 모든 대상 보기 
$ systemctl list-unit-files --type=target
//대상에 포함된 모든 단위 보기 
$ systemctl list-dependencies multi-user.target
//시작 시 기본 대상 보기 
$ systemctl get-default
//시작 시 기본 대상 설정 
$ systemctl set-default multi-user.target
//대상을 전환할 때 기본적으로 닫히지 않음 이전 대상에 의해 시작된 프로세스, $ systemctl isolate 명령은
이 동작을 변경합니다.
//속하지 않은 이전 대상의 모든 프로세스를 닫습니다 . 후자의 대상에
$ systemctl isolate multi-user.target

Supongo que te gusta

Origin blog.csdn.net/weixin_63294004/article/details/130430569
Recomendado
Clasificación