WAS Engineer - Linux 4번째

이정빈·2022년 9월 20일
0

리눅스 복습

목록 보기
4/11
post-thumbnail

프로세스

명령어의 실체는 디스크에 있는 파일이다. 셸에서 명령어를 입력하면 커널이 디스크에 있는 해당 파일을 읽어서 메모리에 올린 뒤 CPU가 프로그램을 실행한다. 여기서 메모리 위에 올린 프로그램을 프로세스라 한다.

  1. ps명령어 : 프로세스 목록 표시
    ps 명령어는 현재 시스템에서 실행 중인 프로세스의 목록을 출력한다. 아무런 인자 없이 ps를 실행하면 현재 접속한 터미널에서 실행한 프로세스만을 출력한다.
  • ps 명령어로 프로세스 목록 확인

    $ ps

프로세스 ID는 프로세스가 종료하기 전까지 바뀌지 않는다. 따라서 특정 프로세스를 지정할 때 프로세스 ID를 사용한다.

  • 사용자가 실행 중인 모든 프로세스 출력

    $ ps xf

  • 시스템에서 동작 중인 모든 프로세스

    $ ps ax

리눅스는 멀티 태스킹을 지원하여 다양한 프로세스가 동시에 돌아간다.

  • 자주 사용하는 옵션

    ps 명령어의 옵션 조합(BSD 옵션)

옵션의미
xps 명령어를 실행한 사용자의 프로세스를 출력
uxps 명령어를 실행한 사용자의 프로세스를 상세하게 출력
ax모든 사용자의 프로세스를 출력
aux모든 사용자의 프로세스를 상세하게 출력
auxwwaux 옵션의 출력 결과가 화면에 잘리지 않도록 출력

ps 명령어의 옵션에 대해서 더 자세하게 알려면 ps로 매뉴얼을 확인하면 된다.

프로세스는 리눅스 커널의 입장에서 바라본 처리 단위이다. 셸에서 바라본 처리 단위는 잡(job)이라고 한다. 셸의 커맨드 라인에 입력한 한 행이 곧 잡 하나에 해당된다.

커맨드 라인에서 명령어 하나만을 입력했다면 프로세스와 잡이 같다. 복수의 명령어를 파이프로 연결했다면 프로세스는 명령어마다 만들어지지만 잡은 하나만 만들어진다.

프로세스는 시스템 전체에 걸쳐 유일한 값이 프로세스 ID로 할당되지만 잡은 셸별로 관리된다. 터미널 에뮬레이터 여러 개를 사용해서 셸 여러 개를 사용하면 중복된 잡 번호가 할당될 수 있다.

  1. 명령어를 일시 정지하는 법

$man bash <- 매뉴얼 실행
매뉴얼 실행 중 ~/.bashrc 파일을 편집하려면 Ctrl+z를 누른다. 그러면 셸에 명령어를 다시 입력할 수 있게 된다. 잡이 일시 정지가 된 상태가 된 것이다.
이 상태에서 에디터를 기동하여 ~/.bahsrc를 편집할 수 있다.

$vim ~/.bashrc
파일을 편집하다가 다시 bash의 매뉴얼을 확인하고 싶다면 Vim을 종료하는 것이 아니라 Ctrl+z를 누른다.

여기서 지금까지 만든 잡 목록을 확인하여 본다.

  • jobs 명령어로 현재 잡 목록 확인

$ jobs
[1]- 멈춤 man bash
[2]+ 멈춤 vim ~/.bashrc

정지 상태인 잡 두개가 표시된다. 앞쪽의 번호는 잡 번호를 의미한다.

  1. fg 명령어:잡을 포그라운드로 전환

사용자의 입력을 받아들일 수 있는 잡의 상태를 포그라운드(foreground)라고 한다. 정지 상태에 있는 bash 매뉴얼을 다시 확인하기 위해서는 포그라운드로 되돌려야 한다.

  • 잡을 포그라운드로 전환

fg %<잡 번호>

man bash의 잡 번호가 1이므로 다음과 같이 실행하면 된다.

-> 잡 번호 1을 포그라운드로 전환

$ fg %1

그러면 이전에 읽었던 부분에서부터 다시 볼 수 있고 키보드로 조작할 수도 있다.

  1. bg 명령어:잡을 백그라운드로 전환

Ctrl+z로 잡을 정지하면 해당 잡이 동작을 멈춤. cp로 파일을 복사하는 중 해당 명령어를 누르면 복사 처리가 정지되어 작업이 불편함.

잡을 멈추지 않은 채로 셸로 돌아가기 위해 백그라운드 명령어를 사용

  • 백그라운드에서 잡 실행하기

bg %<잡 번호>

  • 명령어를 백그라운드로 실행

$ cp file1 file2 & <-&을 붙여주면 됨

잡과 프로세스의 종료

  1. 잡 종료

잡 상태에 따라 잡을 종료하는 방법이 다름. 포그라운드로 실행 중인 잡을 종료하기 위해서는 Ctrl+c를 입력.

백그라운드에서 실행 중인 잡을 종료하려면 kill 명령어를 실행

  • 잡을 종료하는 방법

    kill %<잡 번호>

  1. 프로세스 종료
  • 프로세스 종료 방법

    kill <프로세스 ID>

  1. kill 명령어:시그널 전송

시그널이란 프로세스에게 전송되는 신호를 뜻한다. 프로세스는 전달받은 시그널의 종류에 따라 종료, 정지, 재기동 등의 처리를 수행한다. 즉 시그널을 통해 프로세스에게 메시지를 보내는 것이다.

시그널의 종류는 kill -<시그널 이름>과 같이 지정할 수 있다.

시그널의 전체 목록을 kill 명령어에 -l 옵션을 붙여 확인할 수 있다.

profile
WAS Engineer, Cloud Engineer(지망)

0개의 댓글