유닉스의 프로세스

유닉스의 프로세스

유닉스 터미널에 로그인하고 다음을 수행합니다 ps.

bash-4.3$ ps
  PID TTY          TIME CMD
    7 pts/0    00:00:00 sh
   16 pts/0    00:00:00 bash
   17 pts/0    00:00:00 ps

bash프로세스가 실행 중인 셸이라는 것을 알고 있지만 sh및 이름이 지정된 다른 두 프로세스는 어떻습니까 ps?

그것은 어디에서 왔습니까?

실행 ps -f결과:

UID        PID  PPID  C STIME TTY          TIME CMD
cg           7     1  0 01:04 pts/0    00:00:00 sh
cg          16     7  0 01:04 pts/0    00:00:00 /bin/bash
cg          18    16  0 01:18 pts/0    00:00:00 ps -f

bash그렇다면 이는 쉘이 sh쉘의 프로세스 로 실행되고 있음을 의미합니까 ?

답변1

이것유틸리티는 명령줄 문자열, 표준 입력 또는 지정된 파일에서 읽은 명령을 실행해야 하는 명령 언어 해석기입니다. 애플리케이션은 실행될 명령이 다음에 설명된 언어로 표현되는지 확인해야 합니다.쉘 명령 언어

메모현재 실행 중인 프로세스를 표시합니다. 우리는 단지 실행 중이기 때문에 이는 의미가 있습니다."쉿","펀치"그리고"추신"현재 이 터미널을 사용하고 있습니다.

답변2

흥미로운 트리오입니다. 일반적으로 로그인하고 플래그 없이 ps를 실행하면 로그인 쉘과 ps 프로그램이 생성됩니다. 기본적으로 ps는 동일한 EUID와 동일한 tty를 가진 모든 프로세스를 표시합니다.

따라서 shell과 ps의 존재는 그리 특이한 것은 아닙니다.

두 가지 흥미로운 점이 있습니다.

  • 첫 번째 쉘의 상위 PID는 PID 1입니다.
  • 당신은 두 개의 껍질을 가지고 있습니다

내 시스템에서 상위 프로세스 ID는 로그인 프로세스 또는 창 터미널 프로세스용입니다. PPID가 1인지 잘 모르겠습니다.

로그인한 후와 마찬가지로 로그인 쉘은 sh이고 bash를 입력했습니다.

답변3

3개의 프로세스를 나열했습니다.

유닉스에서 sh의 문제점은 Bourne 쉘이다. 많은 Unix에서는 sh를 기본 셸로 사용하고 Bourne Again 셸(bash)을 제공합니다. 이는 sh에 없는 많은 옵션을 제공하기 때문입니다.

알고 계시다면 sh는 bash보다 PID가 낮습니다. bash는 sh 이후, 아마도 그 위에서 실행됩니다.

ps는 실행될 때 명령이 사용 중이므로 해당 프로세스가 머신에 있기 때문에 나타납니다.

관련 정보