본문 바로가기
시큐리티 아카데미

리눅스 7

by christmas mushroom 2024. 7. 19.

리눅스 문제해결

예시) <시나리오> 우분투 업데이트 이후에 read 성능이 낮아졌다

          read는 원래 어떻게 동작?

          : 유저프로그램 ⇒ 시스템콜 ⇒ 커널(VFS/FS/Block) ⇒ 디스크 read(smartctl) // readahead(미리읽기): 사이즈 설정

 

 접근방법

     ■ 에러메시지: 결과적으로 나타난 현재상황을 나타낸다

     ■ 문제정의: 문제는 현재 상태의 차이(gap)이다

     ■ 원인분석: 동작과정이나 절차를 나열하고 관찰하고 근본 원인을 찾는다

     ■ 해결책 적용: 여러가지 해결방식을 적용한다. 해결과정에 대한 것들을 기록하고 메모하여 후에 해결방식에 대한 평가를 한다(임시방편인지 근복적인 해결방법인지 등)

 

리눅스 명령어 및 파일 관련 오류

     ■ 명령어를 찾지 못하는 문제사례 (command not found)

  원인 설명
1 명령어 미설치 사용자가 실행하려는 프로그램이 시스템에 설치되어 있지 않을 때 발생
2 잘못된 명령어 입력 문제 오타 또는 잘못된 명령어 입력으로 인해 발생
3 PATH 경로 문제 명령어가 $PATH 환경 변수에 포함된 디렉토리에 없을 때 발생
4 명령어 별칭(alias) 문제 명령어가 별칭(alias)을 설정했지만 해당 별칭에 대한 명령어 정의가 없을 때 발생

 

     ■ 예시

            ○ 3) 

echo $PATH랑 같은 의미인듯??

PATH의 경로로 파일을 옮겨주던가 or PATH에 디렉토리를 추가해주던가

 

            ○ PATH 값을 임시적으로 수정하는 방법 (터미널을 2개 사용)

               PATH=$PATH:/home/realinux

               echo $PATH

                아래는 다른터미널에서 실행

                임시적인 것을 확인할 수 있다

 

            ○ PATH 값을 영구적으로 설정하는 방법 (터미널을 2개 사용)

                ~/.bashrc 파일 마지막 라인에 PATH=$PATH:/homereallinux 를 넣는다

                source ~/.bashrc

                 아래는 다른 터미널에서 실행

                영구적으로 설정됨을 확인할 수 있다

 

      ** /etc/profile.d/ 폴더에다가 설정하는 것과 ~/.bashrc 에 설정하는 것의 차이

          - 설정파일의 일반적인 구조와 체계를 봐야함

             1. 시스템 전체 기준 설정   ex) /etc/

             2. 계정별로 적용되는 설정   ex) ~/.

             3. 폴더별로 적용되는 설정파일   ex) ~/git/linux/.git/config

 

 

 명령어 및 파일 관련 요류

     ■ env

 

     ■ alias

        ○ 명령어 입력시에 오류를 냈을 때 source 를 안하면 오류가 안난다. source를 통해서 설정파일을 실행하면 오류가 남

        ○ 위의 캡쳐본과 같이 alias 명령어를 잘못 지정했을 때는 아래 캡쳐본과 같이 command 명령어를 입력해주면 임시적으로 정상적으로 실행된다

        ○ 만약에 command 를 입력하지 않고 명령어 주면 command not found 오류가 발생한다

        ○ 위의 캡쳐본과 같이 색까지 나오도록 임시적 설정이 가능하다

 

 

계속 나오는 현상

  원인 설명
1 ' 따옴표
(single quotes)
명령어에서 ‘ 따옴표가 열리고 나서 닫히지않으면 다음 라인에 > 가 생성되고 다음 라인에서 문자열 입력이 가능하다 그리고 ‘을 닫지않고 Enter 키를 누르면 그 다음라인 생성된다
2 " 쌍 따옴표
(double quotes)
명령어에서 " 쌍따옴표가 열리고 나서 닫히지않으면 다음 라인에 > 가 생성되고 다음 라인에서 문자열 입력이 가능하다 그리고 "을 닫지않고 Enter 키를 누르면 그 다음라인 생성된다
3 ' \ ' 백슬래시
(backslash)
실제로는 하나의 명령어 라인이지만 명령어 입력을 여러개의 라인으로 나눠서 할 때 사용한다
4 && AND 연산 && 보다 하나의 명령어가 모두 정상적으로 실행했을때만 && 뒤의 명령어를 실행함

 

     ■ 예시

            ○ 3) \ 하나의 명령어 라인이 너무 길 때 여러 개의 라인으로 나눠서 작성함

            ○ 4) && 명령어로 앞의 명령어가 정상일 때만 뒤의 명령어를 실행함

- 명령어와 명령어 사이를 &&로 연결함 ⇒ 앞의 명령어가 정상 동작할 때 뒤의 명령어를 실행함

- 명령어와 명령어 사이를 ; 로 연결함 ⇒ 그냥 연이어서 실행함

 

파일을 찾을 수 없는 문제 (No such file or directory)

 

     ■ 동작과정

            1. 폴더 생성 (mkdir)

            2. 폴더 링크 생성 (ln -s)

            3. 링크를 통해서 cd

            4. 원본 폴더를 삭제 ( rm -rf 명령어를 cd .. 으로 폴더를 나가서 하기)

            5. 링크 폴더는 더이상 cd 명령어로 동작하지 않음

 

vi, vim 파일편집 오류 (Swap file already exists!)

- vim 파일 hello.sh 를 만든 후 열고 저장해놓은 상태에서 다른 터미널로 해당 파일을 열면 오류가 난다

 

** fg 명령어: 백그라운드에 있는 파일 들어가기

- ctrl z 로 해당파일을 나왔을 때는 다시 vim 으로 같은 파일을 들어가려고 할 때 오류가 난다

- jobs 명령어를 통해서 총 몇 개의 파일이 종료되어 있지 않은지 확인 후 fg 로 해당 파일들을 들어가 정상종료를 해주고나서 vim으로 다시 해당 같은 파일들을 들어가면 정상작동된다


권한 유효 문제

- newuser 라는 새로운 계정을 만들고 실습을 했다 ⇒ 결론적으로 권한문제가 생겼다

- 왜냐하면 내가 항상 그 파일의 소유주이고 그 파일에 권한을 가졌다고해서 항상 권한이 유효하지는 않기 때문이다. 상위 디렉토리 실행권한이 없을 수도 있다

 

DNS 동작안됨?

    문제상황재연

    1. DNS 설정을 지운다

          - 파일안에 nameserver 주석 표시하기 (#)

    2. DNS 동작 안되는것 확인하기

    3. sudo yum clean all 패키지 정보 캐시파일 비우기

    4. sudo yum check-update 오류 메시지 확인하기

    5. 오류해결의 경우에는 1번부터 다시 수정하면 된다

 

패키지 저장소의 서버 URL 만료/수정 (특히 외부 패키지 저장소)

    문제상황재연 (임의로 서버 URL 주소를 잘못되게 적기)

    1. sudo nano /etc/yum.repos.d/CentOS-Base/repo 파일에 첫번째 base 끝에다가 err 을 추가함

    2. 오류메시지를 확인함

 

설치후보가 없는 패키지 (Package has no installation candidate)

- 위에 사진은 문제 상황을 재현해서 오류가 난 것을 확인하는 과정

 

 

패키지 정보 캐시 데이터 손상오류 (Failed to fetch)

- 파일안의 내용을 바꾸니까 오류가 난다

- 해결방법으로는 싹다 지우고 다시 채운다

'시큐리티 아카데미' 카테고리의 다른 글

리눅스 8  (2) 2024.07.22
악성코드분석  (11) 2024.07.22
리눅스 6  (0) 2024.07.19
리눅스 5  (0) 2024.07.18
리눅스 4  (0) 2024.07.18