00 개요
01 리눅스 시스템의 부팅
02 systemd 서비스
03 리눅스 시스템의 종료
04 데몬 프로세스
05 부트 로더
연습문제


/etc/default/grub 파일을 수정해야 함GRUB_TIMEOUT_STYLE=hidden 앞에 "#" 을 추가, GRUB_TIMEOUT=0을 10 으로 수정




리눅스의 시스템과 서비스 관리자
유닉스 init 프로세스가 하던 작업을 대신 수행
다양한 서비스 데몬을 시작 하고, 프로세스들의 상태를 유지 하며, 시스템의 상태를 관리
- 어떤 프로세스 구조에서 어떤 부모 프로세스가 죽어서 고아 프로세스가 되는 경우 그 고아 프로세스들의 부모는 1번 systemd 프로세스가 된다
- 어떤 프로세스가 종료되는데 만약 고아 프로세스가 종료된다면 그 부모가 systemd 가 되어서 해당 프로세스의 exit code 는 systemd 에게 넘어가기 떄문에 이런식으로 상태 관리


- 일반적으로 리눅스를 관리할때 가장 많이 사용하는 것은 serivce 유닛(데몬), target(런레벨 관리)이다.
- atd 라는 데몬, crond, httpd 라는 데몬 ~ 한다.
systemctl : systemd 서비스를 제어하는 기능systemctl # 동작중인 유닛 출력하기
systemctl -a # 전체 유닛 출력하기
systemctl -t service # 특정 유닛 출력하기 : service 유닛 출력
sudo systemctl start cron # 유닛 서비스 시작하기 (start -> cron 서비스 시작)
systemctl status cron # 유닛의 상태 확인하기 (cron 서비스 상태 확인하기)
systemctl stop cron # 유닛 서비스 정지하기 (cron 서비스 중지)

# 현재 target 과 런레벨 확인하기
systemctl get-default # 현재 어떤 타겟 유닛, 런레벨로 동작하는지 알 수 있다.
runlevel # > N 5 : 현재 런레벨 5로 부팅
# 기본 target 런레벨 지정하기
#-> 런레벨이 바뀌고 그 런레벨로 부팅을 하게 된다.
sudo systemctl set-default multi-user.target # target 을 multi-user 로 변경
ls -l /etc/systemd/system/default.target # 런레벨 5->3 으로 변경 후 부팅
# 기본 target 을 다시 graphical.target 으로 변경
sudo systemctl set-default graphical.target
# target 변경하기 (telinit, init 과 같음)
systemctl isolate multi-user # multi-user.target(런레벨 3)으로 변경
systemctl isolate runlevel3
systemctl isolate graphical # graphical.target(런레벨 5)으로 변경
systemctl isolate runlevel5
# 런레벨 변경하기 : telinit, init
telinit 3
telinit 5
init 3
init 5
# 단일 사용자 모드로 전환하기 : rescure.target(런레벨 1)
# -> 시스템에 문제가 있을 경우 시스템을 rescue.target 유닛(런레벨 1, 런레벨 S)으로 변경하여 점검
systemctl isolate rescue
systemctl isolate runlevel1
init 1
telinit S
# 단일 사용자 모드에서 다중 사용자 모드로 전환하려면 reboot 명령이나 systemctl default 명령 사용
sudo shutdown -h now # 시스템 즉시 종료하기
sudo shutdown -h +2 "System is going down in 2 min" # 셧다운한다는 메세지를 보내고 종료하기
# 다른 로그인한 사람들에게 메세지가 감
sudo shutdown -r +3 # 시스템 재시작하기
sudo shutdown -c # 이전에 내렸던 shutdown 명령 취소하기
sudo shutdown -k 2 # 실제 시스템 종료하는것이 아니라 메세지만 보내기
sudo init 0 # 런레벨을 0으로 바꾸면 시스템 종료
sudo init 6 # 시스템 재시작은 런레벨 6
sudo systemctl isolate poweroff.target # systemd 로 종료하기
sudo systemctl isolate runlevel6.target # systemd 로 재시작
중괄호는 {} : 스레드를 의미 -> {ModemManager}
grup-mkconfig, update-grub 명령을 통해서 가능


# passwd rootreboot -fmount -o remount, rw /reboot -f