본문 바로가기

자격증

리눅스 마스터 2급 대비 명령어 실습 #4 (완전 초보용)

영진닷컴의 이기적 리눅스 마스터 2급 교재를 보면서 하는 연습.

 

이번회차는 챕터3의 프로스세 관리부터 시작


  • fork() : 새로운 프로세스를 만들 때 기존 프로세스를 복제하는 방식, 새로운 메모리 할당, 새 프로세스는 부모와 동일한 코드
  • exec() : 호출하는 프로세스가 새로운 프로세스로 변경되는 방식. 새로운 메모리를 할당하지 않음. 새로운 프로세스의 코드를 덮어씌움
  • 데몬 : 부팅시 자동으로 실행되는 백그라운드 프로세스. 메모리에 상주하면서 요청이 오면 즉시 실행되는 서버 프로세스

 

데몬을 실행하는 방법 3가지

  • Standalone 데몬 : 서비스 요청이 들어오기 전에 서비스가 메모리에 상주하는 단독 실행방식, 서버부하 큼 /etc/inetd.d/에 스크립트 위치. http, mysql, nameserver, sendmail
  • inetd 데몬(슈퍼데몬) : 다른 데몬들의 상위에 존재하는 스탠드얼론 데몬. 다른 서비스들을 제어하고 관리. 리눅스커널 2.4 버전부터는 xinetd가 inetd 역할 수행
  • inetd 타입 데몬 : 직접 서비스를 가동하지 못하고 inetd 데몬이 활성화가 되어야만 해당 서비스 제공. 스크립트 위치는 /etcxinetd.d, Telnet, FTP,  rlogin

 

  • 시그널 : 프로세스에게 이벤트 발생을 전달해주는 소프트웨어 인터럽트

https://huistorage.tistory.com/111 에서 발췌

 

시그널 : 번호 : 발생조건 : 기본동작

  • SIGINT : 2 : Ctrl+C : 종료
  • SIGQUIT : 3 : Ctrl+\ : 코어덤프
  • SIGTERM : 15 : Kill 시스템 호출시 : 종료
  • SIGTSTP : 20 : Ctrl+Z : 프로세스 대기(Suspend)로 전환

 


다음은 프로세스 유틸리티

 

  • ps : 현재 실행중인 프로세스 상태, process status, CPU 사용도가 낮은 순서로 출력, a(현재 실행중인 모든 프로세스), e(모든 프로세스 정보), u(사용자 이름과 프로세스 시작시간 출력), x(접속된 터미널뿐만 아니라 사용되고 있는 모든 프로세스들을 출력), l(자세한 정보 출력)

옵션 앞에 dash(-)를 안 붙여도 됨

 

ps와 grep을 사용하여 특정 프로세스의 상태정보를 확인할 수 있음. 각 항목은 다음과 같음.

  • USER
  • PID 
  • %CPU : CPU 사용비율 추정치
  • %MEM : 메모리 사용비율 추정치
  • VSZ : 페이지 단위의 가상메모리 사용량, virtual memory size
  • RSS : 실제 사용된 메모리량, resident set size
  • TTY : 프로세스와 연결된 터미널 번호, teletypewriter
  • STAT : 현재 프로세스 상태, P(수행가능/수행중), R(현재실행상태), S(잠든 상태, 20초 이상), D(I/O 작업이 끝나기를 기다리며 정지된 상태), T(정지된 상태(suspend)), Z(좀비 프로세스)
  • START :  프로세스 시작 시간
  • TIME : 총 CPU 사용 시간
  • COMMAND : 실행 명령 

 

ps -l 을 수행하면 접속터미널에서 사용중인 프로세스들의 자세한 정보가 나옴

  • F : 프로세스 플래그로 8진수 값의 합. (01 주기업장치내에 있음. 02 시스템 프로세스, 04 주기억장치 내에서 잠김, 10 스왑되고 있음, 20 다른 프로세스에 의해 추적되고 있음)
  • S : 프로세스 상태 ( R running, T terminated, S sleeping(인터럽트에 의한 슬립 상태로 특정 이벤트가 끝나기를 기다리는 상태), Z stopped(작업종료 후 부모프로세스로부터 회수되지 않아 메모리에 적재되어 있는 상태), W waiting, I intermediated)
  • UID : 프로세스 소유자의 Username
  • PPID : 부모프로세스의 PID
  • C : 짧은 시간 동안의 CPU 사용률
  • PRI : 실행 우선순위 값, 값이 작을수록 우선순위가 높음
  • NI : NICE 우선순위를 계산할 때 사용되는 nice 값
  • ADDR : 프로세스의 주기억장치 내의 주소
  • SZ : 프로세스 크기로 단위는 블록
  • WCHAN : 프로세스가 대기나 수면상태에서 기다리는 시간

 


  • pstree : 실행 중인 프로세스들을 트리구조로 나타냄

 

현재 VMW 에서 pstree가 동작하지 않음. 찾아보니 패키지를 설치만 하면 된다는데 가상머신이라 설치가 안되고 있음. 이건 나중에 해결하는 걸로.


  • jobs : 작업이 중지된 상태, 백그라운드로 진행중인 상태, 변경되었지만 보고되지 않은 상태 (-l 프로세스 그룹ID를 state 필드 앞에 표시, -n 프로세스 그룹 중 대표 프로세스 ID 표시, -p 프로세스 ID를 한 행씩 표시), +는 현재 작업실행, -는 앞으로 실행될 작업

실행중인 프로세스가 없어 &를 맨 뒤에 넣어 백그라운드로 수행이 되도록 처리

  • bg : bg %작업번호
  • fg : fg 작업번호

 

  • kill : 프로세스 종표, -l 시그널종류나열, -s 시그널번호(또는 이름) 전달할 시그널의 종류 지정, -1 프로세스 재시작(hup, hangup), -9 프로세스 강제로 종료

엔터 치면 로그아웃됨

  • killall : 같은 데몬의 여러 프로세서를 한번에 종료, 프로세스명으로 연관된 프로세스들을 종료
  • nice : 프로세스 사이의 우선순위를 확인하고 우선순위를 변경할 수 있는 명령어, -20~19, 숫자가 작을수록 높은 우선순위, -10은 값이 증가하므로 우선순위가 낮아짐. --10은 값을 감소하여 우선순위 높아짐

 

  • renice : 이미 실행 중인 프로세스의 우선순위를 변경. 소유자와 루트 권한자만 실행 가능, -p 프로세스ID 지정, -u 사용자명 지정, -g 프로세스의 GID 지정, nice는 양수값에 -를 붙이지만 renice는 붙이지 않음

 


모니터링

 

  • top : 리눅스 시스템의 운영상태를 실시간으로 모니터링, 5초단위로 갱신, VIRT(virtual image, 가상메모리총량), RES(Resident Size, 물리적 메모리 사용량), SHR(Shared Mem Size, 공유 메모리 총량))

 

  • 하나의 프로세스를 모니터링하는 방법

661번 프로세스를 1초 단위로 화면에 디스플레이하라는 명령
결과

 

  • top 모드에서 다양한 제어가 가능. ? 를 입력했을때 나오는 화면

? 입력시

 

n10 입력 후 엔터

 


 

  • nohup : 프로세스가 중단되지 않고 백그라운드로 작업을 수행할 수 있게 함. 로그아우/터미널 종료가 되어도 수행. 백그라운드로 수행되도록 맨 마지막에 &

 

  • tail : 파일의 마지막행 기준 출력

 


스케줄링과 cron에 대한 부분, 스케줄링 데몬은 crond이며 관련 파일은 /etc/crontab  임.

일단위/월단위 등 주기별로 구성되어 있음이 보임

 

  • crontab : -l 설정된 내용, -e 새로작성하거나 수정, -r 삭제, -u 일정수정

-e 옵션으로 내용을 작성하면 작업명이 랜덤글자로 설정됨ㅎ79

 

  • 분/시/날/달/요일/사용자명/명령어
  • 0 9 1 1-8/2 * /bin/vipcheck.sh  :  1~8월 사이 격월로 1일에 9시 정각에 수행
  • 0 1 * * 1-5 ihd /usr/bin/dcs.sh  :  매주 월~금 1시 정각에 수행

에디터 일반

 

PICO

  • Aboil Kasar가 개발, 자유 소프트웨어가 아님
  • GNU 프로젝트에서는 pico의 복제 버전 nano 개발

Emacs

  • 리처드 스톨만이 개발, 제임스 고슬링이 LISP(List Processing) 언어를 기반으로 추가
  • C, LIST, HTML 등 각각 해당하는 모드 설정 가능, 비모드형 편집기, 강력한 질의, 치환명령

vi

  • 빌 조이가 개발, 초기 BSD 릴리즈에 포함될 편집기로 만들어짐
  • 리눅스 배포판과 유닉스에 기본적으로 포함, 모드형 편집기

vim

  • 브람 무레나르가 개발, vi 편집기와 호환, 하이라이트 기능으로 빠른 검색
  • 유니코드를 비롯한 다국어 지원, 문법검사 기능
  • 한글이 입력되지 않는 경우 set fileencoding=euc-kr 명령

gedit

  • 그놈 데스크톱 환경으로 개발된 자유 소프트웨어 편집기, 맥OS에서도 사용 가능
  • X-윈도우 시스템에 맞춰 개발, 델넷 접속시나 텍스트 기반 콘솔창에서는 사용 불가

에디터 사용법

 

pico

  • ctrl+o : 파일 저장
  • ctrl+x : 파일 종료
  • ctrl+c : 현재 커서 위치 표시
  • ctrl+a : 커서의 위치를 해당줄의 시작부분으로 이동
  • ctrl+e : 현재 행의 맨끝으로 이동

emacs

  • ctrl+x, ctrl+s : 파일 저장
  • ctrl+x, ctrl+c : 종료
  • ctrl+j  : 행의 끝 나란히 맞춤
  • ctrl+f : 커서를 오른쪽으로 이동

vi

  • set nu : 라인번호 표시
  • set nonu : 라인번호 제거
  • :wq : 파일저장 후 종료
  • :q! : 무조건 종료
  • :q : 버퍼와 파일내용 일치시 종료
  • :% : 전체 줄 표시
  • :$ : 맨 마지작줄 이동
  • :/ : 커서위치에서 위로 검색
  • :? : 커서위치에서 아래로 검색
  • :n : 같은 방향으로 다음 문자열 검색
  • :1,9 s/fail/success/g : 1~9 라인에서 fail을 success로 문자 치환
  • vi +5 ihd.txt : 문서를 열면서 5번째 줄로 커서 위치, 숫자 없으면 맨 마지막으로 이동
  • :4,10 s/^#// : 4~10 라인 주석 제거
  • 명령모드에서 입력모드 전환 : i, a, o(o는 한줄이 삽입되면서 입력모드로 전환)

 

실습해보기

1. 문서를 하나 만들었음

예제 문서 만들기

2. 라인번호 표시

3. 1~3 라인 주석 제거

4. girl -> woman 치환, 대소문자 sensitive 로 Girl은 안바뀜

 


프로그램 설치

 

1. RPM

  • 레드햇사에서 만들어낸 패키지 관리 툴
  • sendmail-8.14.3-5.fc11.i586.rpm
  • sendmail : 패키지명
  • 8 : 주버전
  • 14 : 부버전
  • 3 : 패치번호
  • 5 : 문제점을 개선할 때마다 붙여지는 릴리즈번호
  • fc11 : 페도라버전, 페도라에서 배포할 경우 붙여지며 생략가능
  • i586 : 아키텍처, 파일이 설치가능한 CPU를 의미
  • rpm : 레드햇 계열의 패키지 파일 확장명
  • kernel-3.10.0-327.el7.x86_64.rpm
  • el7은 CentOS에서 배포할 경우 붙여짐. enterprise linux

 

패키지 설치 명령어 형식은 rpm [옵션] 패키지명

  • -i : 새로운 패키지를 설치
  • -h : 패키지를 풀 때 해시(#) 마크 표시
  • -U : 기존의 패키지를 업그레이드
  • -e : 패키지 제거
  • -q : 패키지 설치여부 확인
  • -v : 진행과정을 메시지로 표시
  • --nodeps : 의존성 관계 무시하고 설치
  • --oldpackage : 구버전으로 다운그레이드
  • --replacepkgs : 패키지 재설치
  • --force : 기존에 설치된 패키지와 관계없이 강제로 설치, --replacepkgs, --replacefiles, --oldpackage 모두 사용 
  • -V : 검증옵션, 보안상 침입자에 의해 권한획득이나 변조가 되었는지 검사
  • rpm 검증코드 : 5(MD5 체크섬), D(장치파일), T(파일 수정일), D(장치파일)

 

2. YUM(Yellowing Undater Modified)

레드햇 계열. 네트워크를 통해 기존 RPM 패키지 파일의 업데이트 자동수행, RPM의 의존성 문제 해결을 위한 유틸리티

  • yum groupinstall 패키지명 : 지정한 패키지 그룹 설치
  • yum groupremove 패키지명 : 지정한 패키지 그룹 제거 

 

3.dpkg

데비안의 저레벨 패키지 관리툴, 의존성문제

패키지명 버전-릴리즈번호-리버전_아키텍처.deb

  • -i : 패키지 설치, 의존성 문제로 설치 안되는 경우 발생
  • -r : 설치된 패키지만 삭제
  • -P : 패키지와 설정정보 모두 삭제
  • - s : 패키지의 정보(버전, 관리자, 설명)
  • -L : dpkg가 설치한 모든 파일목록

 

4. apt-get

데비안 패키지 관리 유틸리티, 의존성과 충돌문제 해결을 위해 '/etc/apt/sources.list' 파일 참조

 


소스파일 설치 부분

 

1. 파일 아카이브

다수의 파이이나 디렉토리를 하나로 묶는 것

  • tar만으로 아카이빙하면 크기가 줄어들지 않음. 하지만 tar 옵션에 압축옵션을 주면 크기가 줄어듦
  • 바로 gzip으로 압축하면 tar에서 옵션으로 압축할 때보다 크기가 더 줄어듦

 

 

2. 파일 압축

  • compress/uncompress
  • gzip/gunzip

압축
압축풀기, gzip -d edit0810.gz 와 동일한 기능

 

  • bzip2/bunzip2
  • xz/unxz

 


소스코드설치

  • 환경설정 -> 컴파일(make) -> 파일설치(make install)

 

CMake(Cross Platform make)

  • 멀티플랫폼으로 사용. 오픈소스 프로젝트
  • 마이크로소프트 윈도우 프로그래밍 도구 지원
  • 이클립스용 빌드 파일 생성
  • 타임스탬프
  • 평행빌드
  • 크로스 컴파일
  • 다양한 플랫폼 지원