CS/Linux

[Linux] 생활코딩 리눅스 : 다운로드, 파이프, IO Redirection, shell & kernal, shell script

DandyNow 2024. 4. 3. 09:10
728x90
반응형

1. 다운로드

✔️ 출처 : https://opentutorials.org/module/1588/12591

1.1. wget

root@(생략):/# wget -O image_sample.png https://(이미지 URL)/image_sample.png        # image_sample.png라는 파일명으로 현재 경로에 다운로드

1.2. git

root@(생략):/# git clone https://github.com/facebook/react.git react_src        # react_src 폴더에 리액트 소스 코드 클론

2. 파이프

✔️ 출처 : https://www.opentutorials.org/course/2598/14190

파이프(|)를 이용해 앞선 명령어의 출력을 이용한다.

root@(생략):/# grep CLI linux.txt            # linux.txt 내에서 CLI 키워드가 있는 행을 찾는다.
root@(생략):/# ls --help | grep sort            # ls --help에서 출력되는 내용 중에서 sort 키워드가 있는 행을 찾는다.
root@(생략):/# ls --help | grep sort | grep file    # ls --help에서 출력되는 내용 중에서 sort 키워드가 있는 행 중 file 키워드가 있는 행을 찾는다.

3. IO Redirection

✔️ 출처 : https://www.opentutorials.org/course/2598/14199

">"를 이용해서 모니터에 출력되는 결과를 리다이렉션 해서 파일에 저장(덮어쓰기)한다.

root@(생략):/# ls -l > result.txt        # ls -l 출력 결과를 result.txt 파일로 저장
root@(생략):/# ls -l 1> result.txt        # 상동
root@(생략):/# rm result2.txt 2> error.log        # 에러 로그를 error.log 파일로 저장
root@(생략):/# rm result2.txt 1> result.txt 2> error.log        # 실행 결과 result.txt에 저장, 에러 발생시 error.log에 저장
root@(생략):/# head -n3 nohup.out > one.txt        # nohup.out의 첫 3줄을 one.txt 파일로 저장
root@(생략):/# ls -al > /dev/null        # /dev/null은 리눅스에서 휴지통 같은 개념. 출력 결과가 버려짐

😉 ">>"는 출력결과를 기존 파일에 추가한다.

4. shell & kernel

✔️ 출처 : https://www.opentutorials.org/course/2598/14203

shell과 kernel은 분리되어 있다. kernel은 하드웨어 제어하고, shell은 kernel에 명령을 전달한다. shell은 다양한 종류가 있다(bash, zsh ).

root@(생략):/# echo $0        # echo는 따라오는 내용을 화면에 출력한다. $0는 현재 shell을 의미한다.
-bash

5. shell script

✔️ 출처 : https://www.opentutorials.org/course/2598/14204

쉘 스크립트는 리눅스와 유닉스 기반 시스템에서 사용되는 스크립트 언어이다. 텍스트 기반의 명령어를 사용하여 시스템 작업을 자동화한다. 쉘 스크립트는 파일로 저장되며, 실행 가능한 권한을 갖추어야 한다.

5.1. nano로 backup 파일을 작성한다.

root@(생략):/# nano backup

5.2. backup 파일에 작성하는 스크립트는 다음과 같다.

if ! [ -d bak ]; then
        mkdir bak
fi
cp *.log bak
  1. -d는 디렉터리를 말하며 bak 디렉터리가 존재하지 않으면 then 아래의 명령어인 mkdir bak를 실행한다.
  2. fi는 if 블록을 닫는 용도이다.
  3. 마지막으로 cp 명령어를 실행한다.

5.3. 실행 권한 부여

생성한 backup 파일에 실행 권한을 부여한다.

root@(생략):/# chmod +x backup

5.4. 실행

root@(실행):/# ./backup

6. 프로세스

✔️ 출처 : https://www.opentutorials.org/course/2598/14210

프로세스는 메모리에 올라간 프로그램이며 프로세서(CPU)가 처리한다.

6.1. 프로세스 확인

root@(생략):~# ps aux | grep java    # 실행 중인 자바 프로세스 확인

6.2. htop을 이용한 확인

😉 htop 설치 방법 : https://postforty.tistory.com/449

[그림 1] htop 실행 화면

  • 0~15는 CPU 코어수를 말한다.
  • Load average의 숫자는 CPU 부하 평균을 말하며 왼쪽부터 1분, 5분, 15분이다. 싱글 코어라면 1.0이고 CPU 전체 부하율이 100%라는 뜻이다. 최대치를 넘을 수도 있는데 불특정 프로세스가 CPU를 점유하기 위해 대기 중이라는 뜻이다.
  • 초록색의 각 컬럼 헤드를 클릭하면 해당 칼럼을 기준으로 오름차순/내림차순 정렬을 할 수 있다.

2025-06-19 추가 내용

Htop에서 16코어 시스템의 Load Average 이해하기([그림 1]에 대한 설명)

Htop에서 0번부터 15번까지의 CPU 코어(총 16개의 코어)가 보이고, Load Average가 3.52 3.45 3.50으로 나타나는 상황은 시스템의 부하를 이해하는 데 중요한 정보를 제공한다. 이 값들을 통해 현재 시스템의 작업 처리 상태와 여유 자원을 파악할 수 있다.

1. Load Average 분석

Load Average는 특정 시간 동안 시스템에서 실행 중이거나 실행을 기다리는 프로세스의 평균 개수를 나타낸다. 즉, 시스템에 얼마나 많은 작업이 처리 대기 중인지 보여주는 지표이다.

  • 세 가지 숫자: Load Average는 1분, 5분, 15분 동안의 평균 부하를 순서대로 보여준다.
    • 3.52: 최근 1분간의 평균 부하이다.
    • 3.45: 최근 5분간의 평균 부하이다.
    • 3.50: 최근 15분간의 평균 부하이다.

2. 16코어 시스템에서 Load Average 해석

16코어 시스템에서 Load Average가 3점대라는 것은 시스템에 충분한 여유가 있음을 의미한다.

  1. 코어 수 대비 부하: Load Average를 CPU 코어 수로 나누어 각 코어가 얼마나 바쁜지 가늠할 수 있다.
    • 1분 부하: 3.52 / 16 ≈ 0.22
    • 5분 부하: 3.45 / 16 ≈ 0.21
    • 15분 부하: 3.50 / 16 ≈ 0.22
  2. 해석: 각 코어는 평균적으로 21~22% 정도의 작업 부하를 처리하고 있다는 뜻이다. 16개의 코어 중 34개의 코어만 활발히 사용되고 있고, 나머지 코어들은 유휴 상태이거나 대기 중인 작업을 기다리고 있다.
  3. 결론: Load Average가 16개의 코어 수보다 훨씬 낮은 3점대이므로, 현재 시스템은 부하가 낮은 상태이며, 많은 추가 작업을 처리할 수 있는 충분한 여유 자원을 가지고 있다.

3. 추가 확인 및 고려 사항

현재 시스템은 여유로운 상태이지만, 시스템 관점에서 다음과 같은 점들을 추가로 확인할 수 있다.

  • 개별 코어 사용률: Htop 화면에서 개별 CPU 코어의 사용률을 시각적으로 확인해 볼 수 있다. 특정 코어만 과도하게 사용되는지, 아니면 전체 코어가 고르게 활용되는지 보면 좋다.
  • 프로세스 확인: 어떤 프로세스들이 현재 활성화되어 Load Average에 기여하고 있는지 Htop 하단 목록에서 확인할 수 있다. 혹시라도 불필요한 프로세스가 높은 자원을 사용하고 있는지 점검할 수 있다.
  • 메모리 및 디스크 I/O: CPU Load Average가 낮더라도, 메모리 부족이나 디스크 I/O 병목 현상으로 인해 시스템 성능이 저하될 수 있다. Htop에서 메모리 사용량과 iostat와 같은 도구를 통해 디스크 I/O 상태도 함께 확인해 보면 좋다.

종합적으로 볼 때, 16코어 시스템에서 Load Average 3점대는 매우 안정적이고 여유로운 상태라고 판단할 수 있다.

728x90
반응형