지구정복
[Linux] 02/04 | 리눅스 명령어(압축관련, 이클립스 사용, RPM 사용, YUM 사용, 저장공간, 서버관리) 본문
[Linux] 02/04 | 리눅스 명령어(압축관련, 이클립스 사용, RPM 사용, YUM 사용, 저장공간, 서버관리)
eeaarrtthh 2021. 2. 4. 17:08복습 및 배울내용
Linux 배포판 - CentOS
전체를 커스터마이징해서 여러가지를 교체할 수 있다.
1. 소스편집기
vi
nano
X-Window - gedit
X-Window System
* 서버에서는 X-Window를 쓰지 않는다. 느려지기 때문에
최초 설치할 때 '최소설치'나 '서버'를 설치하면 된다.
- gnome(그놈)
- KDE
- enlightment
개발툴 설치는 추가적인 사항
* Visual Studio
* eclipse
Max (Unix 기반)
* 리눅스는 사용자별로 기능이 다르다
* 사용자(root 밑에 존재, root가 가장 강력한 사용자)
로그인폴더 root /root
사용자 /home/사용자ID => 나중에 변경가능
adduser 사용자 생성 명령어
userdel 사용자 삭제
passwd 사용자 암호 수정 또는 새로 설정
su 권한 받기
su - 재로그인
허가권 chmod 허가권 파일/디렉터리명
기호모드
숫자모드
소유권 chonw 소유자.그룹 파일/디렉터리명
* 프로세스
ps 옵션 프로세스의 상태 확인
ps aux | grep 검색어 특정 프로세스 가동여부 확인
gedit &
ps aux | grep gedit
kill -9 3377
ps -ef
background 후면부에서 실행중
foreground 전면부에서 실행중
* 시스템이 자동적으로 실행하는 프로세스(데몬:deamon : d)
데몬은 시작과 종료를 systemctl 로 시작하는 명령어 사용(system control)
* atd : at의 d데
systemctl status atd
* crond
systemctl start
systemctl list-unit-files --type=service
데몬이 관리하는 system 파일들 목록 확인하기
* 프로세스 스케줄링
at
crontab
* java로 직접 스케줄링을 설정할 수 있다.
리눅스에서 파일 제공하는 것
1. 압축파일
1. 실행파일 제공
2. 소스파일 제공(c/c++소스)
컴파일 후에 설치하고 실행해야된다.
2. 패키지 관리 도구 - 패키지파일(인스톨파일)
- 배포판마다 다르다.
- RedHat
RPM을 사용(RedHat Package Management)
*.rpm
- Debian
DPKG(Debian Package)
*.dep
압축파일
zip
1. 묶음 : tar
1. 리눅스 명령어
1. 압축하기
#새로운 디렉터리 만들고 파일 4개를 만들고 tar형식으로 묶는다.
[master@localhost ~]$ ls
HelloWorld.class JFrameEx.class basic.txt h list.txt passwd test3.txt 공개 문서 비디오 서식
HelloWorld.java JFrameEx.java dir hosts p test1.txt text.txt 다운로드 바탕화면 사진 음악
[master@localhost ~]$ mkdir dir1
[master@localhost ~]$ cd dir1
[master@localhost dir1]$ ls
[master@localhost dir1]$ touch test1.txt test2.txt test3.txt test4.txt
[master@localhost dir1]$ ls
test1.txt test2.txt test3.txt test4.txt
#test로 시작하고 .txt로 끝나는 파일들을 test.tar라는 파일로 묶기
[master@localhost dir1]$ tar cvf test.tar test*.txt
test1.txt
test2.txt
test3.txt
test4.txt
[master@localhost dir1]$ rm -f test1.txt test2.txt test3.txt test4.txt
[master@localhost dir1]$ ls
test.tar
# 묶음 파일들을 확인
[master@localhost dir1]$ tar tvf test.tar
-rw-rw-r-- master/master 0 2021-02-04 10:17 test1.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test2.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test3.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test4.txt
#새로운 파일 하나를 추가로 묶고 싶을때
[master@localhost dir1]$ touch test5.txt
[master@localhost dir1]$ ls
test.tar test5.txt
[master@localhost dir1]$ tar uvf test.tar test5.txt
test5.txt
[master@localhost dir1]$ tar tvf test.tar
-rw-rw-r-- master/master 0 2021-02-04 10:17 test1.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test2.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test3.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test4.txt
-rw-rw-r-- master/master 0 2021-02-04 10:23 test5.txt
[master@localhost dir1]$ rm test5.txt
[master@localhost dir1]$ ls
test.tar
[master@localhost dir1]$ tar xvf test.tar
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
[master@localhost dir1]$ ls
test.tar test1.txt test2.txt test3.txt test4.txt test5.txt
# 압축하기
[master@localhost dir1]$ gzip test.tar
[master@localhost dir1]$ ls
test.tar.gz test1.txt test2.txt test3.txt test4.txt test5.txt
#압축풀기1
[master@localhost dir1]$ gzip -d test.tar.gz
[master@localhost dir1]$ ls
test.tar test1.txt test2.txt test3.txt test4.txt test5.txt
#압축풀기2
[master@localhost dir1]$ gzip test.tar
[master@localhost dir1]$ gunzip test.tar.gz
[master@localhost dir1]$ ls
test.tar test1.txt test2.txt test3.txt test4.txt test5.txt
#tar묶음 파일을 풀기
[master@localhost dir1]$ ls
test.tar test1.txt test2.txt test3.txt test4.txt test5.txt
[master@localhost dir1]$ gzip test.tar
[master@localhost dir1]$ ls
test.tar.gz test1.txt test2.txt test3.txt test4.txt test5.txt
[master@localhost dir1]$ rm -f test1.txt test2.txt test3.txt test4.txt test5.txt
[master@localhost dir1]$ tar xvzf test.tar.gz
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
[master@localhost dir1]$ ls
test.tar.gz test1.txt test2.txt test3.txt test4.txt test5.txt
#묶음과 동시에 압축하기
[master@localhost dir1]$ ls
test.tar.gz test1.txt test2.txt test3.txt test4.txt test5.txt
[master@localhost dir1]$ rm -f test.tar.gz
[master@localhost dir1]$ ls
test1.txt test2.txt test3.txt test4.txt test5.txt
[master@localhost dir1]$ tar cvzf test.tar.gz test*.txt
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
[master@localhost dir1]$ tar tvf test.tar.gz
-rw-rw-r-- master/master 0 2021-02-04 10:17 test1.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test2.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test3.txt
-rw-rw-r-- master/master 0 2021-02-04 10:17 test4.txt
-rw-rw-r-- master/master 0 2021-02-04 10:23 test5.txt
#압축을 풀 때 z는 생략가능하다.
[master@localhost dir1]$ rm -f test*.txt
[master@localhost dir1]$ ls
test.tar.gz
[master@localhost dir1]$ tar xvf test.tar.gz
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
2. 이클립스 사용하기
mv 다운로드/ecipse-jee-2020-12-R-linux-gtx-x86_64.tar.gz .
tar xvf clipse-jee-2020-12-R-linux-gtx-x86_64.tar.gz
cd eclipse/
./eclipse
c언어를 사용할 경우
gcc( gun c compiler ) 를 설치해야 한다. 무료 컴파일러이다.
3. RPM
RPM의 장점은
바이너리 파일
설치 / 삭제가 가능
검증
단점은
의존성 - RPM을 사용하려면 다른 것을 설치해야되는 것
RPM파일의 구성원칙 -
패키지이름-버전-패키지릴리즈.아키텍처.확장자
audit-2.4.2-fc19.x86_64.rpm
rpm도 옵션이있다.
i install (설치)
v view (확인)
h #
u update (업데이트)
e elimnate (제거)
q query (질문)
rpm프로그램을 검색하는 사이트
rpmfind.net
리눅스 파이어폭스를 킨다음에 아래 사이트에 들어간다.
rpmfind.net
그리고 검색창에 xterm 를 검색하고 아래 파일을 설치한다.
rpm을 설치해보자.
먼저 설치와 삭제는 root 계정으로 해야한다.
q옵션은 아무 사용자 계정이나 사용할 수 있다.
#rpm 설치된 목록 확인
rpm -qa | grep sendmail
#rpm 패키지의 정보확인하기
rpm -qi xterm-331-1.el8.x86_64.rpm
#이미 설치되어 있으면 이름만 적어도된다.
rpm -qi sendmail
#설치하기, 먼저 xterm-resize 버전을 먼저 다운받아야 한다.
su - root
123456
cd /home/master/다운로드/
rpm -ivh xterm-resize-331-1.el8.x86_64.rpm
rpm -ivh xterm-331-1.el8.x86_64.rpm
exit
#설치된 거 확인하기
rpm -qi xterm
rpm -qa | grep xterm
#설치된 파일 목록 확인
rpm -ql xterm
#파일 지우기
su - root
123456
rpm -evh xterm
rpm을 쓸 경우 의존성이 있는 파일들을 모두 설치해야된다.
이를 해결하는 것이 YUM이다.
4. YUM
YUM( Yellodog Updater Modified )
이를 사용하면
1. Maven과 비슷하게 원격에서 rpm파일을 검색 후 설치할 수 있다.
2. 의존성있는 패키지들까지 알아서 설치된다.
* 단 인터넷이 연결되어 있어야 한다.
root 계정으로 아래 명령어들을 실행한다.
#rpm이 들어있는 원격저장소 확인하기
yum repolist
#yum 저장소의 위치 확인 / 설정파일 확인
ls /etc/yum.repos.d/
cat /etc/yum.repos.d/CentOS-Linux-AppStream.repo
#yum 저장소에 있는 리스트 확인하기
yum list
yum list | grep xterm
yum search all xterm
#특정 패키지에 대한 정보 출력
yum info xterm
#yum으로 xterm을 설치하기 전에 아까 설치한 파일을 지운다. yum으로 설치하기
#의존성있는 패키지들까지 모두 설치된다.
rpm -evh xterm-resize
yum install xterm
#기존에 있는 패키지를 모두 업데이트하기
#업데이트 이후에는 리부팅을 하는게 좋다.
yum update
#설치된 목록을 다시 확인하고 지우기
rpm -qa | grep xterm
yum remove xterm
#자바 설치내용 확인 & yum으로 설치가능한 자바 패키지 확인하기
rpm -qa | grep java-
yum list java-*
#파일질라 설치하기
yum install epel-release : 또 다른 저장소 설치하기
yum list filezilla
yum info filezilla
yum repolist : 저장소 목록 확인
yum install filezilla
y
y
#파일질라 실행하기
#새로운 터미널 열어서 master계정으로 로그인한다.
filzilla
#설치된 포로그램의 목록확인
rpm -ql filezilla
비쥬얼 스튜디오 코드 다운로드 받기
# 비주얼스튜디오 코드 저장소 만들기
rpm --import https://packages.microsoft.com/keys/microsoft.asc
sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
yum repolist
# 비주얼 스튜디오 다운로드
yum install code
# master 터미널에서 실행시킨다.
code
5. 저장공간 관련 명령어
유틸리티 - 디스크를 누르면 아래와 같이 뜨고 총 107gb에서 4개의 디렉터리로 파티션되어 있다.
각각 포맷을 할 수 있다.
터미널에서 이를 확인해보자.
# 전체 하드디스크 용량 확인
df
df -BM : 메가바이트 단위로 확인
df -BG : 기가바이트 단위로 확인
# 특정 디렉터리의 용량확인
du -s /home/
du -sh /home/ : 기가바이트 단위로 용량 확인
du -sh /home/* : home 밑에 있는 각 디렉터리들 용량 표시
#외장의 장치(블록디바이스:하드 hdd, cd, usb 등)를 특정 디렉터리에 연결하는 것을
mount라고 한다.
마운트의 반대가 umount 라고 한다.
eject 는 umount되면서 cd가 제거되는 명령어이다.
mount할 때 FileSystem이 다르면 mount 가 되지 않는다.
FileSystem
Window
fat16 / fat32 / exFat : read and write 가능
NTFS : read만 가능
Linux
ext3, ext4
#마운트시킨 cd 확인하기
cd /run/medai/master/ : 현재 로그인계정이 master이므로 master안에 cd가 마운트되었다.
ls
ls CentOS-8-3-2011-x86_64-dvd/
#마운트된 상태 확인하기
mount
#umount및 cd제거하기
eject
하드디스크 하나 더 추가하기
하드디스크는 형태에 따라서
IDE - SATA (개인)
hd로 고유이름시작
SCSI - (서버)
고유이름은 sd로 시작, 첫번째 하드디스크는 sda, 두번째는 sdb ....
또한 sba는 sba1, sba2 ... 로 나눠질 수도 있다.
다시 master로 로그인 한다.
su - root
123456
fdisk -l : 현재 하드디스크에 대한 상태 출력
이렇게 하드디스크가 나눠져있으면 파티션해주고 포맷을 할 수 있다.
root 계정으로 바꿔준다.
#파티션 나누기
fdisk /dev/sdb
n : 새롭게 만든다
p : 기본형식으로 나눈다.
1 : 파티션 번호 정하기 1번부터 시작
(엔터) : 첫번째부분 용량
(엔터) : 두번째부분 용량
w : 저장하기
# 포맷하기
mkfs /dev/sdb
y
# 마운트하기
마운트를 시켜야지 사용할 수 있다.
mkdir /mnt/sdb
mount /dev/sdb /mnt/sdb/ : /dev/sdb디렉터리를 /mnt/sdb/디렉터리에 마운트시킨다.
mount
df : 하드디스크 용량 확인
# 실제 사용하기
cd /mnt/sdb/
touch test.txt
nano test.txt
Hello World
(ctrl + x), y
(엔터)
cat test.txt
#umount 시켜서 내용 지우기
umount -l /mnt/sdb
ls /mnt/sdb
#다시 마운트시키기
mount /dev/sdb /mnt/sdb/
ls /mnt/sdb/
6. 리눅스 서버 관리
원격에 있는 리눅스 서버를 관리하는 방법
리눅스에는 방화벽이 두 가지가 있다.
1. 파일시스템에 대한 보안
SELinux : 외부 접근에 대한 로그를 기록, 이를 풀어놓아야 한다.
sestatus -v : 설정상태를 확인할 수 있다.
mode는 3가지가 있다.
1. enforcing : 가동시킨다.
2. permissive : 로그 기록
3. disabled : 종료
/etc/selinux/config 안에 SELinux를 설정하는 파일이 있다.
2. 네트워크에 대한 보안
firewalld : 백그라운드에서 돌아가면서 관측을 한다.
톰캣이나 외부에서 접속이 필요할 때는 firewalld에 미리 등록을 해야한다.
*ssh
외부에서 리눅스를 관리하는 여러가지 방법 중에 하나
관리하는 방법은 두 가지이다.
GUI vnc서버(X-Window를 외부에서 켜서 하는 것) - 속도는 느림
CUI telnet : 명령프롬프트 모드로 원격에 접속해서 사용 - 보안에 좋지 않음
ssh(secure shell) : 보안성 있게 명령어를 통해 원격에서 리눅스를 관리한다.
ssh를 사용하려면 두 가지가 있어야 한다.
1. server - openssh가 설치되있어야한다.(이미설치) 포트번호 22가 개방되있어야 한다.
2. client - openssh-clients(ssh) 명령어로 윈도우에서 리눅스서버 접속가능하다.
- putty를 통해서 openssh에 접속해서 리눅스를 원격으로 관리
이 두개를 풀어놓아야지 외부에서 접근을 할 수 있다.
먼저 파일시스템 보안을 풀어준다.
sestatus
vi /etc/selinux/config
기존 enforcing 은 남겨놓고 그 밑에 쓴다.
:wq
(리부팅하기)
sestatus
아래처럼 바뀐것을 알 수 있다.
다음으로 네트워크 보안을 풀어준다.
# firewalld가 실행중인지 확인하기
systemctl status firewalld
firewall-cmd --state
# firewalld에 등록되어있는 것들 확인하기
firewall-cmd --list-service
# ssh 설치여부와 실행여부 확인하기
systemctl status sshd
rpm -qa | grep openssh
# ssh에 접속하기
ssh localhost
yes
123456
윈도우에서 리눅스서버 접속하기
putty를 실행한다.
그리고 ifconfig로 ip를 알아낸다.
밑에 Saved Sessions에 ip주소를 저장하면 다음에 자동으로 ip주소가 적혀진다.
master
123456
FTP 서버에 접속해보기
221.151.185.221
2015
class4
******