교재 : 리눅스 시스템 원리와 실제 (창병모, 생능출판)
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 패키지파일 디렉터리 | 패키지 파일의 내용을 지정한 디렉터리에 추출 |
'전공과목 정리 > 리눅스시스템 + 시스템프로그래밍' 카테고리의 다른 글
[리눅스시스템🐧] 13장 프로세스 원리 (2) | 2024.01.07 |
---|---|
[리눅스시스템🐧] 12장 파일 시스템과 파일 입출력 (2) | 2024.01.07 |
[리눅스시스템🐧] 11장 프로그래밍 환경 (2) | 2024.01.06 |
[리눅스시스템🐧] 10장 Bash 쉘 스크립트 (2) | 2024.01.06 |
[리눅스시스템🐧] 9장 유틸리티 (4) | 2024.01.05 |