전공과목 정리/리눅스시스템 + 시스템프로그래밍

[리눅스시스템🐧] 14장 시스템 관리

최연재 2024. 1. 7. 03:59

교재 : 리눅스 시스템 원리와 실제 (창병모, 생능출판)

 

14.1 시스템 관리자

1) 시스템 관리자

- 역할

  • 사용자 계정 추가 및 삭제
  • 소프트웨어 설치, 업그레이드, 삭제
  • 시스템 서비스 관리
  • 하드웨어 추가 설치
  • 시스템 보안
  • 데이터 백업

- 슈퍼유저(supersuer)

: 시스템을 관리할 수 있는 사용자로, 슈퍼유저가 사용하는 계정이 root이다.

 

- 슈퍼유저 로그인

  • 직접 root 계정으로 로그인
  • 다른 계정으로 로그인 후 su(switch user)
$ su
암호:
#
  • sudo 명령어 사용
$ sudo 명령어

 

2) sudo(superuser do)

- sudo

  • 일반 사용자가 sudo 명령어를 이용하여 원하는 명령어를 관리자 권한으로 실행 가능
  • 일반 사용자 계정을 생성할 때 계정 종류를 관리자로 선택해야 함.

ex) 관리자 권한으로 apt를 이용하여 gcc 설치

$ sudo apt install gcc

ex) root 계정의 암호를 설정한 후 root 계정 이용

$ sudo passwd root

 

14.2 사용자 계정 관리

- 사용자 계정 추가 명령어

  • 사용자 계정 추가
    • 새로운 사용자 계정을 생성한다.
# useradd [옵션] 사용자명
  • 패스워드 설정 
    • 관련 파일 : /etc/passwd, /etc/shadow
# passwd 사용자명
  • 사용자 계정 삭제
    • 사용자 계정을 삭제한다.
    • -r 옵션을 사용하면 사용자의 홈 디렉터리도 삭제한다.
# userdel [-r] 사용자명

 

14.3 시스템 부팅과 종료

1) 시스템 부팅

: 시스템 부팅은 fork/exec 시스템 호출을 통해 이루어진다.

2) 런레벨

- init 프로세스 (/etc/init)

  • /etc/inittab 파일에 따라 시스템을 시작하고 초기화한다.
  • 런레벨에 따라 다음과 같이 시스템을 초기화한다.
런레벌 부팅 환경
0 시스템을 정지한다.
1 단일 사용자 모드로 부팅하며 네트워킹 기능을 사용하지 않는다. root로만 로그인이 가능하다.
2 다중 사용자 모드로 부팅하며 네트워크 기능을 사용하지 않는다.
3 정상 작동 모드로 다중 사용자 모드, 텍스트 인터페이스로 부팅한다.
4 사용되지 않으며 특별한 시스템을 구현하기 위해 예약된 레벨
5 정상 작동 모드로 부팅하며 x-윈도우 인터페이스로 부팅한다.
6 시스템을 재부팅한다.

- runlevel 명령 : 시스템의 현재 부팅 레벨을 알려준다.

$ runlevel

- 런레벨 변경 : 시스템 실행 후에도 런레벨 변경 가능

$ init 6

 

3) 프로세스 관리 도구 top

$ top [-d 숫자]

- 프로세스별 CPU와 메모리 점유율 등을 출력한다.

- -d 옵션을 사용하면 숫자만큼의 시간마다 다시 출력한다.

 

4) 시스템 종료

# shutdown 시간 [경고메시지]

- 지정된 시간에 프로그램을 종료한다. ex) 지금 종료 : now

- 모든 사용자에게 보낼 경고메시지 명시 가능

 

14.4 시스템 부팅과 데몬

1) systemd 

- init를 대체한 시스템 데몬 프로세스

- 서비스 데몬 프로세스들을 관리함.

- pstree : systemd가 생성한 자식 데몬 프로세스들을 트리 형태로 보여준다.

$ pstree

- systemd에 의한 시스템 부팅은 런레벨에 따라 다르게 진행

  • 런레벨은 서비스의 실행을 단계별로 다르게 적용하는 것
  • 높은 레벨일수록, 시스템 부팅 시 불러오는 서비스 데몬 수가 많음.
런레벨 target 파일 (심볼릭 링크) target 원본파일
0 runlevel0.target poweroff.target
1 runlevel1.target rescue.target
2 runlevel2.target multi-user.target
3 runlevel3.target
4 runlevel4.target
5 runlevel5.target graphical.target
6 runlevel6.target reboot.target

 

2) init과 systemd

- init과 systemd

  • 최신 배포판은 systemd가 init을 대치하여 부팅 서비스
  • init은 없어지지 않았지만 제 기능을 하지 못함.

- systemd의 기능

  • 서비스, 시스템 로그, 사용자, 시간, 원격, cgroup 관리 등
  • 시스템의 전반적인 관리를 전부 systemd가 담당

- systemd 관련 명령어와 설정 파일

  • systemd 관련 명령어들 : /lib/systemd 디렉터리
  • systemd 설정파일들 : /etc/systemd 디렉터리
  • service, target 설정 파일 : /lib/systemd/system 디렉터리 

 

3) 데몬

- 데몬 (daemon)

  • 후면에서 동작하면서 특정한 서비스를 제공하는 프로세스
  • 대부분의 데몬들은 시스템이 부팅되면서 시작
  • 서비스요청이 없을때는 후면 프로세스로서 대기 상태에 있다가 서비스 요청이 들어오면 이를 서비스하게 됨.

- 리눅스 시스템에서 데몬에 의해 제공되는 서비스

  • 명령 예약 실행(at)
  • 웹(http)
  • 원격 접속(ssh)
  • 파일 전송(ftp)
  • ...

- 데몬의 동작 방식

(1) 독자형(standalone) 데몬

  • 스스로 동작하는 데몬으로 후면에서 항상 동작 
  • 서비스 요청이 오면 즉시 서비스
  • 명령 예약 실행을 위한 atd, cron 등

(2) 슈퍼데몬(superdaemon)

  • 평소에는 슈퍼데몬만 동작하고 서비스 요청이 오면 슈퍼데몬이 해당 서비스 데몬을 동작시킨다.
  • 독자형 데몬보다 응답이 좀 더 걸릴 수 있지만 자원을 효율적으로 사용할 수 있다.

(3) 슈퍼데몬 inetd

  • inetd(또는 xinetd) 데몬으로 네트워크 서비스를 담당.
  • ftp, ssh, telnet 등의 네트워크 서비스 요청이 오면 해당 데몬을 동작시킨다.

 

- 주요 데몬

데몬 설명
atd 특정 시간에 실행하도록 예약한 명령 실행
cron 주기적으로 실행하도록 예약한 명령 실행
httpd 웹 서비스를 제공한다.
sshd 원격 접속 서비스를 제공한다.
vsftpd 파일 송수신 서비스를제공한다.
nfsd 네트워크 파일 시스템 서비스를 제공한다.
named DNS 서비스를 제공한다.
sendmail 이메일 서비스를 제공한다.

 

4) 커널 프로세스

- 커널이 담당하는 메모리 관리, 스케줄링,입출력 등을 수행하는 데몬

- 대괄호로 표시됨

  • 3번 프로세스부터 커널 데몬 프로세스
  • 이들의 부모 프로세스 ID(PPID)는 모두 2번 kthreadd

- 커널 스레드 데몬 : kthreadd

: 모든 커널 데몬의 조상 데몬, 다른 커널 데몬들을 생성하는 역할을 함.

 

5) service

- 서비스 데몬에 대해서 실행, 중지, 재시작 등의 직접 제어

# service 서비스 명령어

- 명령어

명령어 설명
start 서비스 데몬을 실행한다.
stop 서비스 데몬을 중지한다.
restart 서비스 데몬을 재시작한다.
status 서비스 데몬의 상태를 보여준다.

- ex)

# service cron status

 

14.5 systemd 관련 명령어

1) 부팅 관련 systemd 명령어

명령어 설명
systemd-analyze 부팅에 걸린 시간 표시
systemd-analyze blame 부팅 시 서비스별 걸린 시간 표시
systemd-analyze plot 부팅 시 서비스별 걸린 시간을 정렬해서 표시
systemd-analyze critical-chain 부팅 시 시간이 많이 걸리는 서비스들을 트리 형태로 엮어서(chain) 표시
journalctl 부팅을 포함한 전체적인 시스템 로그
journalctl -b 마지막 부팅 이후 시스템 로그
hostnamectl 호스트 이름 표시
hostnamecl set-hostname 이름 호스트 이름 변경

 

2) 서비스 상태 표시 : systemctl 명령어

:systemd의 서비스를 관리하기 위한 명령어로 서비스 상태를 표시할 수 있다.

명령어 서비스 상태 표시 기능
systemctl 전체 서비스 목록
systemctl list-unit-files 서비스 목록 (활성화 여부 표시)
systemctl --failed 부팅 시 실행에 실패한 서비스 목록
systemctl is-enabled 서비스명 특정 서비스 활성화 여부
systemctl is-active 서비스명 특정 서비스 현재 동작 여부
systemctl status -l 서비스명 특정 서비스의 자세한 상태

 

3) 서비스 제어 : systemctl 명령어

: systemd의 서비스를 관리하기 위한 명령어로 서비스를 제어할 수있다.

명령어 서비스 제어 기능
systemctl enable 서비스명 서비스 활성화
systemctl disable 서비스명 서비스 비활성화
systemctl start 서비스명 서비스 시작
systemctl stop 서비스명 서비스 종료
systemctl restart 서비스명 서비스 재시작
systemctl reload 서비스명 서비스 갱신
systemctl kill 서비스명 서비스 관련 프로세스도 모두 죽임.
systemctl daemon-reload 서비스 설정 정보를 데몬에 반영

 

14.6 소프트웨어 설치

1) 우분투 소프트웨어 센터 

: 간단하게 소프트웨어를 설치하거나 삭제하기 위한 앱스토어

 

2) 자동 소프트웨어 설치 도구 apt

- apt(Advanced Package Tool)

  • 우분투 리눅스에서 사용하는 deb 기반의 시스템
  • 패키지 파일 다운로드부터 설치, 삭제 및 업데이트 자동
apt 명령 기존명령 기능
apt install 패키지+ apt-get install 패키지를 설치한다.
apt remove 패키지+ apt-get remove 패키지를 삭제한다.
apt update apt-get update 패키지 목록을 갱신한다.
apt upgrade apt-get upgrade 패키지를 업그레이드한다.
apt autoremove apt-get  autoremove 불필요한 패키지를 제거한다.
apt search 패키지 apt-cache search 키워드로 패키지를 검색한다.
apt show 패키지 apt-cache show 패키지 정보를 출력한다.
apt list   패키지 목록을 출력한다.

 

3) 데비안 패키지 메니저 dpkg

- 데비안 패키지

  • 리눅스의 표준 패키지 중 하나로 확장자는 .deb
  • 설치할 파일들의 이름, 버전, 설명 등의 정보를 포함하는 패키지 파일

- 장점

  • 바이너리 파일로 구성되어 있어 컴파일이 필요없다.
  • 쉽고 빠른 패키지 설치 및 삭제 가능
  • 기존에 설치한 패키지를 삭제하지 않고 바로 업그레이드 가능
  • 패키지의설치상태를 검증할 수 있다.
  • 질의를 통하여 패키지에 대한 보다 자세한 정보를 확인할 수 있다. 
모드 사용법 설명
패키지 목록 출력 # dpkg -l [패키지명] 설치된 패키지 목록 출력
패키지 설치 # dpkg -i 패키지파일 패키지를 설치하거나 업그레이드
패키지 상세 정보 # dpkg -s 패키지명 패키지의 상세 정보를 출력
패키지 삭제 # dpkg -r 패키지명 패키지를 삭제
설치 파일 목록 # dpkg -L 패키지명 지정한 패키지가 설치된 파일 목록 출력
파일 검색 # dpkg -S 패키지명 지정한 파일이 포함된 패키지 검색
패키지 파일 내용 # dpkg -c 패키지명 패키지 파일의 내용 출력
패키지 파일 추출 # dpkg -x 패키지파일 디렉터리 패키지 파일의 내용을 지정한 디렉터리에 추출