Infrastructure/Linux

[연습문제] 유닉스 이론과 실습 개정판 8장 연습문제

Jinlib 2017. 12. 24. 01:30

1. 유닉스의 프로세스에는 어떤 종류가 있는지 설명하시오.

데몬(daemon) 프로세스 : 유닉스 커널에 의해서 실행되고, 특정한 서비스를 제공하기 위해 존재하는 프로세스, 예를 들어 웹 서비스를 제공하는 httpd가 존재한다.

부모(process) 프로세스 : 다른 프로세스를 만드는 프로세스 부팅할 때 실행되는 1번 프로세스를 제외한 모든 프로세스는 부모 프로세스를 가지고 있다.

자식(child) 프로세스 : 부모 프로세스에 의해 만들어지는 프로세스 자식프로세스는 할 일이 끝나면 부모 프로세스에게 결과를 돌려주고 종료한다.

고아(orphan) 프로세스 : 자식 프로세스가 그 결과를 돌려주기 전에 부모 프로세스가 먼저 종료 되어 버리면 자식 프로세스는 고아 프로세스가 된다.

좀비(zombie) 프로세스 : 좀비 프로세스는 이미 사용중인 모든 자원을 반납했지만 부모 프로세스로부터 작업종료에 대한 승인을 받지 못한 상태의 프로세스를 뜻한다. 좀비 프로세스 들은 실제로 실행되고 있지는 않지만 프로세스 테이블 목록을 차지하고 있어, 자원의 낭비요소가 된다.

 

2. 유닉스의 고아 프로세스와 좀비 프로세스의 차이를 설명하시오.

고아(orphan) 프로세스는 자식 프로세스가 그 결과를 돌려주기 전에 부모 프로세스가 먼저 종료되어 버린 프로세스로 1번 프로세스가 이런 고아 프로세스들의 새로운 부모 프로세스가 되어 고아 프로세스들이 작업을 마치고 종료할 수 있도록 해준다.

좀비(zombie) 프로세스는 이미 사용중인 모든 자원을 반납했지만 부모 프로세스로부터 작업종료에 대한 승인을 받지 못한 상태의 프로세스로 실제로 실행되고 있지는 않지만 프로세스 테이블 목록을 차지하고 있는 프로세스들이다. 좀비프로세스는 대부분의 경우 kill 명령으로 제거할수 없다는 문제가 있다. 해당 프로세스의 부모프로세스를 종료시킨 후 고아 프로세스로 만들어서 종료시키거나 그래도 안되면 재부팅해야 정리할 수 있다.

 

3. user1 사용자가 실행시킨 프로세스를 모두 찾기 위해 사용할 수 있는 명령에는 무엇이 있는지 설명하시오.

1) # ps -u user1 : user1이 실행시킨 프로세스 목록 출력

2) # ps -ef | grep user1 : 전체 프로세스에서 user1 패턴이 있는 정보 출력

3) # pgrep -l -u user1 : 2와 동일

 

4. user1 사용자가 실행시킨 모든 프로세스의 실행 날짜를 알아보려고 한다. ps명령의 어느 옵션을 조합하여 사용하면 되는지 설명하시오.

ps -ef | grep user1

 

5. pgrep 명령을 사용하여 현재 실행 중인 모든 bash를 검색한 결과와 ps명령을 사용하여 현재 실행 중인 모든 bash를 검색한 결과를 비교하여 차이점을 설명하시오.

pgrep은 프로세스 PID만 찾고 PS는 프로세스의 자세한 정보를 출력한다.

 

6. 포그라운드 작업과 백그라운드 작업의 차이를 설명하시오.

사용자가 명령을 입력한 후 결과가 출력될 때 까지 기다려야 하는 경우를 포그라운드 작업이라고 하며, 백그라운드 작업은 명령의 처리와 관계없이 곧바로 프롬프트가 출력되어 사용자는 다른 작업을 계속할 수 있도록 한다.

 

7. 어떤 경우에 백그라운드 작업을 유용하게 사용할 수 있을지 설명하시오.

명령의 처리시간이 오래 걸리는 경우 백그라운드 작업으로 실행시켜놓고 다른 작업을 계속할 수 있다. 여러 개의 작업을 백그라운드로 실행시켜 놓을 수도 있다. 특히, 데몬 프로세스처럼 서비스 요청이 올 때까지 기다려야 하는 프로세스들은 백그라운드로 실행시키는 것이 필요하다.

 

8. 현재 실행 중인 포그라운드 작업을 백그라운드 작업으로 전환시키는 방법을 다음 예를 사용해 설명하시오.

ctrl-zfind명령의 실행을 중단시킨다.

bg명령을 입력하여 백그라운드 작업으로 전환시킨다.

 

9. 현재 실행 중인 백그라운드 작업을 포그라운드 작업을 전환시키는 방법을 아래 예를 사용해 설명하시오.

fg %1

 

10. find / -name unix 명령이 로그아웃한 다음에도 계속 동작하도록 실행시키는 명령은 무엇인지 답하시오.

nohup find /-name unix &

 

11. who명령과 w명령의 차이점을 설명하시오.

who는사용자명과 단말기번호, 로그인한 시간정보를 보여주고

w는 시스템정보와 사용자정보를 함께 보여주는데 출력되는 시스템 정보는 현재 시간, 시스템이 부팅된 후 현재까지 경과된 기간, 로그인하고 있는 사용자 수, 실행대기 중인 작업의 수에 대한 정보이다. 사용자 정보는 사용자명, 단말기번호, 로그인한 시간 외에 휴지(idle)시간, JCPU, PCPU, 실행하고 있는 명령(활동) 정보를 출력한다.

 

12. 시스템이 부팅한 날짜와 시간을 알기 위한 명령은 무엇인지 답하시오.

who -b

 

13. ps f명령의 결과가 아래와 같을 때, 프로세스의 부모-자식 관계를 설명하시오.

15701 -> 15710(bash) -> 15721(ksh) -> 15761(vi test.c)

 

14. 13번에서 실행 중인 프로세스 중 vi test.c프로세스를 강제로 종료시키는 과정을 순서대로 설명하시오.

kill 15761 : kill 명령으로 종료시킨다.

kill -9 15761 : kill 명령으로 종료되지 않을 경우 -9(강제종료) 옵션을 사용한다.

 

15. 다음과 같이 백그라운드로 실행 중인 작업이 3개가 있다. 이 중 3번 작업을 종료시키는 명령을 기술하시오.

kill %3

 

16. user2 사용자가 user1 사용자로 전환하려고 한다. su user1su user1의 차이를 설명하시오.

su user1은 기존 사용자 환경을 유지한 상태에서 사용자만 user1으로 변경되지만, su user1의 경우 사용자 환경이 기존 환경에서 user1 사용자의 사용자 환경으로 변경된다. 따라서 su - user1을 하면 작업디렉토리가 user1의 홈디렉토리로 변경된다.