LInux 실습을 하기 위해 docker, wsl, ubuntu를 활용 하였습니다.

VM머신은 무겁고 배포가 어려운 단점이 있기 때문에, Docker를 활용하는게 좋습니다.
- Host OS와 하드웨어 자원을 공유하여 프로세스가 필요한 만큼만 사용합니다. 하드웨어를 관리하는 Hypervisor가 없기 때문에 VM에 비해 성능이 개선됩니다.
- 도커 환경 설정
docker version
docker ps
docker ps -a # 현재 존재하는 컨테이너 목록
docker run --name apa000ex1 -d httpd
docker run --name apa000ex2 -d -p 8080:80 httpd
# (호스트포트번호:컨테이너포트번호)
docker ps
docker ps -a # 현재 존재하는 컨테이너 목록
docker stop CONTAINERID또는NAME # 앞글자 일부만으로도 종료 가능
docker rm CONTAINERID또는NAME
docker run -d --name ubuntu -p 22:22 -it --privileged ubuntu:22.04
# --privileged 특정 권한들에 접속
docker exec -it ubuntu /bin/bash
# 새 우분투 리눅스 컨테이너 띄우기
docker run -d --name ubuntu2 -p 23:22 -it --privileged ubuntu
# --privileged 특정 권한들에 접속
docker exec -it ubuntu2 /bin/bash
# 서버1에서
apt-get update
apt-get install net-tools vim openssh-server ssh sudo info man-db less psmisc nano tzselect locale
# /etc/ssh/sshd_config에서 PermitRootLogin이라는
# 옵션을 찾아 옆에 있는 값을 yes로 변경해주세요.
passwd root
# 비밀번호를 지정해주지 않았기때문에 외부 접속용으로 이번 기회에 만들어줍니다
service ssh start
22번도 ubuntu01의 리눅스, 23번도 ubuntu02의 리눅스
# 서버2에서
ssh root@127.0.0.1 - 두대의 리눅스 서버를 생성 함

리눅스는 다음과같이 커널과 셀을 분리해 놓았습니다.
셸과 커널을 분리하면 커널을 바꾸지 않고 셸만 바꿀 수 있게 되어 리눅스 외 OS(FreeBSD, NetBSD, Solaris 등)를 사용할 때도 별도의 설치나 설정 없이도 셸만 이식하면 똑같이 사용 할 수 있습니다. 또한 셸을 사용하면서 에러가 발생하거나 지나치게 높은 부하가 발생해도 본체인 리눅스 커널에 미치는 영향을 최소한으로 줄일 수 있습니다.셸과 커널을 분리하면 커널을 바꾸지 않고 셸만 바꿀 수 있게 되어 리눅스 외 OS(FreeBSD, NetBSD, Solaris 등)를 사용할 때도 별도의 설치나 설정 없이도 셸만 이식하면 똑같이 사용 할 수 있습니다. 또한 셸을 사용하면서 에러가 발생하거나 지나치게 높은 부하가 발생해도 본체인 리눅스 커널에 미치는 영향을 최소한으로 줄일 수 있습니다.
- 사용자 관련 명령어
$ cat /etc/shadow
$ useradd user01 -- 새 사용자 추가
$ su user01
-rw-r----- 1 root shadow 901 Apr 22 18:14 /etc/shadow
sudo 명령어: 슈퍼사용자의 권한을 잠시 빌려오기
각 디렉토리의 역할
/bin
- 일반 사용자 및 관리자가 사용하는 명령어의 실행 파일이 배치되어 있는 디렉터리
- /bin는 특히 시스템과 관련된 중요도가 높은 명령어를 포함하고 있음
/dev
- 디바이스 파일이 배치되어 있는 디렉터리
- 디바이스 파일이란 디스크나 키보드 등 하드웨어를 다루기 위한 특수 파일
/etc
- 리눅스에서 돌아가는 다양한 애플리케이션의 설정 파일이 etc 아래에 배치됨
- 애플리케이션뿐만 아니라 리눅스 자체의 설정 파일도 이곳에 있음
- 리눅스를 운영하고 관리할 때 무척 중요한 디렉터리
/home
- 사용자별로 할당되는 홈 디렉터리가 배치되는 디렉터리
- 홈 디렉터리란 사용자별로 할당되는 개인용 디렉터리를 말함
- 사용자 이름이 디렉터리 이름으로 사용됨
- 예를 들어 사용자 이름이 yj라면 사용자의 홈 디렉터리는 /home/yj가 됨
- 사용자는 홈 디렉터리 안에서 자유롭게 파일이나 디렉터리를 작성해 작업할 수 있음
/sbin
- /bin와 비슷하게 실행 파일을 포함하는 디렉터리
- 이 디렉터리에는 관리자용 명령어가 포함되어 있음
- 예를 들어 시스템을 종료시키는 shutdown 명령어 등
/usr
- 설치한 애플리케이션의 실행 파일, 문서, 라이브러리 등이 이 디렉터리에 포함
- /usr 아래에는 bin, sbin, etc 등이 있어 루트 디렉터리와 구조가 비슷함
/var
- 변화하는(variable) 데이터를 저장하기 위한 디렉터리
- 애플리케이션 실행 중에 만들어진 데이터나 로그, 메일 등이 이곳에 저장
- /var에는 많은 파일이 기록되므로 용량이 부족해질 수도 있으니 시스템을 관리할 때 주의해야 함
각종 명령어
- touch (터치): 새로운 빈 파일을 생성하거나 기존 파일의 타임스탬프를 업데이트합니다. $ touch new_file.txt
- 원래 touch 명령어는 파일의 타임스탬프를 갱신하기 위한 명령어입니다. 이때 대상이 되는 파일이 존재하지 않으면 새롭게 파일을 만듭니다. 그래서 단순히 빈 파일을 만드는 용도로도 많이 사용합니다. touch 명령어로 이미 존재하는 파일을 지정해도 내용이 지워지거나 하지는 않고 시간만 변경됩니다. $ touch file.txt
- **$ touch file{1..100}**
- grep 활용
- ps -ef ps -ef|grep ssh grep man /etc/passwd # 문자열 그대로
- grep -i man /etc/passwd # 대소문자 구분 없이
- grep -v man /etc/passwd # 해당 문자열이 들어있지 않은 경우-반대되는 경우만 검색
- cat /etc/passwd|grep nologin # 시스템이 사용하는 계정을 출력
- cat /etc/passwd|grep -v nologin # 사람이 로그인하고 있는 계정을 출력
- grep -e 검색어1 -e 검색어2 -e 검색어3 # 여러개 검색어 사용해서 검
'Tech Stack > Linux' 카테고리의 다른 글
| 우리 FISA 4주차 복습 - Linux 3 (29) | 2023.12.20 |
|---|---|
| 우리 FISA 4주차 복습 - Linux 2 (0) | 2023.12.20 |