Raspberry Pi_Kor_20.2.2 Shell의 명령 실행 방식

20.2.2 Shell의 명령 실행 방식

20.2.2.1 kernel의 system call 종류

● “fork” 시스템 call

이 call은 한 프로세스가 다른 프로세스를 실행시키기 위해 사용하는 시스템 호출 방식의 하나로 명령 실행이 필요할 때 child process가 생성되어 별도로 실행되는 형식이다.

Raspberry Pi_Kor_20.2.1 Shell과 script

20.2 script를 통한 명령 일괄 실행

여기서는 여러 개의 명령을 한번에 일괄 처리하기 위해서 사용하는 script 도구에 대해서 살펴볼 것이다. script에 대한 개념과 script를 작성하는 방법, script를 실행하는 방법 등에 대해서 논의할 것이다.

20.2.1 Shell과 script

20.2.1.1 script 란?

Linux 시스템에서는 Shell이 명령을 실행하는데 중심적인 역할을 하고 있는데, 여러 가지 Shell 프로그램 중에서 BASH가 기본적인 Shell로 지정되어 있다. BASH는 Terminal 환경에서 사용자가 입력한 명령을 받아서 그 명령의 의미를 해석하고, 지정된 방식에 따라 명령을 처리한 다음, 처리 결과를 사용자에게 되돌려 준다.

Raspberry Pi_Kor_20.1.2 수동 실행과 자동 실행

20.1.2 수동 실행과 자동 실행

처리를 지시하는 주체를 기준으로, 처리방식을 수동 실행 방식과 자동 실행 방식으로 구분할 수 있다.

● 수동 실행

이 방식에서는 어떤 명령의 처리를 사용자가 직접 지시한다. 실행이 필요한 시점을 사용자가 결정하고, 실행을 위해 입력하는 구체적인 명령의 내용도 사용자가 결정하여 명령의 실행을 지시하게 된다. 여기서 실행하는 명령은 하나의 개별 명령일 수도 있고, script로 정의된 여러 명령의 묶음일 수도 있다. 그것이 어떤 형태이던, 실행의 시작을 사용자가 결정하는 것이다.

Raspberry Pi_Kor_20.1.1 개별 실행과 일괄 실행

20.1 명령 실행 방식

Raspberry Pi 시스템에서 명령을 실행해하는 데는 여러 가지 방법이 있다. 사용자가 일일이 하나씩 실행할 수도 있고, 컴퓨터가 알아서 자동으로 처리해 줄 수도 있다. 여기서는 어떤 방식을 사용할 수 있는지에 대해서 살펴보기로 하겠다.

20.1.1 개별 실행과 일괄 실행

한번에 처리하는 명령의 개수를 기준으로, 처리방식을 개별 실행 방식과 일괄 실행 방식으로 구분할 수 있다.

Raspberry Pi_Kor_20.0 Chapter 20 일괄 실행과 자동 실행

Chapter 20 일괄 실행과 자동 실행

Chapter 주요 내용

여기서는 Linux 시스템에서 명령을 실행해하는 여러 가지 방법에 대해서 설명할 것이다. 명령을 하나씩 실행거나, 여러 명령을 한꺼번에 실행할 수도 있다. 또한 수동으로 실행할 수도 있고, 시스템이 자동으로 실행하도록 할 수도 있다.

이와 관련하여 여러 명령을 한번에 처리하기 위해서 사용하는 script 도구에 대해서 살펴볼 것이다. 일정한 주기로 명령을 실행해 주는 도구에 대해서도 살펴 볼 것이다.

다음과 같은 항목에 대한 내용을 포함하고 있다.
■ 개별 실행과 일괄 실행

■ 수동 실행과 자동 실행

■ script를 통한 일괄 실행

■ init script를 통한 자동 실행

■ schedule에 의한 자동 실행

Raspberry Pi_Kor_19.3.3 “/proc/PID/”의 개별 process 정보 확인

19.3.3 “/proc//”의 개별 process 정보 확인

먼저 프로그램에 대한 process를 조회해 보면 아래와 같이 PID “9223” process가 있다. 해당 process에 대한 CMD 항목을 보면 “/usr/bin/motion”라는 내용이 표시되어 있다.

Raspberry Pi_Kor_19.3.2 “/proc” 폴더의 시스템 정보 확인

19.3.2 “/proc” 폴더의 시스템 정보 확인

“/proc” 폴더 밑에는 시스템의 전반에 대한 상태 정보를 포함하고 있다.

19.3.2.1 CPU와 Memory 정보

“/proc” 폴더에서는 시스템의 전체에 대한 CPU와 memory 관련 정보를 확인해 볼 수 있다.

다음은 “/proc/meminfo”의 내용을 확인한 것이다. 이것은 memory의 전반적인 상태를 보여주고 있다. 잠시 후에 해당 파일의 내용을 다시 확인해 보면 내용이 변경된 것을 알 수 있다. 즉 시스템의 상태가 변경됨에 따라 memory 사용 상태가 변경되었으므로 이 파일의 내용도 자동으로 변경된 것을 의미한다.

Raspberry Pi_Kor_19.3.1 “/proc” 폴더의 정보 종류

19.3 “/proc” 폴더와 process 정보

Linux에서 “/proc” directory는 운영체제의 기본 directory의 일부로 시스템이 관리하는 process에 대한 전반적인 정보를 제공해 준다. 여기에는 시스템 전반에 대한 요약정보뿐만 아니라 개별 process id에 대한 상세한 정보까지 함께 제공해 주고 있다. 여기서는 “/proc” directory에 있는 정보의 내용에 대해서 간략히 살펴본다.

19.3.1 “/proc” 폴더의 정보 종류

다음은 /proc directory에 있는 내용을 조회한 화면이다.

Raspberry Pi_Kor_19.2.1 저장공간 확인

19.2 저장장치 모니터링

19.2.1 저장공간 확인

19.2.1.1 “df” 명령 – file system 디스크 공간 확인

시스템의 전반적인 디스크 저장장치 사용 상태를 확인하고자 할 때 df 명령을 사용할 수 있다.

Raspberry Pi_Kor_19.1.2 process 죽이기

19.1.2 process 죽이기

현재 실행되고 있는 process의 처리가 더 이상 필요 없거나, process의 진행상태에 문제가 있는 경우 해당 process를 지정하여 처리를 중단할 수 있다.

19.1.2.1 “kill” 명령 – PID를 이용한 process 종료

시스템에 실행되고 있는 process를 종료하도록 시스템에 지시하는 것이 “kill” 명령이다.