hoon's bLog

리눅스 시스템관리 | 일반 운영관리 3 본문

IT/Linux Master 1급

리눅스 시스템관리 | 일반 운영관리 3

개발한기발자 2023. 3. 8. 00:12
반응형

3. 프로세스 관리

프로세스의 제어

프로세스 우선순위

  • 명령행에서 'ps -l'
  • PRI와 BNI가 있고, 이 두 항목이 프로세스의 우선순위와 연관
  • PRI는 운영체제에서 참고하는 우선순위 값으로 낮은 값일수록 우선순위가 높다.
  • 인위적인 조작이 되지 않고, 시스템 상황에 따라 적절히 부여된다.
  • NI 값은 root나 사용자가 조작하는 우선순위 값으로 -20부터 19까지 설정 가능하다.
  • 이 값 역시 낮은 값일수록 우선순위가 높고, root만이 값을 낮출 수 있다.(관련 명령어로 nice, renice)

프로세스와 /proc 디렉터리

/proc 개요

  • 가상 파일 시스템.
  • 동작중인 프로세스 상태 정보 시스템 및 하드웨어 정보 확인
  • ps 명령 시 이 디렉터리 사용
  • 프로세스 생성시 이 디렉터리에 PID와 동일한 서브 디렉터리가 생성. 그 안에 정보가 저장.

/proc 디렉터리의 주요 정보 파일 및 디렉터리

  • acpi : 전원 관련 정보가 있는 디렉터리
  • bus(디렉터리)
  • cmdline : 부팅 시에 실행되는 커널 관련 옵션에 대한 정보
  • cpuinfo
  • devices : 현재 커널에 설정된 디바이스 드라이버의 리스트 정보
  • dma : 시스템에서 사용 중인 DMA 정보
  • filesystems : 커널에 설정된 파일 시스템의 리스트 정보
  • interrupts : 시스템에서 사용 중인 인터럽트 정보
  • iomem : 메모리 번지별로 할당된 리스트 정보
  • ioports : 시스템에서 사용 중인 I/O 주소
  • kcore : 시스템에 장착된 물리적 메모리의 이미지
  • loadavg : 최근 1, 5, 15분 동안의 평균 부하율을 기록
  • meminfo : 물리적 메모리 및 스왑 메모리 정보
  • misc : 기타 장치에 대한 정보
  • mounts : 시스템에 마운트된 정보가 기록
  • net : Network 관련 정보 파일이 있는 디렉터리
  • partitions : 현재 활성화된 파티션 정보를 기록
  • scsi : 디렉터리
  • swaps : 스왑 파티션 관련 정보
  • sys : 커널과 관련된 정보가 있는 디렉터리 sysctl 명령으로 제어
  • sysvipc : SysV IPC 자원 정보인 Messages Queues, Semaphores, Shared Momory 정보가 있는 디렉터리
  • uptime : 시스템 가동 시간에 대한 정보를 기록
  • version : 커널 버전 정보
  • mdstat : RAID 사용시에 관련 정보

프로세스 스케줄링

스케줄링 이란 특정한 시간에 특정한 작업을 수행하게 하는 것.

at은 한번만 실행 시 사용, cron은 주기적으로 프로세스를 실행 시 사용.

at

  • 보통 한번 실행되는 경우에 사용
  • atd 데몬에 의하여 실행
  • 지정한 작업은 큐에 저장
  • 저장한 작업들은 /var/spool/at/ 디렉터리 아래 파일로 저장
  • Ctrl + d 누르면 해당 작업 예약

[사용법]
$ at [option] 시간

옵션

  • -q 큐 이름 : 작업의 대기 큐 지정
  • -c 작업 : 작업 정보 출력
  • -d : 예약한 작업 삭제
  • -l : 큐에 있는 작업 출력
  • -m : 실행한 결과 메일
  • -f : 지정한 파일로부터 작업 읽어옴

atq : 큐에 저장된 작업을 보여주는 명령. 'at -l'과 같음.
atrm : 예약된 작업을 취소할 때 사용. 'at -d'와 같음.

at 사용자 제한

  • /etc/at.allow 파일이 존재하는 경우에는 /etc/at.deny 파일 존재 유무에 상관없이 /etc/at.allow 파일에 등록된 사용자만 가능.
  • /etc/at.deny 파일만 존재하는 경우에는 /etc/at.deny 파일에 등록된 사용자만 사용 불가능
  • root만 사용가능

cron

7개의 필드로 구성

  • munute : 0~59
  • hour : 0~23
  • day of month : 1~31
  • month : 1~12
  • day of week : 0, 7 일요일. 1~6 월~토. 아니면 직접 sun, mon……
  • user-name : 보통 생략
  • command

관련 명령어 : crontab

  • '/var/spool/cron/사용자아이디' 파일로 저장.

[사용법]
$ crontab [option] 파일명

옵션

  • -l : 설정된 내용 출력
  • -e : 작성, 수정
  • -r : 저장된 파일 삭제
  • -u : root가 다른 사용자 crontab 다룰 때

cron 사용자 제한
/etc/cron.allow, /etc/cron.deny. at과 같은 원리로 제한이 동작.

프로세스 관련 명령어

PS

동작 중인 프로세스의 상태를 출력. System V, BSD, GNU에 따라 결과가 다르게 나타남.

System V 계열은 -를 사용. BSD 계열은 - 사용 x. GNU 에서는 --를 사용.

 

[사용법]
$ ps [option]

옵션

  • a : 터미널과 연관된 프로세스를 출력(BSD). x와 연게해서 씀.
  • u : 프로세스의 소유자를 기준으로 출력
  • x : 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스를 출력. a와 연계해서 씀
  • l : 프로세스의 정보를 길게 보여주는 옵션 우선순위와 관련된 PRI와 NI 값을 확인
  • e : 해당 프로세스에 관련된 환경 변수 정보를 함께 출력
  • f : 프로세스간의 상속관계를 트리 구조로 보여줌
  • p : 특정 PID를 지정할 때 사용(BSD)
  • -A : 모든 프로세스를 출력(-e, System V)
  • -a : 세션 리더를 제외하고 터미널에 종속되지 않은 모든 프로세스를 출력
  • -f : 유닉스 스타일로 출력. PID, UID, PPID 표시.
  • -C 프로세스명 : 지정한 프로세스 보여줌
  • -o 값 : 출력 포맷 지정. pid, tty, time, cmd 등
  • -p : 특정 PID 지정 (SysV)
  • -u : 특정 사용자의 프로세스 정보 확인

ps 주요 출력 항목

  • VSZ : 가상 메모리 사용량
  • RSS : 실제 메모리 사용량
  • TIME : 총 CPU 사용 시간
  • C, CP : 짧은 기간 동안의 CPU 사용률
  • F : 프로세스 플래스
  • PRI : 실행 우선순위
  • NI : nice 우선순위 번호

pstree

프로세스의 상태를 트리 구조로 출력

 

[사용법]
$ pstree [option]

옵션

  • -a : 각 프로세스의 명령행 인자까지 보여줌
  • -h : 현재 프로세스와 그것의 조상 프로세스르 하이라이트로 강조
  • -n : 프로세스 이름 대신 PID로 정렬해서
  • -P : PID도 같이 보여줌

top

동작중인 프로세스의 상태를 실시간으로 화면에 출력. CPU, 메모리, 부하 상태 확인. 실행 상태에서 다양한 명령 입력.

 

[사용법]
$ top [option]

옵션

  • -d 갱신 시간
  • -p : 특정 PID 값을 갖는 프로세스를 모니터링

kill

프로세스에 특정한 시그널을 보내는 명령. 옵션 없이 실행 시 프로세스에 종료 신호(15, TERN, SIGTERM)를 보냄.

 

[사용법]
$ kill [option] [signal] PID or %job_number

옵션

  • -l : 시그널의 종류
  • -s signal : 시그널의 이름을 지정

killall

같은 데몬의 여러 프로세스를 한 번에 종료시킬 때 사용하는 명령. 프로세스명을 사용.

 

[사용법]
$ killall [option] 프로세스명

옵션

  • -l
  • -w : 시그널을 받은 프로세스들이 종료될 때까지 기다림
  • -v : 시그널이 전송된 결과를 출력
  • -s signal
  • -u 사용자명 : 특정 사용자의 프로세스를 지정 시에 사용.

jobs

백그라운드로 실행 중인 프로세스나 현재 중지된 프로세스의 목록을 출력해 주는 명령

 

[사용법]
$ jobs [option]

옵션

  • -l : 프로세스 번호를 추가로 출력

fg

백그라운드 프로세스를 포어그라운드 프로세스로 전환

 

[사용법]
$ fg [job_number or % job_number]

bg

포어그라운드 프로세스를 백그라운드 프로세스로 전환하는 명령. 포어그라운드로 실행 중인 프로세스에 Ctrl + z를 눌러 작업을 일시 중지시킨 후에 bg 명령을 사용해서 백그라운드로 전환

nice

프로세스의 우선순위를 변경하는 명령으로 NI 값을 설정할 때 사용. 프로세스 기본 NI는 0. 지정 가능한 값의 범위는 -20 ~ 10. 값이 작을수록 우선순위 높음. 일반 사용자는 NI 값을 증가만 가능하고, root만 낮출 수 있음.

 

[사용법]
$ nice [option] 프로세스명

옵션

  • -n 값, -값, --adjustment=값 : NI 값 수정. 지정 x, 기본 10.

renice

실행 중인 프로세의 우선순위를 변경할 때 사용. PID, username, GID 이용. renice는 기존의 NI 값에 상관없이 지정한 NI 값이 바로 설정. 낮추는건 root만 됨.

 

[사용법]
$ renice [option] NI 값 PID

옵션

  • -p : PID
  • -u : username
  • -g : GID

nohup

사용자가 로그아웃하거나 작업 중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스로 작업될 수 있도록 해주는 명령.

표준 출력, 에러는 'nohup.out' 파일을 생성하여 기록. 사용자가 명령행 뒤에 &를 명시해야 백그라운드로 돌아감.

 

[사용법]
$ nohup 명령

pgrep

프로세스 이름 기반으로 검색하는 명령으로 PID 값을 출력.

[사용법]
$ pgrep [option] pattern

옵션

  • -u : 특정 사용자가 실행시킨 프로세스 PID 출력
  • -U : 특정 UID를 갖는 사용자가 실행시킨 프로세스 PID 출력
  • -g : 특정 그룹이 실행시킨 프로세스 PID 출력
  • -G : 특정 GID를 갖는 그룹이 실행시킨 프로세스의 PID를 출력
  • -t : 특정 터미널에 실행 중인 프로세스의 PID 출력

pkill

프로세스명을 사용해서 특정 프로세스에 시그널을 보내는 명령. 기본 시그널은 15 TERM.

[사용법]
$ pkill [option] pattern

옵션

  • pgrep와 같다.

4. 소프트웨어 설치 및 관리

패키지를 통한 소프트웨어 설치

프로그램 설치 개요

  • c언어로 된 소스 파일은 tar로 묶은 후에 압축하여 배포
  • 계층적인 디렉터리 구조로 만들고, 소스 컴파일을 위한 Makefile과 관련 문서들을 포함시킴
  • 압축을 풀고, 데렉터리 이동 후 configure, make, make install의 작업을 거쳐야 하는데 초보자에게 쉬운 방법이 아님.
  • 따라서 리눅스 배포판에서는 쉬운 프로그램의 설치, 삭제, 관리 등을 위해 독자적인 패키지 관리기법을 만듦. 레드햇의 RPM, 데비안의 dpkg, 수세의 YaST 등이 있음.

배포판별 패키지 관리 기법

  • RPM : yum
  • Dpkg : apt-get
  • YaST : zypper

RPM(Red Hat Package Manager)

배포되는 rpm 파일의 형식

  • 패키지 이름-버전-릴리즈-아키텍처.rpm

rpm 사용법

[사용법]
$ rpm [option] 패키지_파일명

설치 및 갱신 모드

옵션

  • -i : 새로운 패키지설치. 이전 버전의 같은 패키지 존재 시 설치가 안됨(--install)
  • -U : 패키지 업그레이드
  • -F : 이전 버전이 설치되어 있는 경우에만 설치
  • -v : 메시지를 자세히 보여줌(--verbose)
  • -h : 설치 상황을 '#'으로 표시(--hash)
  • --force : 강제 설치
  • --nodeps : 의존성 무시 설치
  • -vv : 메시지를 자세하게 볼 때
  • --test : 설치되는지 테스트할 때
  • --rebuilddb : rpm 설치했는데 검색 안될 때 rpm DB 업데이트할 때

제거모드

옵션

  • -e : 설치된 패키지 삭제
  • --nodeps : 의존성을 갖는 패키지가 존재 시 그것도 삭제
  • --test
  • --allmatches : 동일한 이름을 갖는 패키지 모두 다 제거

질의모드

옵션

  • -q : 질의 시 꼭 사용. 패키지 이름과 버전만 표시
  • -i : 설치된 패키지의 정보를 출력
  • -l : 패키지에서 설치한 모든 파일 정보를 출력
  • -a : 설치된 모든 패키지 목록
  • -p 패키지 파일명 :
  • -f 파일명 : 지정한 파일을 설치한 패키지 이름
  • -c : 해당 패키지의 설정 파일이나 스크립트 파일을 출력
  • -d : 해당 패키지의 문서 파일을 출력
  • -R : 어떤 패키지에 의존하는지 보여줌
  • --changelog : 특정 패키지의 바뀐 내역을 보여줌
  • --scripts : 설치 및 제거 관련 스크립트를 보여줌
  • --filesbypkg : 파일 앞에 패키지명을 붙임
  • --queryformat : 질의의 결과를 원하는 형태로 출력

검증모드

  • rpm 데이터베이스에 저장되어 있는 패키지의 메타데이터 정보를 이용하여 변경된 정보를 찾아내는 모드. 파일의 크기, 허가권, 소유권, 파일 형식 등에 대한 변경 정보를 출력.

옵션

  • -V : 검증 기본 옵션
  • -a : 모든 패키지 검사

리빌드 모드
rpm 소스파일인 .src.rpm 파일을 패키지 파일로 만드는 모드로서 rpmbuild라는 명령어를 사용

 

[사용법]
$ rpmbuild [option] 소스패키지

옵션

  • --rebuild

YUM(Yellowdog Updater, Modified)

rpm 기반의 시스템에서 패키지를 손쉽게 설치해 주고 자동으로 업데이트를 수행하는 명령행 기반 유틸리티. 의존성 문제 자동 해결.

yum 관련 파일 및 디렉터리

  • 환경 설정 파일 : /etc/yum.conf
  • 설치 및 업데이트를 위한 저장소 : /etc/yum.repos.d
  • 작업과 관련된 정보 : /var/cache/yum/x86~/6/base
  • yum 관련 작업의 로그 : /var/log/yum.log

yum 사용법

[사용법]
$ yum [option] [command] 패키지_파일명

옵션

  • -y : 모든 질의에 yes
  • -v : 자세한 정보

command

  • list [항목] : 전체 패키지 정보 항목 값은 installed, updates. 항목 기본 값 all
  • info [패키지명]
  • check-update : 업데이트 필요한 패키지 업데이트
  • update [패키지명]
  • install [패키지명]
  • serarch [문자열..]
  • remove, erase [패키지명]
  • grouplist : 패키지 그룹에 대한 정보를 출력
  • groupinfo 패키지그룹명
  • groupupdate 패키지그룹명
  • groupinstall 패키지그룹명
  • groupremove 패키지그룹명
  • whatprovides : 특정한 파일이나 기능과 관련된 패키지 정보를 검색
  • clean [값] : yum 관련 저장된 정보 삭제할 때 사용. 설정 값에는 all, packages, rpmdb, dbcache 등이 있음
  • history

데비안 패키지 관리

데비안 패키지 관리의 개요

dpkg라는 데비안 패키지 관리 도구를 사용, .deb 형태의 파일로 배포하여 설치, 삭제 등의 관리를 함.

파일 형식 : 패키지 이름_버전-릴리즈-아키텍처.deb

데비안 패키지 관리 프로그램에는 추가로 dselect, alien이 있음. dselect는 curses 메뉴 방식의 유틸리티. alien은 다른 종류의 리눅스 패키지 형식을 상호 변환해주는 유틸리티.

dpkg

[사용법]
$ dpkg [option] 패키지명 패키지_파일명

옵션

  • -i 패키지 파일명 : 패키지 설치 시(--install)
  • -R 디렉터리명 : 지정 디렉터리 안의 패키지 설치
  • -l : 설치돼있는 패키지 출력(--list)
  • -c 패키지 파일명 : 패키지 파일 정보(--contents)
  • -L 패키지명 : 패키지가 설치한 파일 목록 (--listfiles)
  • -r 패키지명 : 패키지를 제거하는데, 환경 설정 파일 남겨둠(--remove)
  • -P 패키지명 : 환경 설정 파일까지 전부 제거 (--purge)
  • -S 파일명 : 해당 파일을 설치한 패키지 이름(--search)
  • -C : 완전히 설치되지 않은 패키지에 대한 검사(--audit))
  • --unpack 패키지 파일명 : 환경 설정은 하지 않고, 패키지를 풀기만 함
  • --configure 패키지명 : --unpack 옵션 풀린 패키지를 환경 설정할 때 사용.
  • -a : --configure 시 패키지명 대신에 이 옵션 사용하면 언팩 된 패키지들에 대한 환경 설정을 함.
  • -s 패키지명 : 패키지 상태(--status)

apt-get

데비안 리눅스 배포판에서 패키지 관리를 쉽게 하기 위해 제공되는 명령행 기반의 유틸리티.

[사용법]
$ apt-get [option] command 패키지명

옵션

  • -y
  • --purge

소스 코드 컴파일

소스 설치법의 개요

압축 풀기, 디렉터리 이동, configure, make, make install의 5단계를 거침.

소스 설치의 주요 3단계

configure

  • 소스 프로그램의 환경 설정을 하는 스크립트.
  • 사용자들이 자신의 환경에 맞도록 손쉽게 수정하도록 제공되는 스크립트.
  • 이 스크립트는 사용자 시스템에 적당한 스프트웨어 패키지가 생성되도록 Makefile을 만듦

make

  • 소스 코드에서 실행 가능한 프로그램과 라이브러리를 자동으로 빌드하는 자동화 도구
  • 보통 configure에 의해 변경된 내용을 반영하고, 타깃과 의존성 관련 작업을 한 후에 최종적으로 실행파일을 만든다.

make install
- 컴파일된 실행 파일을 지정한 속성으로 지정된 디렉터리에 설치

cmake

cmake의 개요

- 소스 컴파일 시 사용되는 Make의 대체프로그램 멀티 플랫폼을 지원하기 위한 목적으로 등장한 오픈소스 프로젝트.

- cmake를 사용하는 대표적인 프로그램에는 mysql이 있음.

cmake의 특징

  • 독자적인 설정 스크립트를 이용
  • 유닉스 계열, Mac OS X 윈도우 계열 등 다양한 운영체제 지원
  • C, C++, Java, Fortran에 대해서는 자체적으로 의존 관계를 분석할 수 있음
  • SWIG, Qt, FLTK 등을 지원
  • MS Visual Studio, .Net 을 지원
  • 이클립스용 빌드 파일 생성 가능
  • 타임스탬프를 통해 파일 내용 변화 알 수 있음
  • 평행 빌드 지원
  • 크로스 컴파일
  • Dart, CTest, CPack 등을 포함

cmake를 채택한 프로젝트

KDE, MySQL, LMMS, OpenLieroX, OpenSceneGraph, VTK

tar 압축 관련 유틸리티

tar(tape archive)

  • 여러 파일들을 하나의 파일로 묶어주는 명령.
  • GNU tar은 옵션을 이용해서 파일로 묶거나 풀 때 압축 관련 작업을 동시에 진행 가능.
  • 지원되는 압축 형식에는 compress(tar.Z), gzip(tar.gz), bzip2(tar.bz2), xz(tar.xz) 등이 있음.

 

[사용법]
$ tar [option] 파일명
'-' 기호 사용 안 해도 됨. 인자 있는 옵션 여러 개 사용 시에는 해야 됨.

옵션

  • -v : 어떤 명령을 실행할 때 대상이 되고 있는 파일들을 보여줌
  • -f 파일명 : 작업 대상이 되는 tar 파일의 이름을 지정. 기본적으로 쓰는 옵션
  • -r : 기존의 tar 파일 뒤에 파일을 추가
  • -t : tar 파일 안에 묶여 있는 파일의 목록을 출력
  • -h : 심볼릭 링크가 가리키고 있는 원본 파일을 저장
  • -C : 디렉터리를 변경할 때 사용
  • -p : 파일이 생성되었을 때의 권한을 그대로 유지
  • -Z : compress 관련 옵션. 예전 UNIX계열 표준 압축 파일인 tar.Z에 사용
  • -z : gzip 관련 옵션으로 압축 파일인 tar.gz에 사용
  • -j : bzip 관련 옵션. tar.bz2
  • -J : xz관련 옵션 tar.xz

compress, uncompress

전통적으로 유닉스에서 사용했던 압축 프로그램. 압축률이 낮아 현재는 안 씀.

 

[사용법]
$ compress, uncompress [option] 파일명

옵션

  • -c : 표준 출력을 지정
  • -v : 압축 관련 정보 출력

gzip, gunzip

GNU에서 만듦

 

[사용법]
$ gzip, gunzip [option] 파일명

옵션

  • -d : 압축 풀 때
  • -1 : 압축 시간 줄이고. 압축률은 떨어짐
  • -9 : 파일을 최대로 압축
  • -c : 결과를 표준 출력으로 보낼 때, tar과 병행해서 작업 시
  • -l : 압축 파일에 대한 정보를 출력
  • -r : 대상이 디렉터리인 경우 하위 디렉터리까지 찾아서 처리
  • -v : 진행 과정을 이름, 퍼센트와 함께 자세히 보여줌

bzip2, bunzip2

버로우즈-휠러 변환이라는 블록 정렬 알고리즘과 허브만 부화화를 사용하여 줄리안 시워드가 만듦.

 

[사용법]
$ bzip2, bunzip2 [option]

옵션

  • -d : 압축 풀 때
  • -1 : 파일의 압축 시간을 줄임
  • -9 : 파일을 최대로 압축
  • -c : 결과를 표준 출력으로 보낼 때
  • -f : 이 옵션 주면 덮어쓰기가 가능해짐

xz, unxz

LZMA2라는 알고리즘을 이용하여 만든 데이터 무손실 압축 프로그램. 매우 높은 압축률을 자랑.

 

[사용법]
$ xz, unxz [option] 파일명

옵션

  • -z : 기본 옵션. 사용 안 해도 됨
  • -d : 풀 때 사용.

zip, unzip

DOS/Windows 계열 운영체제에서 많이 사용

[사용법]
$ zip [option] 압축 파일명 파일명
$ unzip 압축 파일명

옵션

  • -r : 디렉터리인 경우 하위 디렉터리 포함

gcc(GNU Compiler Collection)

gcc는 GNU 프로젝트에 의해 만들어진 일종의 컴파일러 모음으로 C, C++, Objective-C, Fortran, Java, Ada, Go 등 다양한 프로그래밍 언어를 지원

 

[사용법]
$ gcc [option] 파일명

옵션

  • -o : 컴파일 시 실행 파일 이름 지정
  • -c : 링크는 하지 않고 목적 파일만을 만들어 낼 때 사용

라이브러리 관리

라이브러리의 개요

- 프로그램에서 특정한 기능을 하는 루틴들을 모아 놓은 것.

- 하나 이상의 서브루틴, 함수, 클래스로 만듦.

- 이러한 라이브러리들은 프로그램을 개발할 때 사용자의 프로그램과 링크되어 실행 가능한 형태로 완성됨. 

정적 링크 라이브러리 : 프로그램을 컴파일할 때 실행 파일에 포함되어 배포되는 방식

동적 링크 라이브러리 : 실행 프로그램에 항상 라이브러리를 포함하는 것이 아니라 필요할 때만 라이브러리를 메모리에 적재하는 방식

- 운영체제에서도 수많은 명령어가 같은 루틴을 공유하는 것을 공유 라이브러리라고 함.

- 실행 파일 내부에 넣어두지 않고 프로그램을 실행할 때 가져다 사용하므로 메모리의 효율성이 좋음.

공유 라이브러리의 개요

운영체제에서는 많은 응용 프로그램에 동적으로 링크되어 공유되는 라이브러리를 공유 라이브러리라 부른다.

공유라이브러리의 특징

의존성 : 동적으로 링크된 프로그램은 적어도 하나 이상의 공유 라이브러리가 필요. 없다면 실행되지 않음.

링크 :  동적으로 링크된 실행 파일은 실행 시에 공유 오브젝트에 대한 동적 링커인 ld.so에 의해 검사 됨

공유 라이브러리 관련 디렉터리 및 파일

개요 및 관련 디렉터리

  • 공유 라이브러리는 파일명 뒤에 .so라고 덧붙여져 있음
  • 특정 디렉터리의 위치를 라이브러리 관련 디렉터리로 등록하려면 /etc/ld.so.conf 파일을 사용
  • Cent OS 8 버전부터는 대부분 공유 라이브러리 파일들을 /lib64 디렉터리 안에 두고 같이 관리.

관련 파일

  • /etc/ld.so.conf : 추가로 다른 디렉터리를 등록할 시 사용하는 환경 설정 파일. ldconfig라는 명령을 수행해서 관련 정보를 갱신.
  • CentOS 7 버전에서는 include 지시자를 이용해서 /etc/ld.so.conf.d 디렉터리 안에 있는 *.conf 파일에 설정된 정보를 추가로 읽음.
  • /etc/ld.so.conf 파일에 등록할 라이브러리 경로를 추가한 후 ldconfig 명령을 실행
  • /etc/ld.so.cache : (/lib, /usr/lib) = (/lib64) 디렉터리뿐만 아니라 /etc/ld.so.conf 파일에 명시한 디렉터리에서 찾을 수 있는 라이브러리 파일 목록 정보를 담고 있는 파일

공유 라이브러리 관련 명령어

ldconfig

공유 라이브러리 관련 정보를 갱신하고 설정하는 명령

 

[사용법]
$ ldconfig [option] 라이브러리

옵션

  • -p : 현재 캐시에 저장되어 있는 공유 라이브러리 목록 정보를 출력
  • -v : 명령 실행과 관련된 자세한 정보를 출력
  • -f : /etc/ld.so.conf 파일 대신에 다른 환경 설정 파일을 지정할 때 사용.

ldd

현재 캐시에 저장되어 있는 공유 라이브러리 목록 정보를 출력

 

[사용법]
$ ldd [option] 파일명

옵션

  • -v : 관련 라이브러리 정보를 버전 등과 함께 자세히 출력
  • -f : /etc/ld.so.conf 파일 대신에 다른 환경 설정 파일을 지정할 때 사용.

공유 라이브러리 관련 환경 변수

LD_LIBRARY_PATH. 특정 프로그램 실행 시 라이브러리 등록이 필요하면 이 변수에 디렉터리 경로를 등록하면 됨.

728x90
반응형