리눅스 수업을 중도에 들어왔기 때문에 지난 차시에 진행한 설치파일을 전달해주셨음
CentOs7-1.zip 파일을 받아서 vmware 설치된 경로인 Virtual Machines폴더에 압축해제.
그 안의 CentOS7-1.vmx 파일을 실행하여 사용함
안내 얼럿이 뜨는데 I copyed it 선택.
그런데 putty 연결이 되질 않았다
제어판 > 네트워크 및 인터넷 > 네트워크 연결
확인해보니 vmware가 설치되면 자동으로 어댑터(이더넷) vmnet 1, 8번이 추가되어야 하는데 생성되지 않았다. 재설치를 했는데도 생성되지 않아, 시간상 다른 PC로 옮겨 vmware를 설치하고 진행함.
vmnetcfg.exe 설치파일을 전달받아서
C:\Program Files (x86)\VMware\VMware Player 설치경로에 넣어주고, 어댑터를 추가해주었다.
(어댑터를 추가해준 이유는 추후 dmz 등 실습을 위해서 쪼개둠)
이후 ip a로 확인하여 (ifconfig 아니어도 확인할 수 있다는 걸 알게됨;)
putty로 원격접속 확인.
유닉스 계열 운영체제. 라이센스 문제로 리눅스를 개발하게 됨.
리눅스 커널 : 운영체제를 돌릴 수 있는 핵심 기능을 모아둔 것.
c, c++은 프로그래머가 메모리에 대한 부분을 다루기 때문에 휴먼에러가 많이 생겨서
최근에는 Rust 같은, 자동으로 메모리를 청소해주는 언어들이 나오고 있음
유닉스 계열
https://upload.wikimedia.org/wikipedia/commons/7/77/Unix_history-simple.svg
AIX 또는 HP-UX를 금융권에서 많이 사용함
GNU프로젝트
- 리처드 스톨먼(자유 소프트웨어 재단 설립자)
- 누구나 실행 복사 수정 배포할 수 있고 권리를 제한하면 안 되는 사용 허가권
GNU 허드가 산업용으로 잘 안 맞아서 리눅스가 나왔고 GNU와 리눅스가 결합되었음
GNU리눅스라고 부르기도 함 (그누GNU 리눅스LINUX)
Linux Distributions Timeline
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg
리눅스보다도 리눅스 배포판을 잘 알아야 한다
안녕리눅스
김정균씨가 만든 안녕리눅스. 2023년까지도 질문답을 해주고 계심....
개인이 리눅스를 재구축하여 재배포 할 수 있다.
Red Hat Enterprise Linux
축약어 RHEL. 여기서 파생된 것이 CentOS. CentOS가 나온 이유는 RHEL가 GPL 라이선스(공개되어야 하는 원칙)이기 때문
RHEL 무료판이 종료선언 되고 상업용만 하다가, 커뮤니티에 무료판을 넘겨서 지원해준것이 Fedora Core.
페도라 리눅스. 페도라 프로젝트가 개발하고 레드햇의 후원을 받음.
RHEL에 들어갈 테스트 기능을 Fedora에서 테스트 후 RHEL에 적용함.
IBM이 레드햇을 인수, 레드햇이 CentOS를 인수함
CentOS에 대한 지원 종료 선언(centos7 2024.6 지원종료)
기존: Fedora 테스트 -> RHEL -> CentOS (원래 충분한 테스트 후에 RHEL에 적용 후, gpl 라이선스 때문에 CentOS가 나왔었음)
변경 : Fedora 테스트 -> CentOS -> RHEL (CentOS가 테스트용으로 전락. 업데이트가 없어서 테스트만 해야함)
GPL 라이선스를 통해 만들어놓고 공개배포 하지 않겠다니 뭔가 제재할 수가 없나... 양심없네 ㅡㅡ ;
CentOS를 만들었던 사람이 Rocky Linux를 만듬.
이후로 S.u.s.e 리눅스가 개발되기도 하고
데비안 리눅스(우분투)도 개발됨
(s.u.s.e 리눅스 계열, 레드햇 리눅스 계열, 데비안 리눅스 계열 등 으로 나누기도)
CentOS에서 Rocky Linux로 넘어가는 추세.
실무에서 레거시 프로젝트들이 많은데 s.u.s.e 리눅스가 CentOS 업데이트를 지원 해주겠다고 발표함
추후 s.u.s.e 리눅스의 지분이 높아질 수도...
slitaz 리눅스 : 100MB 짜리 아주 작은 리눅스로 테스트 할 때 쓰기 좋음
(centos는 설치시 최소 1기가임)
환경변수는 대부분 대문자로 되어 있다.
HOME, LANG, TERM, USER, SHELL, PATH, PWD, OLDPWD, EDITOR, HISTSIZE, MAIL, PS1, PS2, HISTFILE
환경변수는 주로 SHELL셀 환경에서 사용함
(HOME의 경우 root와 일반 user의 값이 다름)
환경변수 보는법 : echo $변수명
환경변수 전체 출력 : set 또는 env
환경변수 편집하는 법 : 변수명=값 (공백x)
사용자 추가 : useradd -G wheel linuxadmin (그룹 wheel)
사용자의 비밀번호 변경 : passwd linuxadmin
그룹 추가 : groupadd
명령어의 종류
alias - 메모리 관련. 우선순위 1번. alias 치면 전부 다 나옴. ex alias cp='cp -1'
내부 명령어 - 사용하는 셀 내부에 저장됨. 우선순위 2번. ex pwd, cd ...
외부 명령어 - 우선순위 3번
최상위 디텍토리 : /
파워 셀 powershell : cmd보다 좀 더 강력하게 수행함. c# 도 실행 가능.
bin -> usr/bin 일반유저 홈 디렉터리
bootn 부팅 관련 디렉터리
dev 장치 디렉터리
etc 환경 설정 디렉터리
home 일반 사용자의 홈 디렉터리
lib -> usr/lib 32bit 라이브러리 디렉터리
lib -> usr/lib 64bit 라이브러리 디렉터리
mnt USB/DVD/외장HDD 마운트 디렉터리
media USB/DVD/외장HDD 마운트 디렉터리
opt 추가 sw 디렉터리
proc 가상 파일시스템 디렉터리
root 관리자의 홈 디렉터리
run 부팅 후에 프로세스 런타임 데이터를 저장하는 디렉터리
sbin -> usr/sbin 관리자용 명령어
srv 사이트에서 생성되는 데이터를 저장하는 디렉터리
sys 2.6커널에서 사용되는 가상 파일 시스템 디렉터리
tmp 임시 디렉터리 <- 중요 폴더명은 temp
usr 일반 애플리케이션이 위치하는 디렉터리
var 시스템 로그, 스풀링처럼 가변적으로 변경되는 데이터가 위치하는 디렉터리
yum : 패키지를 설치하는 명령어
RHEL7, CenOS7까지 사용하고 RHEL8,9 CenOS8, RockyLinux8,9에서 dnf 명령어 사용
하지만 tum도 yum -> dnf 심볼릭 링크가 되어 있어 사용은 할 수 있음
yum 옵션 명령어 패키지명 순
ex yum -y install tree
tree 디렉터리를 tree로 출력
ex tree /
ex tree -l 1 /
help ls => 외부 명령어여서 나오지 않음
help cd => 내부 명령어여서 설명이 나옴
단, ls --help는 외부 명령어여도 설명이 나온다. --help는 외부 명령어에 대한 도움말을 확인 가능한데, 모든 명령어에 적용되는 것은 아니다.
man
외부명령어인지, 내부명령어인지 간단하게 확인 가능
ex man ls -> 최상단에 LS : 외부 명령어
ex man cd -> 최상단에 BASH_BUILTINS : 내부 명령어
cd <- 디렉토리명 안 쓰면 홈 디렉터리로 이동됨
cd - <- 이전 디렉토리로 이동
LANG=C ls --help로 쳐보면 설명이 나오는데 (LANG=C 는 영어로 설명출력)
Usage : ls [OPTION]... [FILE]...
이런식으로 나온다. [] 괄호의 의미는 인수를 생략 가능하다는 것. ...은 인수를 여러개 쓸 수 있다는 것.
cp --help
Usage : cp [OPTION]... [-T] SOURCE DEST
여기서 괄호밖의 SOURCE DEST는 반드시 써야 하는 것을 의미함. 없으면 명령어 실행 불가능.
ls 리스트 출력
ls -a . 으로 시작하는 파일까지 출력 (숨겨진 파일)
ls -l 정보를 자세히 출력한다 (ls -l 또는 ls -l a.txt 폴더안의 특정 파일을 출력할 수도 있음)
ls -i
맨 앞에 아이노드번호(파일마다 부여된)를 표시해준다
ls -f 디렉터리면 이름뒤에 /가 붙는다.
ls -l /boot
/boot 디렉터리를 자세히 출력한다
ls -R(혹은 --recursive) /boot (대문자여야 함! -r은 다른것)
/boot 디렉터리의 하위 디렉터리가 있으면 그 디렉터리 안으로 들어가 계속 출력(/boot 안의 모든 리스트를 출력하게됨)
ls -d
ls -l /boot -> 리스트를 자세히 출력
ls -ld /boot -> 디렉터리 자체를 출력
현재 나의 위치가 홈 디렉터리일때
ls -l = ls -l . = ls -l $HOME = ls -l /home/username 동일한 결과를 출력한다
touch a.txt
a.txt를 현재 디렉토리에 생성한다.
-rw-rw-r--. 1 linuxadmin linuxadmin 0 3월 2 12:15 a.txt
| | | | | | | | |
| | | | | | | | +파일명
| | | | | | | +수정시간
| | | | | | +크기
| | | | | +그룹
| | | | +소유자
| | | +하드링크 개수
| | +파일의 ACL(확장 퍼미션)
| +파일의 허가권(퍼미션)
+파일종류 ( ex - : 일반파일, d : 디렉토리)
( drwxrwxr-x. 2 linuxadmin linuxadmin 6 3월 2 12:46 dir111
-rw-rw-r--. 1 linuxadmin linuxadmin 0 3월 2 12:15 a.txt )
절대경로 : 최상위 디렉터리 / 부터 시작하는 경로
상대경로 : 현재 디렉터리부터 시작하는 경로
현재 디렉터리 : .
상위 디렉터리 : ..
mkdir : 디렉터리를 생성하는 명령어
Usage: mkdir [OPTION]... DIRECTORY...
디렉터리 이름을 반드시 써주어야 함
* mkdir은 인수가 없으면 missing operand error가 나오고
useradd는 인수가 없으면 --help 옵션 내용을 보여준다.
rmdir 디렉터리를 삭제하는 명령어
* 단, 디렉터리 안에 파일이 하나도 없어야 삭제 가능
rm 파일을 삭제하는 명령어
rm -r 하위 디렉터리가 있으면 그것도 다 삭제
rm -f 강제로 삭제 (디렉터리 삭제안됨 파일만)
rm -i 삭제전에 확인차 물어봄
rm -rf 디렉터리명 : 디렉터리를 삭제하는 것. 디렉터리안에 파일이 존재해도 삭제됨. 단, 권한이 있을때만.
일반유저($)가 삭제 권한이 없는데 삭제를 요청하면 허가거부로 삭제되지 않는다
실습
- alias rm='rm -i' (등록) <- 등록 이유 : 삭제명령어는 위험성이 있기 때문에, 우선순위가 높은 alias 명령어에 등록하여, rm을 실행할때마다 물어보도록 예방해준다
- touch a.txt (파일 생성)
- rm a.txt (tlfgod)
- rm: remove 일반 빈 파일 `a.txt'? (y 누르면 삭제되고 enter는 삭제안됨)
* alias 명령어를 실행하고 싶지 않을때는 \rm a.txt 이런식으로 역슬래시를 넣으면 alias 명령어를 무시한다.
* alias 명령어가 있어도, -f 강제삭제 옵션을 넣으면 묻지않고 삭제됨
cp 파일을 복사하는 명령어
ex cp /etc/passwd passwd /etc/passwd파일을 현재 디렉터리의 passwd 파일로 복사한다
(cp [OPTION]... [-T] SOURCE DEST 형식)
(cp [OPTION]... SOURCE... DIRECTORY)
* 파일과 달리 디렉토리는 반드시 옵션이 있어야 복사가 된다.
옵션
-i : 복사할 때 덮어쓸 것인가 물어보는 옵션. alias로 미리 설정해두는 것이 좋음.
-f : 덮어쓰기
-r 또는 -R : 디렉토리 복사시
* 복사하는 사람의 권한으로 파일 권한이 모두 변경되어 복사된다
(일반유저A의 파일을 root관리자가 복사시, root관리자의 권한으로 바뀐다는 뜻)
-p : 권한을 그대로 유지하면서 복사한다
mv : 파일의 이동, 파일의 이름 변경
ex mv dir dirmv //현재디렉터리의 dir폴더명을 dirmv로 변경해주었다
(mv [OPTION]... [-T] SOURCE DEST)
ex mv dir.txt dir //현재디렉터리의 dir 폴더에 현재디렉터리의 dir.txt를 이동해주었다
ex mv ./dtxt/a.txt . //현재디렉터리에 현재디렉터리의 dtxt폴더의 a.txt를 이동해주었다
(cp [OPTION]... SOURCE... DIRECTORY)
ex mv dir1/g.txt . // mv dir1/g.txt를 현재 디렉터리로 그대로 이동한다
mv dir1/g.txt group // mv dir1/g.txt를 현재 디렉터리에 group라는 이름으로 변경하여 이동한다
mv dir1/g.txt ./g // mv dir1/g.txt를 현재 디렉터리에 g라는 이름으로 변경하여 이동한다
(mv [OPTION]... -t DIRECTORY SOURCE...)
rm -rf * : 모든 파일, 디렉터리 전체 삭제 (권한이 있을때만)
'리눅스' 카테고리의 다른 글
리눅스 수업 7차시 (0) | 2024.03.16 |
---|---|
리눅스 수업 6차시 (셀프실습) (0) | 2024.03.14 |
리눅스 수업 5차시 (0) | 2024.03.09 |
리눅스 수업 4차시 (0) | 2024.03.03 |
리눅스 centos7 실습 (0) | 2024.02.28 |