Linux (1)
VirtualBOx Network 종류
- 실제컴퓨터-HOST PC
- 가상컴퓨터-GUEST PC
근거리 통신망을 빠져나가려면(WAN으로 나가려면) GATEWAY가 필요하다.
들어올 때는 router(라우터)를 통해서 내부 HOST PC를 연결해 준다.
하나의 HOST PC 안에서도 GUEST PC를 둘 수 있다.
HOST PC와도 통신이 가능해야 하고, 이 GUEST PC들도 외부(WAN)와 통신이 가능해야 한다.
- NAT
- 내부의 GUEST PC간의 통신 안됨, GUEST PC가 WAN으로 나가는 것은 가능하나 들어오려면 포트포워딩이 필요하다.
- GUEST PC가 HOST PC로의 통신 안됨, HOST PC가 GUEST PC에 접속하려면 포트포워딩을 해야한다.
- (포트포워딩: 몇번 포트로 들어오면 어느 피시의 포트로 연결한다는 설정)
- NAT Network
- GUEST PC간의 연결이 가능하다. GUEST PC들이 하나의 네트워크를 구성한다.
- Host Only Adapter
- GUEST PC에서 외부로 통신할 방법이 없다.
- Adapter Bridge
- 외부에서 직접 들어올 순 없다.
- Internal Network
- 게스트 피시들만 연결이 가능하다.
일반적인 환경에서는 주로 Host Only Adapter와 NAT를 혼용해서 사용한다.(어댑터1, 2 두개 사용)
리눅스의 종류
-
레드헷(RedHat) 계열 센트OS(CentOS), 페도라(Fedora) 등
RPM 기준: RPM(Red Hat Package Manager) 혹은 YUM((yello-dog updater modifier)
-
데비안(Debian) 계열 우분투(Ubuntu), 민트리눅스(Linux Mint) 등
DEB 방식을 사용: DPKG(Debian Package Manager) 혹은 APT(Advanced Package Tools)
가상머신 생성과 리눅스 설치
VirtualBox 사용 CentOS 7 설치 환경설정-입력-가상머신 의 호스트 키 조합을 설정한다.
-
- 가상머신 설정
- Skip Unattended Installation: 체크하지 않을 경우 제품키 요구한다.
- 기본 메모리는 많을수록 좋지만 시스템 메모리 상활을 고려하여 선택한다.
- 프로세서 수는 시스템의 논리적 프로세서의 수 이하로 설정하도록 한다.
-
- CentOS 설치 설정
- 소프트웨어 선택 - 개발 및 창조를 위한 워크스테이션
- 추가 선택 - 추가 개발, 호환성 라이브러리, 개발용 툴, 시스템 관리 도구
-
- 수동 파티션 설정
- (LVM: 소프트웨어 레벨에서 레이드를 묶어주는 시스템)
-
- 마운트 지점 swap
- 가상 메모리 (리눅스 시스템은 메모리에 공간이 있으면 가상메모리 사용하지 않는다.)
리눅스의 기본 파일시스템은 ext이다.
-
- 네트워크 설정
- 10.0.2.* : VirtualBox에서 제공하는 NAT 서버 주소
- 도메인 네임 서비스: 도메인 주소를 IP주소로 변환해 준다.
- 도메인 네임 서비스를 제공하는 서버 DNS(Domain Name Server)
로그인과 로그아웃
쉘(Sheel): 사용자가 입력한 명령을 머신이 실행할 수 있게 번역해주는 통역자이다. 로그인 시 쉘을 획득한다.
exit
,logout
,Ctrl
+D
: 로그아웃(쉘 종료)
프롬프트 - 쉘을 획득했음을 나타낸다.
$
(커런시 심볼;Currency symbol) : 일반 권한
#
(해시 심볼;Hash symbol) : 관리자 권환
사용자 권한 획득
sudo(system user do) 명령: 관리자 권한 실행
su
: 특정 계정의 권한 획득
sudo su -
: 이전 획득한 sheel에 root sheel을 추가 획득
‘su’ 또는 ‘su 계정’ 명령은 권한만 획득하고 ‘su -‘ 또는 ‘su - 계정’ 명령은 권한을 획득함과 동시에 사용자의 프로파일을 읽어 들여 사용자 환경변수를 재설정 함으로써 마치 해당 계정으로 로그인 한 것과 같은 환경을 제공한다.
모든 작업이 종료되고 나면 획득했던 권한을 해제해야 한다. (exit, logout 혹은 Ctrl+D)
~
: 현재 사용자의 홈 디렉토리 (홈 디렉토리의 파일을 참조해야 할 경우 사용한다.)
- etc: 현재 디렉토리 하위의 etc (./ect) 와 같음
- /etc: 절대경로(루트 디렉토리 하위의 etc)
- ~/etc: 절대경로(홈 디렉토리 하위의 ect)
~[계정명]
: 해당 계정의 홈 디렉토리
-
- 관련 명령어
whoami
: 현재 획득권한을 확인who
: 현재 시스템에 접속되어 있는 사용자 목록을 출력id
사용자 : 사용자 계정에 대한 정보 출력(사용자id, 소유그룹id, 소속그룹id 등)
:0은 xwindow의 연결을 나타낸다. (xwindow는 텍스트로 명령을 내리는 것이 아닌 gui로 출력)
pst/0은 0번 가상 콘솔을 나타낸다.
SSH 설치 및 운용
SSH(Secure Shell)은 네트워크의 다른 컴퓨터에 로그인 할 수 잇으며 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 프로그램이다.
SSH 설치
설치 여부 확인
실제 설치
systemctl(시스템 컨트롤)
Windows 시스템에서 ssh서버에 접속하고자 한다면 별도의 터미널 프로그램이 필요하다.
PuTTY 등 여러 프로그램이 있지만 teraterm이라는 ssh 클라이언트 프로그램을 사용한다. (default 포트는 22이다.)
파일 업로드는 scp를 이용하고 디렉토리는 불가능하여 압축을 하거나 해서 해야 한다.
시스템 종료 및 재부팅
옵션 | 설명 |
---|---|
-t secs | 다른 런레벨로 바뀌기 전에 경고 메시지와 kill 시그널 사이의 기다리는 시간 설정 |
-k | 실질적으로 shutdown을 하지는 않고 모든 사용자에게 경고 메시지만 보냄 |
-r | 재시작 |
-h | 시스템 종료 |
-f | 빠른 재시작 |
-c | shutdown 취소 |
시간형식 | 설명 |
---|---|
now | 지금 즉시 |
10 | 10분 뒤에 |
13:00 | 13:00에 |
리눅스 시스템의 명령체계
Tab 두번 : 해당 문자로 시작하는 명령어 검색
Tab 한번 : 해당 객체가 하나일 경우 디렉토리 자동완성
-
- 환경변수
- 시스템을 운용하고 관리하기 위해 매크로화 시킨 값
- 쉘이 운영체제를 사용하기 위해서 필요한 변수
$PATH
- 사용자가 명령을 실행할 때, 해당 명령에 대한 실행파일을 검색하고 실행할 때 사용되는 변수
- 등록된 경로는 ‘:’로 구분된다.
사용자 변수 지정은 변수 그대로 넣지만 변수를 참조 할 때는 $(커린시 심볼)을 붙여야 인식한다.
리눅스의 명령구성
-l
: 긴 형태로 출력(자세히) (--format=long
과 같다)
-la
: 모든 파일 (-l, -a 구분해서 명령할 수도 있음)
파일 복사 등과 같이 대상의 순서를 지켜줘야 하는 명령도 있음
Ctrl
+l
: clear와 같은 기능
리눅스 디렉토리 구성
최상위 디렉토리
- dev: 물리적 장치 등을 파일화하여 관리
- 케릭터 타입 디바이스 : 데이터의 입출력만
- 블록 디바이스: 데이터를 저장
- etc: 시스템 환경설정 파일 및 부팅과 관련된 여러가지 스트립트 파일, 시스템 운영에 매우 중요한 파일들이 존재하므로 임의로 삭제하거나 수정하면 안된다.
- bin: 실행파일
- sbin: 시스템 실행파일
- home: 일반 사용자의 홈 디렉토리가 모여 있다.
- proc: 프로세서와 시스템의 전반적인 정보가 저장
- root: 시스템 관리자 계정의 홈 디렉토리
- media, mnt 장치가 마운트되는 디렉토리(요즘은 media)
- usr: 주로 응용프로그램이 들어감
- var: log등 가변적인 파일
- lost+found: 유실된 파일
man 페이지
명령에 대한 메뉴얼 + 설치된 언어의 함수들 설명 등
vi 편집기의 편집모드와 유사한 동작을 한다.(편집불가)
-
숫자
↑
↓
,PgUp
,PgDn
: 페이지 이동 -
g
: 첫 라인 -
숫자+
g
: 숫자 라인으로 -
G
(Shift
+g
) : 마지막 라인 -
/
검색어 : 현재 커서 아래로 검색n
:다음,N
(Shift
+n
):이전 -
?
(Shift
+/
)검색어 : 현재커서 위로 검색n
:다음,N
(Shift
+n
):이전 -
q
: 나가기
whereis를 사용하면 해당 파일의 위치와 메뉴얼의 종류, 위치를 확인할 수 있다.
passwd는 1, 5번 섹션이 존재 -> man 5 passwd
less
: 파일 내용 보기 (메뉴얼이 less를 이용해 실행되므로 단축키를 그대로 사용 가능)
파일 및 디렉토리 관련 명령
Ctrl
+c
강제종료
Ctrl
+z
일시정지
디렉토리 및 파일의 목록출력
절대경로
/
: root~
: 현재 유저의 홈 디렉토리~계정명
: 계정 유저의 홈 디렉토리
상대경로
.
: 현재 디렉토리..
: 한단계 부모 디렉토리
short | long | 설명 |
---|---|---|
-l | –format=long | 특정 포맷의 형태로 목록 출력 |
-i | –inode | 파일 및 디렉토리의 inode 값을 출력 |
-a | –all | 모든 파일 및 디렉토리를 출력 |
-R | –recursive | 하위 디렉토리가 포함한 파일 및 디렉토리 목록도 출력 |
-F | —-classify | 파일의 형식을 알리는 문자를 각 파일 및 디렉토리명 뒤에 추가 |
- -i
- inode값을 출력(inode: 블럭상의 위치, 파일 번호)
- 모든 파일과 디렉토리는 inode를 붙여 관리한다. 즉 파일명은 inode의 별칭이다.
디렉토리의 이동
-
pwd
: 현재 디렉토리 출력 -
cd
: 디렉토리 이동
윈도우 시스템에는 확장자, 폴더, 디렉토리가 있다.
posix에서는 ‘/etc/fstab’ 전체가 파일명, 즉 루트로 부터의 경로 전체가 파일명이다.
/etc/ssh 파일 일수도 디렉토리 일수도 있다. 파일도 파일, 디렉토리도 파일이라고 한다.
차이점은 파일은 DATA를 가지고 디렉토리는 파일 또는 디렉토리 목록을 가진다.
/etc/ssh/: 경로뒤에 /붙으면 디렉토리라고 쉘에게 명확히 알려준다.
파일의 복사
cp(copy)
소스가 여러게 올 수 있으나 마지막은 디렉토리여야 한다
옵션 | 설명 |
---|---|
-a | 원본 파일의 속성, 링크 정보들을 그대로 유지하면서 복사. -dpR 옵션의 사용과 같으며 관리자 계정만이 사용가능 |
-b | 동일한 파일이 존재 시 백업본(파일명~)을 생성 |
-f | 동일한 파일이 존재 시 삭제 후 복사 |
-i | 동일한 파일이 존재 시 덮어씌울 것인지 물음 |
-p | 원본파일의 소유주, 그룹, 권한, 시간정보를 그대로 복사 |
-r | 디렉토리 복사옵션 (디렉토리의 하위 디렉토리와 파일을 함께 복사) |
-l | 복사 원본이 파일인 경우, 하드 링크로 복사 |
-s | 복사 원본이 파일인 경우, 심볼릭 링크로 복사 |
-u | 동일한 파일이 존재 시 복사하고자 하는 파일과 비교하여 최신 파일인 경우 복사 |
-v | 복사되는 과정을 보여줌 |
- -l: (하드 링크) inode 데이터에 별칭을 하나더 붙인다.
- -s: (심볼릭 링크) 실제 파일이 아니라 바로가기, 실제로는 ln명령을 쓴다.
파일 및 디렉토리의 이동
mv(move)
이름변경에도 사용
옵션 | 설명 |
---|---|
-b | 동일한 파일이 존재 시 백업본(파일명~)을 생성 |
-f | 동일한 파일이 존재 시 삭제 후 이동 |
-i | 동일한 파일이 존재 시 덮어씌울 것인지 물음 |
-u | 동일한 파일이 존재 시 복사하고자 하는 파일과 비교하여 최신 파일인 경우 이동 |
-v | 이동되는 과정을 보여줌 |
-S suffix | 파일명 뒤에 꼬리말을 붙여서 이동 |
cat ~/.bashrc 를 보면 rm, cp, mv에 -i 옵션이 들어간다! 즉, -f가 들어가도 -i옵션이 우선된다. (root 계정이기에) 가능하면 위험하기에 주의
파일 및 디렉토리의 삭제
rm(remove)
옵션 | 설명 |
---|---|
-f | 강제로 삭제. 대상이 없는 경우 메시지 출력 안함 |
-i | 삭제할 때마다 삭제할 것인지 물음 |
-r, -R | 디렉토리 내부의 모든 내용 삭제 |
-v | 삭제되는 과정을 보여줌 |
디렉토리의 생성 및 삭제
mkdir(make dir)
옵션 | 설명 |
---|---|
-p | 경로상 디렉토리가 없으면 만들어서 생성 |
rmdir: 디렉토리가 비어야 디렉토리 삭제 가능
디렉토리 삭제 시 rm의 -d 또는 –directory 쓰자.
파일의 생성
옵션 | 설명 |
---|---|
-a | 파일의 access time만 변경 |
-c | 파일이 존재할 경우 새로 생성하지 않음 |
-d | 시간을 지정 |
-m | 파일의 modify time만 변경 |
-f file | 현재 시간 대신 지정한 파일의 시간으로 변경 |
-t MMDDhhmm | 현재 시간 대신 지정한 시간으로 변경 |
Reference
- 이 포스트는 SeSAC 인공지능 SW 개발자 양성 과정 - 김기희 강사님의 강의내용을 정리한 것입니다.
댓글남기기