講義
受講レビュー
- システムエンジニアが教えるLinux実務編 – 生成型AIを活用した実務トラブルシューティング
- システムエンジニアが教えるLinux基礎編 Bash Shell Script
- システムエンジニアが教えるLinux実務編 – 生成型AIを活用した実務トラブルシューティング
- システムエンジニアが教えるLinux実戦編 Bash Shell Script
- システムエンジニアが教えるLinux基礎編 Bash Shell Script
投稿
Q&A
추가질문)
추가 질문 여기 남겨주셔도 괜찮습니다.1) /mnt 마운트 관련"하드디스크 하나에 마운트 하나"는 로컬 파티션 이야기이고, 이 실습의 /mnt 는 로컬 디스크가 아니라 스토리지 서버(cent3)의 NFS 를 붙이는 마운트포인트입니다.그래서 /dev/sda1 이 / 를 쓰고 있는 것과는 상관이 없어요./etc/fstab 을 한번 보세요. grep mnt /etc/fstabnoauto 옵션으로 등록돼 있어서 부팅할 때는 자동으로 붙지 않습니다.그래서 평소 df -h 에 /mnt 가 안 보이는 게 정상입니다.수동으로 붙여서 확인해 보세요. mount /mnt df -h /mnt # 스토리지 서버 주소가 보이면 정상 umount /mnt여기서 안 붙는다면 그건 cent3 쪽 문제입니다. ping cent3 로 통신을 확인하고, ssh cent3 로 접속해서 systemctl status nfs-server 를 봐 주세요.붙는다면 마운트 자체는 문제가 없는 겁니다.2) 텔레그램은 오는데 파일이 안 쌓이는 문제관찰을 아주 잘 하셨어요. 그리고 지금 보고 계신 2-5 가 바로 그 상황을 처음부터 끝까지 다루는 차시입니다. 여기서 답을 먼저 말씀드리면 차시 하나를 통째로 날리는 셈이 되니, 강의를 보시면서 직접 원인을 찾아보세요.지금 보신 증상 그대로 시작해서 원인 파악과 수정까지 진행됩니다.강의를 다 보시고도 본인 환경에서 재현이 안 되거나 막히는 부분이 있으면 그때 다시 질문 남겨주세요.감사합니다!
- いいね数
- 0
- コメント数
- 1
- 閲覧数
- 17
Q&A
tgz 백업파일
넵! 정확합니다. 서버는 24시간 365일 온라인상태를 유지하기 때문에 crontab에 등록했을때 해당 시각에 스크립트를 실행할 수 있는데 실습 이외의 시간에는 실습환경이 꺼져있는 상태라 크론탭의 스크립트도 동작을 하지 않기 때문입니다.
- いいね数
- 0
- コメント数
- 2
- 閲覧数
- 20
Q&A
ls -al /var/log/nginx
안녕하세요, 강민구입니다.결론부터 말씀드리면 잘못 따라오신 게 아닙니다. 지금 화면이 정상이고, 오히려 환경 구축을 제대로 하신 상태입니다.2-2는 "웹 로그가 하룻밤 사이에 디스크를 다 채워버린 상황"을 전제로 원인을 추적해 나가는 회차입니다. 그런데 이 장애 상태는 강의를 녹화하기 전에 제가 미리 만들어 둔 것이고, 수강생 환경에 자동으로 만들어지지는 않습니다. 실전편에는 장애를 자동으로 발생시키는 시나리오 스크립트가 따로 없기 때문입니다. 즉 여러분의 서버는 로그가 몇백 바이트밖에 안 되는 깨끗한 상태라, 로그 확인이 잘 되는 게 당연합니다.그래서 이 회차에서 가져가셔야 할 건 "에러를 똑같이 재현하는 것"이 아니라, 원인을 좁혀 들어가는 명령의 흐름입니다.df -h 로 어느 파티션이 찼는지 본다cd / 후 du -h --max-depth=1 2>/dev/null | grep G 로 범인 디렉터리를 한 단계씩 좁힌다마지막에 ls -alh 또는 du -sh * 로 파일 단위까지 확인한다이 흐름을 지금 상태에서 그대로 쳐보시면, 결과는 다르지만 각 명령이 무엇을 보여주는지는 똑같이 익히실 수 있습니다.그래도 영상과 같은 상황을 직접 만들어보고 싶으시다면, 아래처럼 일부러 디스크를 채워보셔도 좋습니다. 사실 2-3에서 감시 스크립트를 테스트할 때 이 방법을 그대로 사용합니다.df -h cd /var/log/nginx dd if=/dev/zero of=testfile_delete_me bs=1M count=5000 df -h count 값은 df 결과에서 남은 용량보다 조금 크게 잡으시면 됩니다. 이 상태에서 강의 순서대로 df -h 부터 따라가시면 영상과 같은 흐름을 경험하실 수 있습니다.다만 한 가지만 꼭 지켜주세요. 루트 파티션이 100%가 되면 그 상태에서는 파일 쓰기가 전부 실패하기 때문에, 실습이 끝나면 반드시 더미 파일을 지워주셔야 합니다.rm -f /var/log/nginx/testfile_delete_me df -h 안 지우고 넘어가시면 이후 실습에서 계속 발목을 잡습니다.참고로 마우스 통합이 불편해서 윈도우 터미널에서 SSH로 접속해 실습하시는 방식은 전혀 문제없고, 오히려 실무 환경에 더 가까운 좋은 방법입니다. 그대로 진행하셔도 됩니다.혹시 영상에서 나온 에러 메시지가 위 설명과 다르게 기억되신다면, 몇 분쯤 장면인지 알려주시면 그 부분을 짚어서 다시 설명드리겠습니다.감사합니다.
- いいね数
- 0
- コメント数
- 2
- 閲覧数
- 47
Q&A
이번강의
안녕하세요. 인프런 AI인턴이 답변을 잘 달아주었네요. ^^맥의 m칩 환경에서 버철박스가 실행이 안돼서 도커로 컨테이너 환경을 추가했습니다. 버철박스로 문제없이 실습환경이 돌아가면 스킵하셔도 괜찮아요.
- いいね数
- 0
- コメント数
- 2
- 閲覧数
- 40
Q&A
버추얼박스 오류
안녕하세요!에러 메시지의 "VirtualBox Host-Only Ethernet Adapter #2 / #3 이(가) 존재하지 않습니다"가 원인 그대로입니다.제어판에서 어댑터를 사용 안 함 → 사용으로 되돌리면 Windows가 이를 새 장치로 인식해서 이름 뒤 번호(#2, #3)가 바뀌거나 없어지는 경우가 있습니다.가상 머신 설정에는 예전 이름이 그대로 저장돼 있어서 못 찾는 상태이고, 가상 머신 자체는 손상되지 않았으니 이름만 다시 연결해 주시면 됩니다.1. 현재 어댑터 목록 확인 VirtualBox 관리자 → 파일 → 도구 → 네트워크 관리자 (버전에 따라 파일 → 호스트 네트워크 관리자)를 엽니다. 여기에 지금 실제로 존재하는 Host-Only 어댑터 이름이 나옵니다. 실습에는 2개가 필요한데, 목록이 부족하면 "만들기"로 추가해 주세요.2. 어댑터 IP 확인 실습은 Host-Only 어댑터를 2개 사용합니다. 각각 선택해서 "어댑터 수동 설정"의 IPv4 주소가 아래와 같은지 확인해 주세요. DHCP 서버는 사용 안 함으로 둡니다. - DMZ용: 172.18.1.1 / 255.255.255.0 - Local용: 10.18.1.1 / 255.255.255.0 만약 새로 만든 어댑터에 위 주소를 입력했는데 저장이 안 되거나 오류가 난다면, VirtualBox 6.1.28 이상에서 Host-Only에 허용된 대역이 기본적으로 192.168.56.x로 제한돼 있기 때문입니다. 이 경우 메모장을 관리자 권한으로 열어 C:\ProgramData\VirtualBox\networks.conf 파일에 아래 한 줄을 저장하고 VirtualBox를 재시작한 뒤 다시 시도해 주세요. - 172.18.0.0/16 10.18.0.0/163. 가상 머신에 다시 연결 cent1 선택 → 설정 → 네트워크 → 어댑터 2 탭 → "이름" 드롭다운에서 172.18.1.1이 설정된 어댑터를, 어댑터 3 탭에서는 10.18.1.1이 설정된 어댑터를 선택합니다. 어댑터 2와 3의 순서가 바뀌면 서버 안의 IP 설정과 어긋나서 통신이 되지 않으니 주의해 주세요. cent2, cent3도 동일하게, 세 대 모두 같은 어댑터를 가리키도록 맞춰 주셔야 합니다. 에러 창의 "네트워크 설정 변경" 버튼을 누르셔도 같은 화면으로 바로 들어갑니다.4. 실행 후 확인 세 대를 켜고 각 서버에서 ip addr 로 172.18.1.9x 와 10.18.1.9x 두 주소가 올라왔는지 확인하신 뒤, cent1에서 ping cent2, ping cent3 가 응답하면 정상입니다.참고로 Host-Only 어댑터는 앞으로 제어판에서 사용 안 함/사용으로 조작하지 마시고, VirtualBox의 네트워크 관리자에서 관리하시는 편이 안전합니다. 제어판 조작은 이번처럼 이름이 바뀌는 부작용이 있습니다.덧붙이자면, 사실 실습 환경 구축이 강의 전체에서 가장 까다로운 구간입니다. 셸 스크립트는 문법이 정해져 있어서 따라오시면 되는데, 환경 구축은 각자의 PC 사정에 따라 변수가 많아서 저도 강의를 만들면서 가장 신경 쓴 부분이에요. 그러니 여기서 막히시는 건 전혀 이상한 일이 아닙니다.그리고 이번 에러처럼 "가상 머신이 어떤 네트워크 어댑터를 바라보고 있는가"를 직접 확인하고 손으로 연결해 보시면, 앞으로 서버 세 대가 왜 서로 통신이 되는지, DMZ와 내부망을 왜 나눠 놨는지가 훨씬 선명하게 보이실 겁니다. 실무에서 네트워크 문제를 다룰 때 정확히 이 감각을 씁니다. 지금 찾아보시는 시간이 그냥 흘러가는 게 아니니 조금만 더 힘내 주세요.위 순서대로 하셔도 같은 에러가 난다면 네트워크 관리자 화면과 가상 머신의 네트워크 설정(어댑터 2, 3) 화면을 캡처해서 올려 주시면 이어서 확인해 드리겠습니다.
- いいね数
- 0
- コメント数
- 1
- 閲覧数
- 45
Q&A
실습환경
안녕하세요, 강의 들어주셔서 감사합니다.기초편은 셸 스크립트가 중심이라 리눅스가 돌아가는 환경이면 어디서든 바로 따라 하실 수 있어서, 별도의 실습환경 구축 과정을 넣지 않았습니다.실전편은 웹서버, DB, NFS 스토리지가 얽힌 가상 회사 인프라를 다루기 때문에 Docker로 서버 3대짜리 실습환경을 먼저 만들고 그 위에서 진행합니다.실습환경 구성 파일은 강의에서 안내해 드리며, Docker Desktop과 Git만 설치되어 있으면 Windows, macOS, 리눅스 어디서든 본인 PC에 그대로 만들어서 직접 실습하실 수 있습니다.기초편을 듣는 중에 손으로 해보고 싶으시면, 실전편 실습환경을 먼저 만들어 두고 기초편에서 다룬 스크립트를 그 안에서 돌려보셔도 됩니다.
- いいね数
- 0
- コメント数
- 2
- 閲覧数
- 31
Q&A
vi 줄 정렬하신 방법에 대해 문의드립니다.
질문 주신 3:30~3:33 구간에서 사용한 건 vi(vim)의 비주얼 블록 모드 일괄 삽입입니다.편집 상황내용 : 설명내용 : 설명내용 : 설명내용이 길었던 줄 : 설명앞의 세 줄은 콜론 위치가 같고, 네 번째 줄만 내용이 길어서 콜론이 오른쪽으로 밀려 있는 상태였습니다. 앞의 세 줄 콜론을 네 번째 줄 콜론 위치까지 밀어서 맞추는 작업입니다.조작 순서1. 세 번째 줄에서 콜론 바로 앞 칸에 커서를 둡니다.2. Ctrl + v 를 눌러 비주얼 블록 모드로 들어갑니다. (화면 아래에 VISUAL BLOCK 표시)3. k 를 두 번 눌러 위로 두 줄 확장합니다. 이제 1~3줄의 같은 열이 세로로 선택된 상태입니다.4. 대문자 I 를 누릅니다. 블록의 맨 앞(선택한 열)에 삽입 모드로 들어갑니다.5. 스페이스바를 눌러 네 번째 줄 콜론과 같은 위치가 될 때까지 공백을 넣습니다. 이때 화면에는 커서가 있는 한 줄만 밀리는 것처럼 보입니다.6. Esc 를 누릅니다. 이 순간 입력한 공백이 선택했던 나머지 줄에도 똑같이 복제되어, 1~3줄의 콜론이 한 번에 밀려 정렬됩니다.핵심은 5번이 아니라 6번입니다. 비주얼 블록 삽입은 편집 중에는 한 줄만 바뀌는 것처럼 보이고, Esc 로 삽입 모드를 빠져나갈 때 블록의 모든 줄에 일괄 반영됩니다. 그래서 Esc 를 누르기 전에 화면만 보고 안 된다고 판단하지 않으셔도 됩니다.알아두시면 좋은 점- 소문자 i 가 아니라 대문자 I 입니다. 소문자는 블록 삽입이 아닙니다. 블록의 끝쪽에 붙여 넣을 때는 대문자 A 를 씁니다.- 이 방법은 선택한 줄들의 콜론 위치가 서로 같을 때 한 번에 맞출 수 있습니다. 줄마다 콜론 위치가 제각각이면 같은 열에 공백이 들어가므로 원하는 결과가 나오지 않습니다. 그때는 위치가 같은 줄끼리 나눠서 여러 번 하시면 됩니다.- 윈도우 터미널에서 Ctrl + v 가 붙여넣기로 동작해 비주얼 블록 모드가 안 들어가는 경우가 있습니다. 그럴 때는 Ctrl + q 를 사용하시면 됩니다.- 되돌리기는 u 입니다. 블록 편집도 한 번의 u 로 전부 취소됩니다.참고로 열 맞추기를 자동으로 하고 싶다면 다음 방법도 있습니다.:%!column -t -s:다만 이 명령은 구분자인 콜론이 사라지거나 원본 형태가 바뀔 수 있습니다. 그래서 강의에서 보여드린 것처럼 눈으로 확인하며 맞추는 방식을 저는 더 선호합니다.다양한 방법을 사용해보세요 :-)
- いいね数
- 0
- コメント数
- 1
- 閲覧数
- 39
Q&A
민구님 설치시 또 막혀서 질문드려요
안녕하세요! 반복 질문 전혀 신경 안 쓰셔도 됩니다 :) 원래 환경 설정이 가장 어려운 부분이거든요. 로그까지 잘 찾아보셨습니다.두 증상(① 로그에 "no such file or directory" → Exited, ② 시도할 때마다 이상한 이름 컨테이너 생성)이 사실 같은 원인일 가능성이 높습니다. 결론부터 말씀드리면 docker run이 아니라, 리포 폴더 안에서 docker-compose로 실행해야 합니다.이 실습 환경은 컨테이너가 뜰 때 SRC/ 폴더(SSH 키·nginx 설정 등)를 컨테이너 안 /labdata로 가져와서 초기화합니다. 그래서 반드시 vws-docker-environment 폴더 안에서 실행해야 이 파일들이 연결돼요. 폴더 밖에서 실행하거나 docker run으로 직접 띄우면 그 파일들을 못 찾아서 "no such file or directory"가 뜨고 컨테이너가 바로 꺼집니다. (이상한 이름 컨테이너도 docker run을 직접 쓰셨을 때 생기는 현상이라, 정상은 아니에요.)아래 순서대로 한 번만 깔끔하게 다시 해보시겠어요?# 0) (혹시 쌓인 이상한 컨테이너 싹 정리)docker rm -f $(docker ps -aq)# 1) 반드시 리포 폴더 안으로 이동cd vws-docker-environment ls # docker-compose.yml 과 SRC 폴더가 보여야 정상!# 2) (M1/M2/M3 Mac이면 이 줄 먼저)export DOCKER_DEFAULT_PLATFORM=linux/amd64# 3) 재빌드 + 실행 (docker run 말고 compose 사용!)docker-compose down -v --remove-orphans docker-compose build --no-cache docker-compose up -d# 4) 확인 — 이름이 cent1/cent2/cent3 로 떠야 정상입니다docker ps -a만약 2)에서 ls 했을 때 SRC 폴더가 안 보이면 클론이 덜 된 것이니, 폴더를 지우고 git clone https://github.com/bashbomb/vws-docker-environment.git 으로 다시 받아주세요.그래도 Exited면 docker logs cent1, docker logs cent2, docker logs cent3 세 개 결과를 그대로 캡처해서 올려주시면 어디서 멈췄는지 정확히 짚어드릴게요. 화이팅입니다!
- いいね数
- 0
- コメント数
- 2
- 閲覧数
- 97
Q&A
git clone 명령어를 어디 터미널에다 붙여넣어야 하나요?
안녕하세요!git clone은 컨테이너 안이 아니라 본인 PC(호스트)의 터미널에서 실행하시면 됩니다. 즉 Docker를 띄우기 전에, 먼저 실습 환경 파일을 내 PC로 내려받는 단계예요.Windows를 쓰신다면 말씀하신 대로 Git Bash를 실행해서 그 창에 붙여넣으시면 됩니다. (PowerShell이나 명령 프롬프트(cmd)에서도 git이 설치돼 있으면 동작하지만, Git Bash가 리눅스 명령어와 가장 비슷해서 강의 따라가기에 편합니다.)Mac을 쓰신다면 기본 "터미널" 앱을 열어서 거기에 입력하시면 됩니다.전체 흐름은 이렇습니다.# 1) 받고 싶은 위치로 이동 (예: 바탕화면)cd ~/Desktop# 2) 저장소 클론 (이 폴더 안에 vws-docker-environment 폴더가 생깁니다)git clone https://github.com/bashbomb/vws-docker-environment.git# 3) 받은 폴더로 들어가서cd vws-docker-environment# 4) 이후 강의대로 도커 빌드 & 실행docker compose build docker compose up -d정리하면 Git Bash 창에 그대로 붙여넣으시면 맞습니다. git clone은 내 PC에 파일을 내려받는 명령이고, 그 다음 docker compose 명령부터가 컨테이너를 띄우는 단계라고 생각하시면 돼요.참고로 예전 VirtualBox 방식 실습을 해보셨다면 이번엔 Docker 기반이라 처음엔 생소하실 수 있는데, "내 PC에서 clone → 도커로 서버 3대를 띄움 → 그 안에 접속해서 실습" 흐름만 기억하시면 됩니다.막히시면 어떤 OS(윈도우/맥) 쓰시는지, 그리고 에러 메시지나 스크린샷을 주시면 조금 더 자세히 설명을 드릴 수 있을 것 같습니다.
- いいね数
- 0
- コメント数
- 2
- 閲覧数
- 104
Q&A
html 파일을 못 불러 옵니다.
안녕하세요! 파일이 깨진 게 아니라 브라우저 보안 정책 때문입니다 🙂main.html은 아래쪽 내용을 iframe으로 불러오는 구조인데, 파일을 더블클릭해서 file://로 열면 최신 브라우저(크롬/엣지 등)가 보안상 iframe 안의 로컬 HTML 로딩을 차단합니다. 그래서 윗부분 메뉴 텍스트만 보이고 아래가 비어 보이는 거예요.해결 방법 두 가지 중 편한 걸 쓰시면 됩니다.방법 1. 메뉴에서 직접 열기 (가장 간단)main.html 대신 보고 싶은 파일(0-1.intro.html, 1-1.scenario1.html 등)을 직접 더블클릭해서 여세요. iframe 없이 그 페이지만 단독으로 열리니 내용이 정상적으로 보입니다.방법 2. 간단한 로컬 서버로 열기 (메뉴 그대로 쓰고 싶을 때)강의자료 폴더에서 터미널을 열고 아래 명령 하나만 실행하세요.# 강의자료(html 파일들이 있는) 폴더로 이동한 뒤python3 -m http.server 8000그다음 브라우저에서 http://localhost:8000/main.html 로 접속하면 메뉴와 iframe이 모두 정상 동작합니다. (VS Code를 쓰신다면 "Live Server" 확장으로 main.html을 열어도 동일하게 됩니다.)참고로 모든 HTML과 style.css, network.png 파일이 같은 폴더 안에 함께 있어야 합니다. 압축을 풀 때 일부만 따로 옮겨졌다면 같이 모아주세요.해결 안 되시면 화면 스크린샷이랑 어떤 브라우저 쓰시는지 알려주시면 설정 등도 확인해드릴 수 있을 것 같습니다.
- いいね数
- 0
- コメント数
- 2
- 閲覧数
- 127




