2020-04-30 기준으로 작성되었으며, 블로그 글 작성을 위해 조금 수정되었습니다.
1. ps 실습
다음 명령을 실행하고 출력 결과에 대해 설명하시오.
1) ps – 현재 시스템 내 존재하는 프로세스 실행 상태를 요약해서 출력한다.
옵션 | 설명 |
PID | 프로세스 아이디 |
TTY | 프로세스를 제어하는 수단 콘솔 접속 시 “tty숫자” 형태로 표시되며, 원격이나 에뮬레이터 접속시 “pts/숫자” 형태로 표시 |
TIME | 프로세스에 사용된 CPU 시간 |
CMD | 프로세스 실행 명령어 |
2) ps –f – ps가 보여주지 않은 UID, PPID 등 다른 요소도 요약하여 출력한다.
옵션 | 설명 |
UID | 프로세스 실행 유저 |
PPID | 프로세스의 부모 PID |
C | CPU 사용량 |
STIME | 프로세스 시작 시간 |
3) ps aux – a: 모든 사용자의 프로세스를 출력
u: 프로세스에 대한 좀 더 자세한 정보를 출력
x: 더 이상 제어 터미널을 갖지 않은 프로세스들도 함께 출력
4) ps –ef – e 옵션은 모든 프로세스를 표시하고 f 옵션은 프로세스의 정보를 더 많이 출력한다.
2. pgrep 실습
다음 명령을 실행하고 출력 결과에 대해 설명하시오.
pgrep는 특정 프로세스만 리스트하는 명령문이다.
-l 옵션은 PID와 함께 프로세스의 이름을 출력한다.
sshd는 Solid State Hybrid Drive의 약자이다.
즉, sshd의 프로세스 이름과 번호를 함께 출력하는 명령문이다.
3. 전면처리, 후면처리 실습
다음 명령을 실행하고 출력 결과에 대해 설명하시오.
sleep 명령문으로 명시된 시간만큼 프로세스 실행을 중지시킨다. &은 후면작업을 하게 한다.
sleep 명령문은 2번 사용되었고 jobs 명령어로 후면에서 실행되고 있는 작업들을 리스트한다.
ps –f로도 sleep 100의 명령문을 확인할 수 있으며 PID가 다르다.
kill %1 명령어로 첫 번째에 해당하는 작업을 종료시킨다.
다시 ps –f로 확인하면 첫 번째 sleep 작업이 없어진 것을 확인 할 수 있다.
출력된 프로세스들의 부모-자식 관계를 설명하시오.
앞서 PPID가 부모 프로세스의 번호라고 했는데 root 로그인 후 bash 쉘이 실행되었다.
root – bash는 부모-자식 관계이고 이 후 쉘에서 실행된 sleep이나 ps 명령문이 bash의
자식 프로세스가 된다.
4. 작업제어 실습
다음 명령을 실행하고 출력 결과에 대해 설명하시오.
첫 번째 실행
START1을 출력 후 10초 후 DONE1을 출력하는데 후면 작업으로 실행시켰다.
그 후 fg %1를 통해 전면 작업으로 전환시켰고 DONE1이 출력된다.
두 번째 실행
이번엔 START2을 출력 후 10초 후 DONE2을 출력하는데 기본적으로 전면 작업으로 실행이 된다.
바로 Ctrl+Z를 통해 실행을 중단시킨 후 bg %1를 통해 후면 작업으로 전환시켰다.
5. 작업제어 실습
다음 명령을 실행하고 출력 결과에 대해 설명하시오.
우선 START는 S로 DONE은 D로 축약했다.
S1 출력 후 100초 뒤 D1 출력과 S2 출력 후 100초 뒤 D2 출력하는 명령을 후면처리 시켰고
바로 kill 명령으로 첫 번째 프로세스를 강제 종료 시켰다.
그리고 두 번째 프로세스를 STOP 옵션으로 중지와 CONT 옵션으로 계속하게 만들었다.
중간 중간 jobs로 확인해 Stopped와 Running 상태인 것을 확인 할 수 있다.
6. 프로세스 기다리기 실습
다음 명령을 실행하고 출력 결과에 대해 설명하시오.
영타가 좀 느려서 첫 번째 프로세스는 20초를 기다리게 했다.
두 번째 프로세스는 10초로 했고, 바로 echo 1; wait; echo 2를 적었는데
실행 결과는 1을 출력하고 1, 2번째 프로세스 결과가 순차적으로 나온다.
wait 명령은 후면 작업을 하는 프로세스들이 전부 끝났을 때까지 기다리다가 2를 출력한다.