inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn thực chiến Linux Bash Shell Script từ System Engineer

2-2. Shell script để khắc phục sự cố máy chủ web

ls -al /var/log/nginx

Đã giải quyết

8

devnovsoo6731

19 câu hỏi đã được viết

0

선생님 안녕하세요...
강의를 따라하고 있는 학생입니다


다름이 아니라 웹 트러블 슈팅을하는데

강의 영상은 ls -al /var/log/nginx 하면 에러가 떠야 트러블 슈팅을 하던가 하는데


제 실습환경은 너무 잘 돼서요... 제가 뭘 잘못따라가고 있는걸까요?

감사합니다 사진첨부할게요

image.png

버추얼박스로 실습중이고
마우스 통합이 불편해서 윈도우 cli 로 ssh 걸어서 실습중입니다



+)

image.png

df -h 도 선생님은 100%인데
저는 11%요서 트러블 상황이 안만들어집니다


감사합니다

linux shell-script

Câu trả lời 1

0

bashbomb

안녕하세요, 강민구입니다.

결론부터 말씀드리면 잘못 따라오신 게 아닙니다. 지금 화면이 정상이고, 오히려 환경 구축을 제대로 하신 상태입니다.

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

devnovsoo6731

답변감사합니다 선생님 그럼 선생님 말씀은 지금 제 서버는 아직 아무것도 한게 없기에 클린한게 정상이며 잘 못 된게 없고? 선생님은 일부로 용량 꽉차게 만들었으며,

이럴때 어떤 명령어를 사용하라 정도로만 학습을 하면 될까요?


만약 제가 좀 용량을 채우고 싶으면
dd if=/dev/zero of=tesfile_delete_me bs=1m count=5000
요걸 쓰는거구요?

0

bashbomb

네, 세 가지 다 맞게 이해하셨습니다.

지금 서버가 깨끗한 게 정상이고, 강의 화면의 꽉 찬 상태는 제가 촬영 전에 일부러 만들어 둔 것입니다. 잘못 따라오신 게 없습니다.

학습 포인트도 말씀하신 대로입니다. 다만 "이럴 때 이 명령어"로 외우기보다, 범위를 좁혀 들어가는 순서 자체를 손에 익히시는 걸 권합니다.

df -h 로 어느 파티션이 찼는지 → du -h --max-depth=1 로 범인 디렉터리를 한 단계씩 좁히기 → ls -alh 또는 du -sh * 로 파일 단위 확인

실무에서는 범인이 nginx 로그가 아니라 애플리케이션 로그나 오래된 백업, 코어 덤프인 경우가 훨씬 많습니다. 그때도 위 순서는 그대로 통하고, 마지막에 나오는 파일 이름만 달라집니다. 그래서 명령어보다 순서가 남는 게 중요합니다.

dd 명령은 방향은 맞는데 두 군데만 고쳐주세요.

## 잘못된 예
dd if=/dev/zero of=tesfile_delete_me bs=1m count=5000

고친 것

## 올바른 예 
cd /var/log/nginx
dd if=/dev/zero of=testfile_delete_me bs=1M count=5000

첫째, testfile 에서 t 가 하나 빠져 있습니다. 파일명이 달라지면 나중에 지우는 명령과 안 맞아서 지웠다고 생각했는데 용량이 그대로인 상황이 생깁니다.

둘째, bs 단위는 대문자 M 이어야 합니다. 소문자 m 을 쓰면 dd: invalid number: '1m' 에러가 나고 파일이 만들어지지 않습니다. GNU dd 는 K, M, G 만 1024 단위 접미사로 인식합니다.

여기서 count 값은 제 강의 화면 숫자를 그대로 쓰시면 안 되고, 본인 서버의 남은 용량에 맞춰서 정하셔야 합니다. bs=1M 이므로 count 는 그대로 MB 개수가 됩니다.

먼저 df -h 를 치고 루트 파티션 행의 Avail 열을 보세요. 그 값이 실제로 채워야 할 양입니다.

Avail 이 4.0G 면 4 x 1024 = 약 4096, 그보다 조금 크게 count=4300

Avail 이 20G 면 20 x 1024 = 약 20480, 그보다 조금 크게 count=21000

Avail 보다 작게 잡으면 100% 가 안 돼서 강의와 같은 상황이 안 만들어지고, 너무 크게 잡아도 어차피 꽉 찬 지점에서 멈추니 손해는 없습니다. 다만 Avail 이 수십 기가면 그만큼 쓰는 데 시간이 걸리니 여유를 크게 잡을 필요는 없습니다.

중간에 No space left on device 가 뜨면 실패가 아니라 의도한 상태에 도달한 것이니, 그대로 df -h 를 다시 쳐서 100% 를 확인해 보세요.

그리고 실습이 끝나면 반드시 지워주세요. 루트 파티션이 100% 인 상태로 두면 이후 실습에서 파일 쓰기가 전부 실패합니다.

rm -f /var/log/nginx/testfile_delete_me
df -h

df -h 로 사용률이 원래대로 돌아온 것까지 확인하고 다음 강의로 넘어가시면 됩니다.

이번강의

0

10

2

버추얼박스 오류

0

18

1

텔레그램 봇 메세지 전송기능을 여러 서버에 이용하려면

0

205

2

컨테이너에서 다른 컨테이너 접속시

0

172

2

실습 주소에 172.18.1.91를 접속하니 접속이 되지 않습니다

0

173

2

atlassian 접속이 안됩니다

0

262

2

docker 컨테이너로 가상환경 구축 시 init.sh 관련 에러 로그

0

297

2

백업 쉘스크립트 3 질문있어요

0

137

1

telegram 문자보내기 오류

0

264

1

2-2 초기 셋팅 질문드려요!

0

381

3

Linux top 커맨드에 대한 질문

0

188

1

2-0. 진행 후 웹사이트 접속이 안됩니다.

0

336

2

커리큘럼-강의교안

0

347

3

web_backup.sh 실행 시 mount.nfs No host to mount

0

387

1

환경설정 압축파일 해제 불가

0

351

1

SecureCRT 접속 오류

0

885

1

강의에서 로그를 쌓게 하는 vws.tmpcompany.com 이제 접속이 안되는건가요?

0

416

1

강의에서 보여주시는 컨플이나 자료 따로 있을까요?

0

353

1

vagrant up 명령어 실행시

1

408

1

vagrant ssh 접속 에러

0

593

2

서버 구축시 문제 발생

0

475

2

버츄얼박스 설치에러

0

336

1

스크립트 실행 결과 미표시

0

335

1

맥북 지원

0

395

1