Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

정리하는 공간

리눅스) 리눅스 시스템의 부팅(2. init, systemd, systemctl, journalctl 본문

리눅스 기초

리눅스) 리눅스 시스템의 부팅(2. init, systemd, systemctl, journalctl

개구리집 2022. 5. 12. 10:20
반응형
init 프로세스와 런레벨

 

런레벨

initd은 시스템 단계를 7개의 모드로 나누어 실행하는 파일이 있는데, 이것이 런 레벨이다.

 

 

 

0

 

시스템 종료, /etc/rc0.d

 

 

 

1, S

 

단일 사용자 모드, /etc/rc1.d

 

문제가 생겼을 때 사용하는 안전모드와 같은 개념으로, 운영체제에 1명만 로그인 가능

 

네트워크가 안 된다. (응급복구모드)

 

 

 

2

 

다중사용자 모드(NFS 실행하지 않음), /etc/rc2.d

 

2명 이상이 필요할 때 전환한다. (NFS-네트워크 파일 서버)

 

네트워크가 안 된다.

 

 

 

3

 

다중 사용자모드(NFS 포함),/etc/rc3.d

 

2번 내용과 같고, 다만 네트워크가 된다.

 

 

 

4

 

사용하지 않음(예비번호), /etc/rc4.d

 

 

 

5

 

x11 상태로 부팅, /etc/rc5.d

GUI 현재 사용하고 있는 버전이다.

 

 

 

6

재시작, /etc/rc6.d

 

 

Tip : init 런레벨   명령어로 위의 7개 모드로 빠르게 전환 가능하다.

 

 

systemd 기본개념
  • 소켓 기반으로 동작해 xinet과 호환성 유지
  • 장점 : 모든 프로세스가 메모리 할당을 받지 않아 메모리 효율이 좋다
  • 단점 : 프로세스 요청을 자주하기 때문에 응답속도가 느려진다.(메모리에 올리고, 내리고 반복하기 때문)
  • TCP트래픽의 소켓 정보를 확인해서 출발지나 목적지 등의 정보값을 확인해 특정 호스트를 차단할 수 있다. 이런 소켓 기반의 동작이라고 하는데, xinetd가 이런 일을 한다.
  • 쉘과 독립적으로 부팅이 가능하다.
  • 마운트 제어가 가능하다. 응급복구 모드로 진입했을 때, 마운트 제어와 fsck 정보도 체킹 가능
  • kdump를 활용할지 말지를 체크할 수 있다. (시스템 상태의 백업, 복구)
  • SElinux와 통합 가능
  • 서비스에 시그널 전달 가능
  • shutdown 전 사용자 세션의 안전한 종료가 가능(작업 중 관리자가 셧 다운을 시켜도 작업중 파일이 특정위치에 저장된다.)

 

system 유닛

 

systemd는 전체 시스템을 시작하고 관리할 때 Unit(유닛)이라는 구성요소를 사용한다.

 

서비스이름.유닛의종류

 

atd.service 의 현태로 관리한다. (유닛 종류는 생략 가능)

 

 

 

service

가장 명백한 유닛으로 데몬을 시작, 종료, 재시작, 로딩한다.

 

 

 

target

유닛들을 그루핑한다. (런레벨 변경시 사용)

 

 

systemd 명령어, systemctl

systemctl

유닛을 관리한다.

 

systemctl 옵션 명령 유닛이름

 

[옵션]

 

systemctl -a

상태와 관계없이 유닛 전체를 출력

 

 

systemctl -t 유닛

지정한 종류의 유닛만 출력

 

 

 

[명령]

 

start

유닛 시작(메모리에 유닛을 올린다)

 

 

stop

해당 유닛 정지

 

 

reload

가동 중인 유닛의 설정 파일을 다시 읽어온다. (동기화)

 

 

restart

가동중인 상태에서 환경정보를 동기화하면 오류가 생길 때가 있다.

그래서 restart를 많이 사용한다

 

 

status

유닛 상태 출력

 

 

-enable

부팅시 유닛 활성화

재부팅시 systemd에 의해 가동되어져야 할 프로세스들이 start 명령으로 메모리에 올리오지 않을 때 사용

 

 

-disable

enable 해제

 

 

is-active

유닛이 활성화 되어있는지 확인

 

 

is-enabled

유닛이 시작되었는지 확인

 

 

isolate

지정한 유닛 및 이와 관련된 유닛만 시작하고 나머지는 정지한다.

 

 

kill

 

 

 

 

(start, stop, restart, status, enable, disable 중요)

 

 

Tip

서버 관리시

1. 패키지 관리, 다운 및 컴파일

2. 다운 받은 패키지 활성화가 되어 있는지, 메모리에 올려져 있는지 확인

3. 방화벽 설정

 

systemctl status 명령어로 2번 항목을 잘 해줘야 한다.

 

 

 

journalctl

 

systemd 데몬이 수집한 로그정보에 대한 질의를 하기 위해 사용하는 명령어

 

 

journalctl

sysemd, journal 전체 로그정보를 확인할 수 있다.

특정 프로세스가 동작이 안 될 때 왜인지 '필터링'해서 확인할 수 있다.

 

 

journalctl-b

부팅 이후 최근 로그정보 확인

 

 

journalctl - -since “2021-01-20 09:00:00”

저 시점을 기준으로 이후에 동작했던 프로세스 정보를 필터링해서 확인할 수 있다.

 

 

journalctl - -since “2021-01-20 09:00:00” –until “2021-01-20 10:00:00”

9시부터 10시까지 동작했던 프로세스 정보 필터링 후 확인

 

 

journalctl –u sshd.service

sshd.service에 대한 기록 정보를 보여준다.

(-u:특정 디렉터리지정)

 

런레벨 변경

 

systemd 활용

systemctl isolate multi-user.target

 

systemctl isolate runlevel3.target   

 

이런 방식으로 변경한다. 

 

 

init 활용

 

init 런레벨

 

너무나 간편하다

 

init 명령어의 위치는 /sbin 에 있다.

 

bin 디렉터리는 베시 쉘 안에 설치된 명령어과 일반 명령어들이 있는 곳이다.

sbin 은 시스템과 연관성 있는 실행파일들과 명령어들이 있는 곳이다.

 

 

 

telinit 활용

init과 같다..

 

 

 

여기까지 명령어들은 런레벨을 적용해도 재부팅하면 기존에 지정된 런레벨로 돌아온다. 즉, 수정사항이 일시적

 

 

기본 런레벨 지정

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default/target

 

이런 방법이 있다.... 밑줄은 위에 사진에서 원하는거 넣어주면된다..

 

그냥 init를 쓸거다.

 

 

리눅스 종료 방법

 

shutdown

 

shutdown -h now

즉시 종료

 

shutdown -h +10 

10분 후에 꺼라~

 

shutdown -h +10 “System is going down”

메시지를 서버 사용자들에게 전함

 

shutdown -r 

재부팅

 

 

halt

 

poweroff

 

reboot

 

init 0(6)

 

 

Tip

운영 체제는 종료할 때 처리해야 할 것들이 있는데 이를 무시하고 종료하면 재부팅시 오류 생길수도 있다.

LIST
Comments