본문 바로가기

Unix&Linux/기본 개념과 관리자 역할

리눅스 관리자를 위한 명령어

프로그램 설치를 위한 RPM

RPM(Redhat Package Manager)

Windows의 'setup.exe'와 비슷한 설치파일. 이러한 설치파일의 확장자명은 *.rpm 이며, 이를 패키지(Package)라 부른다.


** 리눅스의 확장자 : Windows의 확장자와는 다르게 리눅스는 확장자에 의미를 두지 않는다. 일반적으로 확장자를 가지지 않으며 있다해도 편리함을 위함이지 절대적인 의미를 지닌것은 아니다.


파일의 의미

fedora11 파일안에 gedit을 예로 살펴보자

# ls gedit*

실행하면 

gedit-2.26.1-1.fc11.i586.rpm 

와 같이 뜨는데 의미하는 바는 다음과 같다(패키지에 따라서 형식이 조금 다를 수 있다)

패키지이름-버전-리리리즈번호.페도라버전.아키텍처.rpm

패키지 이름 : gedit -> 프로그램(패키지)의 이름

버전 : 2.26.1 -> 대개 3자리수로 구성된다. 주버전, 부버전, 패치버전이며 당연히 높을수록 최신이다.

릴리즈 번호 : 1 -> 문제점을 개선할 때마다 붙여지는 번호다.

페도라 버전 : fc11 -> 페도라에서 배포할 경우에 붙여진다. fc11은 페도라 11용을 의미한다.(꼭 페도라 11에만 설치되는 것은 아니고 일반적으로 다른버전의 페도라 또는 리눅스에서도 설치가 된다)

아키텍처 : i586 -> CPU를 의마한다. 즉 , 이 파일이 설치 가능한 CPU를 뜻한다.


자주 쓰이는 rpm의 사용법

설치

rpm -Uvh <패키지 파일(*.rpm)>

U : (대문자) 기존에 패키지가 설치되지 않았다면 "i" 와 같이 일반적인 설치를 하고, 기존에 패키지가 설치되어 있다면 업그레이드를 한다.

v : 설치과정의 확인

h : 설치진행과정을 "#" 마크로 화면에 출력해줌


삭제

rpm -e <패키지 이름>

e -> Erase의 약자


이미 설치된 패키지 질의

rpm -qa <패키지 이름> -> 시스템에 패키지가 설치되었는지 확인

rpm -qf <파일의 절대 경로> -> 이미 설치된 파일이 어느 패키지에 포함된 것인지 확인

rpm -ql <패키지 이름> -> 특정 패키지에 어떤 파일들이 포함되었는지 확인

rpm -qi <패키지 이름> -> 설치된 패키지의 상세정보


아직 설치되지 않은 rpm 파일에 대한 질의

rpm -qlp <패키지 파일(*.rpm)> -> 패키지 파일에 어떤 파일들이 포함되었는지 확인

rpm -qip <패키지 파일(*.rpm)> -> 설치할 패키지 파일의 상세정보


qip는 rpm 파일이 어떤 기능을 하는지 설치하기 전에 미리 확인하는데 유용하게 사용될 수 있다.


RPM의 단점

의존성 문제

파이어폭스를 X윈도우가 설치되어있지 않은 리눅스 환경에서 설치한다면 설치가 되지 않을것이다. X윈도우에 의존성을 가지고 있기 때문이다.


이러한 불편한 점을 해결한 것이 yum 명령어이다.


편리한 패키지 설치, YUM

YUM의 개념

의존성에 의해서 필요한 패키지를 인터넷을 통해서 자동으로 설치해서 의존성문제를 해결해준다.

의존성에 필요한 패키지가 다운로드 되는 저장소(Repository)는 /etc/yum.repos.d/ 디렉토리의 파일에 저장되어 있다.


YUM 기본적인 사용법

기본설치

yum install <패키지 이름>

명령시 설치 여부를 묻는데 편하게 아래와 같이 사용하도록 하자

yum -y install <패키지이름>


RPM 파일 설치

yum install <*.rpm 파일 이름>


업데이트 가능한 목록 보기

yum check-update

설치된 패키지 중에서 업데이트가 가능한 패키지의 목록을 출력해 준다.


업데이트

yum update <패키지 이름>

이 명령어는 사용할 필요가 별로 없다. yum install <패키지 이름>을 실행하면, 기존에 패키지가 설치가 안 되어 있으면 새로 설치(install)해 주고, 이미 설치가 되어 있다면 업데이트를 해준다. 물론 설치는 되어 있고 업데이트할 필요가 없다면 그냥 끝낸다.

그냥 yum update 명령을 사용하면 모든 업데이트 가능한 패키지를 업데이트 해주는 것이므로 시간이 무척오래 걸릴 것이다.


삭제

yum remove <패키지 이름>


정보확인

yum info <패키지 이름>


YUM 고급 사용법

로컬에서 설치

yum localinstall <*.rpm 파일>

인터넷을 통해 다운로드해서 설치하지 않고, 현재 디렉토리에 있는 *.rpm 파일을 설치할 때 사용한다. 인터넷을 사용할 수 업거나 네트워크가 느린 경우, 또는 DVD의 *.rpm을 설치할 떄 사용된다.


패키지 그룹 설치

yum groupinstall "<패키지 그룹 이름>"

패키지 그룹 설치는 패키지 그룹에 포함되는 패키지들을 통째로 설치할 때 사용할 수 있다. 패키지 그룹의 종류는 yum grouplist 명령으로 확인이 가능하다. 또한 패키지 그룹의 이름은 주로 띄어쓰기가 많으므로 꼭 "" 안에 써 줘야 한다.


패키지 리스트 확인 

yum list <패키지 이름>

페도라에서 제공되는 패키지의 리스트를 보여준다. 예로 yum list all 은 모든 패키지의 목록을 보여주며, "yum list mysql*"는 mysql이라는 이름이 들어간 패키지의 목록을 보여 준다. 그리고 "yum list avaliable" 은 현재 설치 가능한 목록을 모두 보여준다.


특정 파일이 속한 패키지 이름 확인

yum provides <파일 이름>

특정 파일이 어느 패키지에 들어 있는지를 확인할 수 있다.


GPC 키 검사 생략

yum install --nogpgcheck <*.rpm 파일>

페도라 11에서 인증되지 않은 *.rpm 파일을 yum 명령으로 설치하면 "Package ~~.rpm is not signed" 메시지와 함께 설치 종료된다. 그럴 경우  '--nogpgcheck' 옵션을 사용하면 GPG 키 인증을 생략하고 설치 할 수 있다.


YUM 설정 파일

yum 명령어와 관련된 설정파일은 /etc/yum.conf와 /etc/yum.repos.d/ 디렉토리가 있다. yum.conf 파일을 독자가 특별히 설정을 변결할 것이 없다.(이 파일의 자세한 사항은 "man yum.conf" 명령으로 확인할 수 있다.


/etc/yum.repos.d/ 디렉토리에는 여러 개의 파일이 있는데, 각 파일은 yum 명령을 입력했을 떄 검색하게 되는 네트워크의 주소가 들어 있다. 이 역시 특별히 변경하지 않는 것이 바람직하지만 만약 시간이 오래 지나서 fedora project의 URL이 변경된다면 yum이 작동하지 않을 수도 있다. 이럴 때는 직접 이 파일의 내용을 수정해 주면된다.


파일의 압축과 묶기

파일 압축

리눅스에 가장 많이 보게 되는 압축 파일은 확장명이 bz2 또는 gz(Z) 이다. 예전에는 주로 확장명 gz을 사용했으나, 최근에는 압축률이 더 좋은 bz2를 더 많이 사용하는 추세다. 이 파일들을 관리하는 명령어는 다음과 같다.


bzip2

확장명 bz2로 압축을 하거나 풀어준다.

사용예

# bzip2 파일명 -> '파일명'을 압축파일 인 '파일명.bz2'으로 만들어줌

# bzip2 -d '파일명.bz2' -> (d는 "Decompress"의 의미) 파일명.bz2 압축파일을 일반파일인 파일명으로 만들어 줌


bunzip2

확작명 bz2의 압축을 풀어준다. "bzip2 -d"옵션과 동일한 명령어다.


gzip

확장명 gz으로 압축을 하거나 풀어준다.

사용예

# gzip 파일명 -> '파일명'을 압축파일인 '파일명.gz'으로 만들어 줌

# gzip -d '파일명.gz' -> '파일명.gz' 압축파일을 일반파일인 '파일명'으로 만들어 줌

# gunzip 확장명 gz의 압축을 풀어준다. "gzip -d" 옵션과 동일한 명령이다.


파일 묶기

WIindows의 알집프로그램으로 aa파일과 bb파일을 압축하면 cc라는 파일로 묶인뒤 압축되는 것인데 이때 압축과 묶기가 한꺼번에 이뤄진것이다.

리눅스(유닉스)는 파일압축과 파일묶기는 원칙적으로 별개의 프로그램으로 수행하도록 되어 있다. 물론 사용자 편의성을 위해 한번에 할 수 있는 옵션도 제공해 준다.

파일묶기 명령어는 tar 이며, 묶인 파일의 확장명도 tar이다.


tar

확장명 tar로 묶음 파일을 만들어 주거나 묶음을 풀어 준다.

동작

c : 새로운 묶음

x : 묶인 파일을 풀어줌

t  : 묶음을 풀기전에 묶인 경로를 보여줌

옵션

f(필수) - 묶음 파일명 지정 : 원래 tar는 tape 장치 백업이 기본임 (생략시 tape로)

v - visual : 파일이 묶이거나 풀리는 과정을 보여줌

z - tar + gzip

j - tar + bzip2

사용 예

# tar cvf xinetd.tar /etc/xinetd.d/ -> 묶기

# tar cvfz xinetd.tar.gz /etc/xinetd.d/ -> 묶기 + gzip 압축

# tar cvfj xinetd.tar.bz2 /etc/xinetd.d/ -> 묶기 + bzip2 압축

# tar tvf xinetd.tar -> 파일 확인

# tar xvf xinetd.tar -> tar 풀기

# tar xvfz xinetd.tar.gz -> gzip 압축 해제 + tar 풀기

# tar xvfj xinetd.tar.bz2 -> bzip2 압축 해제 + tar 풀기


파일 위치 검색

find [경로] [옵션] [조건] [action]

옵션 : -name, -user(소유자), -newer(전,후), -pem(허가권), -size(크기)

action : -print(디폴트), -exec(외부명령 실행)

기본사용예

# find /etc -name "*.conf" -> /etc 디렉토리 하위에 확장명이 ".conf" 인 파일 검색

# find /home -user fedora -> /home 디렉토리 하위에 소유가 "fedora"인 파일 검색

# find ~ -perm 644 -> 현재 사용자의 홈디렉토리 하위에 허가권이 644인 파일 검색

# find /bin -size +10k -size -100k -> /bin 디렉토리 하위에 파일 크기가 10KB ~100KB 인 파일 검색

고급사용예

# find ~ -size 0k -exec ls -l { } \; -> 현재 사용자의 홈 디렉토리  하위에 파일 크기가 0인 파일의 목록을 상세히 출력

# find /home -name "*.swp" -exec rm { } \; -> /home 디렉토리 하위에 확장명이 "*.swp" 인 파일을 삭제

위의 외부명령 -exec가 작동되는 법

-exec는 외부명령의 시작

\;는 외부명령의 끝

rm 찾은 파일들에 대한 명령

{}는 찾은 파일들을 가리킨다고 생각하면 된다. 다시말해 rm {find /home -name "*.swp"} 와 같이 찾은 파일들에 대해 해당 명령을 실행하는 것이라 생각하면 쉽다.


which <실행파일명>

PATH에 설정된 디렉토리만 검색


whereis <실행파일명>

실행 파일 및 소스, man 페이지 파일까지 검색


locate <파일명>

파일 목록 데이터베이스에서 검색하기 때문에 매우 빠르고 유용하지만 updatedb 명령을 1회 수행해 줘야 사용할 수 있음

또한 updatedb 명령 이후에 설치된 실행 파일은 찾을 수 없음


시스템 설정(system-config-xxxx)

페도라의 X 윈도우 환경에서 제공하는 시스템의 설정 명령어는 주로 "system-config-xxxx" 형식을 지닌다.

만약 명령어가 실행되지 않는다면 "yum -y install <명령어로>" 로 설치한 후 실행하면 된다.

초기부팅 설정(system-config-boot)

날짜 및 설정(system-config-date) : 날짜와 시간을 설정할 수 있다.

방화벽 설정(system-config-firewall) : 외부에 서비스를 하기 위해서 포트를 열어 줄때 사용한다.


그외 사용되는 설정 명령(아래단어는 system-config-xxxx 에서 xxxx에 해당하는 단어이다)

keyboard -> 키보드 설정

language -> 언어 설정

lvm -> lvm 설정

network -> 네트워크 설정

printer -> 프린터 설정

rootpassword -> root 사용자의 비밀번호 설정

services -> 서비스의 가동/중지를 설정

users -> 사용자 설정

bind -> 네임 서버 설정

display -> X윈도우 환경 설정

httpd -> 웹 서버 설정

nfs -> NFS 서버 설정

samba -> 삼바 서버 설정

vsftpd -> FTP 서버 설정


CRON과 AT

cron

주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정해 놓는 것은 cron이라고 부른다.

관련된 데몬(서비스)은 "crond"이며, 관련 파일로는 "/etc/crontab" 이 있다.

/etc/cron.hourly/ 시간별

/etc/cron.daily/ 일별

/etc/cron.weekly/ 주별

/etc/cron.monthly/ 월별


 * * * * root run-parts /etc/cron.hourly

분,시,일,월, 요일, 권한, 실행 명령 순이다. 즉 1분마다 root권한으로 /etc/cron.hourly/디렉토리의 파일을 실행하라고 해석할 수 있다.


at

cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at는 일회성 작업을 예약하는 것이다. 즉, at는 예약을 해 놓으면 한번만 실행되고 소멸되는 것이다.

예약 : # at <시간>

사용예

# at 3:00pm tomorrow -> 내일 새벽 3시

# at 11:00pm January 30 -> 1월 30일 오후 11시

# at now + 1 hours -> 1 시간 후

at> 명령어 입력후 Enter 입력

at> 추가할 명령어 입력후 Enter 입력

완료되면 Ctrl + D

확인 : # at -l

취소 : # atrm <작업번호>



** 본문은 RedHat Fedora 리눅스서버&네트워크를 정리한 것으로 자세한 사항은 책에서 확인할 수 있습니다.