일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- scss
- 공부
- 크롤링
- Sass
- 이클립스
- RPA
- maven
- 톰캣오류
- css
- 개발공부
- spring boot
- scss설치
- 톰캣
- recorder capture
- Automation Anywhere
- Nodejs
- tomcat
- vscode
- VSCODE단축키
- vs code
- visual studio code
- 툴공부
- A360
- npm
- Spring Boot Maven
- sass설치
- Today
- Total
Bomi is worldstar
[리눅스] Chapter4 > 4.4 리눅스 관리자를 위한 명령어 본문
4.4 리눅스 관리자를 위한 명령어
4.4.1 프로그램 설치를 위한 RPM
CentOS에서 패키지(프로그램 모음 또는 꾸러미)를 설치하는 데 가장 많이 사용되는 것은 RPM과 DNF(또는 YUM)이다.
DNF(또는 YUM)이 나오기 전에는 주로 RPM이 사용되었으나, DNF는 RPM의 개념과 기능을 포함하기 때문에 최신 버전 CentOS에서는 DNF를 사용하면 된다.
RPM
초창기 리눅스의 경우 새로운 프로그램을 설치하기가 꽤 어려웠다.
이 점을 개선하여 Red Hat사에서 Windows의 setup.exe와 같이 프로그램 설치 후 바로 실행할 수 있는 설치 파일을 제작한 게 *.rpm이며 이것을 '패키지'라고 부른다.
파일의 의미
rpm의 형식은 일반적으로 다음과 같다.(패키지에 따라 형식이 다를 수 있다.)
패키지이름-버전-릴리스번호.CentOS버전.아키텍처.rpm
CentOS 8 DVD에 포함된 gzip 확인해보기 (gzip-1.9-4.el8.x86_64.rpm)
구분 | 값 | 설명 |
패키지이름 | gzip | 패키지(프로그램)의 이름이다. |
버전 | 1.9 | 대부분 2자리 또는 3자리 수로 구성된다. 주 버전, 부 버전, 패치 버전 순서며 당연히 숫자가 높을 수록 최신이다. |
릴리즈 번호 | 4 | 문제점을 개선할 때마다 붙여지는 번호다. |
CentOS 버전 | el8 | CentOS 8 에서 배포할 경우 붙여진다. el8은 Redhat Enterprise Linux 8을 의미한다. |
아키텍처 | x86_64 | x86 계얼의 64bit CPU를 의미한다. 즉, 이 파일을 설치할 수 있는 CPU를 뜻한다. |
※ 참고) 아키텍처 부분에 로 수 있는 것은 여러 개 있다. (몇 개만 적고 나머지는 책 참고 ...)
src : 소스 파일 패키지. 설치 후에는 컴파일을 별도로 해줘야 한다.
noarch : 모든 CPU에 설치 가능하다. (NO ARCHitecture)
자주 사용하는 rpm 명령어 옵션
설치
ㅇ rpm -Uvh 패키지파일이름.rpm
명령어 | 설명 |
U(대문자) | 기존에 패키지가 설치되지 않았다면 일반적인 설치를 진행하고, 패키지가 설치되어 있다면 업그레이드 한다. (설치되어 있을 경우 i 옵션은 오류가 발생하므로 U 옵션이 더 편하다.) |
v | 설치 과정 확인 |
h | 설치 진행 과정을 #기호로 화면에 출력 |
삭제
ㅇ rpm -e 패키지 이름
명령어 | 설명 |
e | erase(지움)의 약자 |
이미 설치된 패키지 조회
명령어 | 설명 |
rpm -qa 패키지이름 | 시스템에 패키지가 설치되어있는지 확인 |
rpm -qf 파일의절대경로 | 이미 설치된 파일이 어느 패키지에 포함된 것인지 확인 |
rpm -ql 패키지이름 | 특정 패키지에 어떤 파일들이 포함되었는지 확인 |
rpm -qi 패키지이름 | 설치된 패키지의 상세 정보 |
※ 참고) 중요!
CentOS에서는 설치 시 RPM보다 더 편리한 DNF를 제공하므로 RPM을 사용할 일이 많이 줄엇지만, 이미 설치된 패키지 정보를 보는 데는 앞에 나온 4가지 질의 옵션을 자주 사용한다.
아직 설치되지 않은 rpm 파일 조회
명령어 | 설명 |
rpm -qlp 패키지파일이름.rpm | 패키지 파일에 어떤 파일들이 포함되었는지 확인 |
rpm -qip 패키지파일이름.rpm | 패키지 파일의 상세 정보 |
RPM의 단점
가장 큰 문제점은 '의존성'이다.
간단한 예로 CentOS의 기본 웹 브라우저인 Firefox는 당연히 X 윈도상에서 가동된다.
그런데 X 윈도가 설치되지 않은 상태에서 Firefor를 설치한다면?
Firefor는 X 윈도에 의존성이 있으므로 설치가 되지 않을 것이다.
※ 참고) 강제로 패키지를 설치하는 '--force' 옵션과 의존성을 무시하고 설치하는 '--nodeps'옵션도 사용할 수 있으나, 이러한 옵션은 정상 설치를 보장할 수 없으므로 주의해서 사용해야 한다.
4.4.2 편리하게 패키지를 설치하는 DNF
DNF는 RPM과 별도라기보다 RPM 패키지를 설치하는 편리한 도구라고 생각하면 된다.
※ 참고)
CentOS 7까지는 패키지 설치 관리자로 YUM을 사용했으나, CentOS 8부터는 YUM의 기능이 대폭 개선된 DNF를 주로 사용한다.
DNF
ㅇ dnf 명령은 rpm 명령의 패키지 의존성 문제를 완전히 해결해준다.
ㅇ 즉 특정 패키지를 설치하고자 할 때, 의존성이 있는 다른 패키지를 자동으로 먼저 설치하는 인공지능을 갖춘 명령어다.
ㅇ dnf는 CentOS 프로젝트가 제공하는 rpm 파일 저장소에서 설치할 rpm파일 뿐만 아니라 그 파일과 의존성이 있는 다른 rpm 파일까지 인터넷을 통해 모두 알아서 다운로드한 후 자동으로 설치까지 해준다.
※ 참고) 저장소의 URL은 /etc/yum.repos.d/ 디렉토리 파일에 저장되어 있다.
DNF의 기본 사용법
ㅇ 기본 설치 방법
=> dnf -y install 패키지이름
=> -y 옵션은 사용자에게 yes/no를 묻는 부분에서 무조건 yes를 입력한 것으로 간주하는 명령어 이다.
주의할 점은 rpm 패키지 파일이 아닌 패키지 이름까지만 적어야 한다는 것이다.
예를들어 mc패키지(mc-4.8.19-9.el8-x86_64.rpm) 파일인 경우 dnf -y install mc까지만 입력해야 한다.
ㅇ rpm 파일 설치 방법
=> dnf install rpm파일이름.rpm
=> 갖고 있는 rpm파일을 설치할 때는 rpm -Uvh rpm파일이름.rpm 명령 대신 사용한다.
ㅇ 업데이트 가능한 목록 보기
=> dnf check-update
=> 시스템에 설치된 패키지 중에서 업데이트가 가능한 패키지의 목록을 출력한다.
이 명령을 실행하기 전에 dnf clean all 명령을 실행해서 기존의 dnf 관련 임시 파일을 지우는 것이 좋다.
ㅇ 업데이트
=> dnf udpate 패키지이름
=> dnf install 패키지이름 명령을 실행하면 이미 설치되어 있는 패키지는 업데이트 하기 때문에 자주 사용할 필요가 없다.
=> dnf update 명령만 실행하면 모든 패키지 파일을 업데이트 가능하면 하기 때문에 웬만하면 하지 않도록 한다.
ㅇ 삭제
=> dnf remove 패키지이름
ㅇ 정보 확인
=> dnf info 패키지이름
dnf는 설치하려는 사이트에 문제가 생길경우 다른 미러 사이트에 접속을 시도 한다.
터미널 창에 "Tring other mirror"라고 뜨면 정상적으로 접속되는 미러 사이트를 찾는 과정임을 알아두자.
DNF 고급 사용법
ㅇ 패키지 그룹 설치
=> dnf groupinstall "패키지그룹이름"
=> 패키지 그룹에 포함된 패키지들을 통째로 설치할 때 사용
=> 패키지 그룹의 종류는 dnf grouplist 명령으로 확인
=> 패키지 그룹의 이름은 띄어쓰기가 많으므로 큰 따옴표("")안에 써야 한다.
ㅇ 패키지 리스트 확인
=> dnf list 패키지 이름
=> CentOS에서 제공하는 패키지 리스트를 보여준다.
=> 일례로 dnf list all 명령을 실행하면 모든 패키지 목록을 보여준다.
=> dnf list httpd* 명령을 실행하면 httpd라는 이름이 들어간 패키지 목록을 보여준다.
=> dnf list available 명령을 실행하면 현재 설치 가능한 목록을 모두 보여준다.
ㅇ 특정 파일이 속한 패키지 이름 확인
=> dnf provides 파일이름
=> 특정 파일이 어느 패키지에 들어 있는지 확인할 수 있다.
=> 예를 들어 dnf provides ifconfig 명령은 ifconfig 명령이 들어 있는 패키지를 알려준다.
ㅇ GPG 키 검사 생략
=> dnf install --nogpgcheck rpm파일이름.rpm
=> CentOS 8에서 인증되지 않은 rpm 파일을 dnf install로 설치하면 설치되지 않는 경우가 있기 때문에
'--nogpgcheck' 옵션을 사용하여 키 인증을 생략하여 설치한다.
ㅇ 기존 저장소 목록 지우기
=> dnf clean all
=> 기존에 다운로드 한 패키지 목록을 지운 다음 dnf install 패키지이름 명령을 실행하면 패키지 목록을 다시 다운로드한다.
DNF의 작동 방식과 설정 파일
dnf 명령어와 관련된 설정 파일은 /etc/yum.conf와 /etc/yum.repos.d/ 디렉토리가 있다.
중요한 것은 /etc/yum.repos.d/ 디렉토리에 있는 여러 개의 파일이다.
각 파일에는 dnf 명령을 실행했을 때 인터넷에서 해당 패키지 파일을 검색하는 네트워크 주소가 들어있기 때문이다.
실습은 pass..
4.4.3 파일 압축과 묶기
파일 압축
리눅스에서 많이 볼 수 있는 압축 파일의 확장명은 xz, vz2, gz, zip, Z 등이다.
최근에는 압축률이 좋은 xz나 bz2를 많이 사용하는 추세이다.
xs
확장명 xs로 압축하거나 풀어줌.
비교적 최신 압축 명령이며 압축률이 뛰어난다.
사용 예 | 설명 |
xz 파일이름 | '파일 이름'을 압축 파일인 '파일이름.xz'로 만들며 기존 파일은 삭제됨 |
xz -d 파일이름.xz | '파일이름.xz' 압축 파일을 일반 파일인 '파일이름'으로 만듬 |
xz -l 파일이름.xz (l은 list를 의미) | '파일이름.xz' 압축 파일에 포함된 파일 목록과 압축률 등을 출력 |
xz -k 파일이름 (k는 keep을 의미) | 압축 후에 기존 파일을 삭제하지 않고 그대로 둠 |
bzip2
확장명 bz2로 압축하거나 풀어줌.
사용 예 | 설명 |
bzip2 파일이름 | '파일이름'을 압축 파일인 '파일이름.bz2'로 만듬 |
bzip2 -d 파일이름.bzip2 | '파일이름.bz2' 압축 파일을 일반 파일인 '파일이름'으로 만듬 |
bunzip2
확장명 bz2의 압축을 풀어줌
'bzip2 -d'와 동일한 명령
gzip
확장명 gz로 압축하거나 풀어줌
사용 예 | 설명 |
gzip 파일이름 | '파일이름'을 압축 파일인 '파일명.gz'로 만듬 |
gzip -d 파일이름.gz | '파일이름.gz' 압축 파일을 일반 파일인 '파일이름'으로 만듬 |
gunzip
확장명 gz로 압축하거나 풀어줌
'gzip -d'와 동일한 명령
zip
Windows용과 호환되는 확장명 zip으로 압축하거나 풀어줌
사용 예 | 설명 |
zip 생성할파일이름.zip 압축할파일이름 | 압축할파일이름을 '새로생성할파일이름.zip'으로 만듬 |
unzip
Windows용과 호환되는 zip으로 묶은 압축 파일을 풀어줌
사용 예 | 설명 |
unzip 압축파일이름.zip | '압축파일이름.zip'의 압축을 풀어줌 |
파일 묶기
리눅스 에서는 Windows와 다르게 '파일 압축'과 '파일 묶기'를 원칙적으로 별개의 프로그램으로 실행한다.
파일 묶기 명령어는 tar이며 묶인 파일의 확장자도 tar이다.
tar
구분 | 명령어 | 설명 |
동작 | c(소문자) | 새로운 묶음을 만듬 |
x | 묶인 파일을 풀어줌 | |
t | 묶음을 풀기 전에 묶인 경로를 보여줌 | |
C(대문자) | 묶음을 풀 때 지정된 디렉터리에 압축을 풀어줌. 지정하지 않으면 묶을 때와 동일한 디렉토리에 묶음이 풀림 |
|
옵션 | f(필수) | 묶음 파일 이름 지정. 원래 tar는 테이프 장치 백업이 기본임(생략하면 테이프로 보내짐) |
v | visual의 의미로 파일이 묶이거나 풀리는 과정을 보여줌 (생략 가능) | |
J(대문자) | tar + xz | |
z(소문자) | tar + gzip | |
j(소문자) | tar + bzip2 |
사용 예 | 설명 |
tar cvf my.tar /etc/sysconfig/ | 묶기 |
tar cvfJ my.tar.xz /etc/sysconfig/ | 믂기 + xz압축 |
tar cvfz my.tar.gz /etc/sysconfig/ | 묶기 + gzip압축 |
tar cvfj my.tar.bz2 /etc/sysconfig/ | 묶기 + bzip2압축 |
tar tvf my.tar | 파일 확인 |
tar xvf my.tar | tar 풀기 |
tar cxvf newdir my.tar | newdir에 tar풀기 |
tar xfJ my.tar.xz | mz 압축 해제 + tar 풀기 |
tar xfz my.tar.gz | gzip 압축 해제 + tar 풀기 |
tar xfj my.tar.bz2 | bzip2 압축 해제 + tar 풀기 |
4.4.4 파일 위치 검색
리눅스에서 특정 파일의 위치를 검색하는 명령어는 find가 가장 많이 사용된다.
find 경로 옵션 조건 action
옵션 : -name, -user(소유자), -newer(전, 후), -perm(허가권), -size(크기)
action : -print(기본값), -exec(외부 명령 실행)
기본 사용 예 | 설명 |
find /etc -name "*.conf" | '/etc' 디렉토리 하위에 확장명이 *.conf인 파일 검색 |
find /home -user centos | '/home' 디렉토리 하위에 소유자가 centos인 파일 검색 |
find ~ -perm 644 | 현재 사용자의 홈디렉토리 하윙 ㅔ허가권이 644인 파일 검색 |
find /usr/bin -size +10k -size -100k | /usr/bin 디렉토리 하위에 파일 크기가 10KB~100KB인 파일 검색 |
고급 사용 예 | 설명 |
find ~ -size 0k -exec ls -l {} \; | 현재 사용자의 홈 디렉토리 하위에 파일 크기가 0KB인 파일의 목록을 상세히 출력 |
find /home -name "*.swp" -exec rm {} \; | /home 디렉토리 하위에 확장명이 *.swp인 파일 삭제 |
※ 참고)
여기서 \; 는 외부 명령어인 -exec의 끝을 표시하는 것이다.
{]는 외부 명령어인 -exec의 앞부문을 의미한다. (it과 to부정사 느낌)
which 실행파일 이름
Path에 설정된 디렉토리만 검색
절대 경로를 포함한 위치 검색
검색하려는 모든 파일이 실행 파일인 경우 유용하게 쓰인다.
whereis 실행파일 이름
실행 파일 및 소스, man 페이지 파일까지 검색
locate 파일이름
파일 목록 데이터베이스에서 검색하기 때문에 매우 빠르고 유용하지만, updatedb 명령을 1회 실행해야 사용할 수 있음.
updatedb 명령 실행 이후에 설치된 실행 파일은 찾을 수 없으므로, 다시 updatedb 명령을 실행해야 찾을 수 있음.
특정 파일의 위치를 찾는데 사용된다.
4.4.5 시스템 설정
나중에 자세히 배우기 때문에 여기서는 넘어감
네트워크 설정
nmtui 명령어
방화벽 설정
firewall-config 명령어.
외부에 서비스하기 위해 포트를 열 때 사용한다.
네트워크 서버를 구축할 때 자주 사용하는 명령어이다.
서비스(데몬) 설정
ntsysv 명령어.
서비스(데몬)의 시작, 중지, 재시작 및 사용 여부를 설정할 때 사용한다.
dnf -y install ntsysv 명령으로 설치해야 한다.
4.4.6 CRON과 AT
cron
주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템 작업을 예약해놓는 것
crond : cron과 관련된 데몬(서비스)
/etc/crontab : cron과 관련된 파일
ㅇ 형식 : 분(0~59) 시(0~23) 일(1~31) 월(1~12) 요일(0~6) 사용자 실행명령
ㅇ ex) 00 05 1 * * root cp -r /home /backup
cron의 경우 주기적으로 실행할 내용을 디렉토리에 넣어놓고 작동한다.
ㅇ /etc/crontab 파일 관련 디렉토리
=> 시간별 : /etc/cron.hourly/
=> 일별 : /etc/cron.daily/
=> 주별 : /etc/cron.weekly/
=> 월별 : /etc/cron.monthly/
ㅇ ex) 01 * * * * root run-parts /etc/cron.hourly
=> 매 시간 1분에 /etc/cron.hourly 디렉토리 안의 명령들을 자동으로 실행한다.
run-parts 디렉토리 명령어는 디렉토리 안의 명령을 모두 실행하는 것
at
일회성 작업을 자동으로 실행할 수 있도록 시스템 작업을 예약해놓는 것
at 예약하는 순서
1. 예약 : at 시간
=> ex) at 3:00am tomorrow : 내일 새벽 3시
=> ex) at 11:00pm January 30 : 1월 30일 오후 11시
=> ex) at now + 1hours : 1시간 후
2. at> 프롬프트에 예약 명령어 입력 후 [Enter]
3. 완료되면 [Ctrl + D]
4. 확인 : at -l (제일 앞에오는 숫자가 작업번호이다.)
5. 취소 : atrm 작업번호
'■ Server' 카테고리의 다른 글
[리눅스] 참고로만 알아둘 명령어 (0) | 2021.02.15 |
---|---|
[리눅스] Chapter4 > 4.5 네트워크 관련 설정과 명령어 (자음 문제 형식) (0) | 2021.02.14 |
[리눅스] Chapter4 > 4.3 사용자 관리와 파일 속성 (0) | 2021.02.12 |
[리눅스] Chapter4 > 4.2 리눅스 기본 명령어 (0) | 2021.02.12 |
[리눅스] Chapter4 > 4.1 리눅스를 운영하는 데 있어서 먼저 알아야 할 개념 (0) | 2021.02.11 |