안녕하세요. RTLog입니다.
오늘은 Process 관련 명령어들을 작성해볼게요.
Process
Linux 시스템에서 프로세스는 실행 중인 프로그램의 인스턴스입니다. 프로그램을 실행하면 Linux 커널은 해당 프로그램에 대한 프로세스를 생성합니다. 각 프로세스에는 프로그램 코드, 변수, 스택, 힙, 파일 설명자 및 기타 런타임 리소스가 포함된 자체 메모리 공간이 있습니다.
프로세스 실행이 종료되면 종료 상태 또는 종료 코드를 상위/부모 프로세스나 시스템에 반환합니다. 이 종료 코드는 프로세스 실행의 성공 여부, 오류 발생 여부를 나타냅니다. 종료 코드는 0~255 범위의 정수 값을 갖습니다. 특수 변수 '?' 사용하여 종료 코드를 확인할 수 있습니다. 0인 경우 정상 종료를 나타내고, 0이 아닌 경우 비정상적 종료를 나타냅니다.
프로세스 상태를 확인하는 명령어는 'ps'로 process status의 약자입니다. '-f' 옵션으로 자세한 정보를 표시했습니다.
- UID: 프로세스를 소유한 사용자의 사용자 ID입니다.
- PID: 프로세스 ID, 각 프로세스의 고유 식별자입니다.
- PPID: 상위 프로세스 ID, 이 프로세스를 생성한 상위 프로세스의 PID입니다.
- C: 프로세서 사용률입니다.
- STIME: 프로세스의 시작 시간입니다.
- TTY: 프로세스와 관련된 제어 터미널입니다.
- TIME: 프로세스에서 사용한 누적 CPU 시간입니다.
- CMD: 프로세스와 관련된 명령 또는 실행 파일입니다.
'Signal'은 운영 체제나 다른 프로세스가 프로세스에 전달하는 소프트웨어 인터럽트입니다. 신호는 오류, 사용자 작업 또는 다른 프로세스의 요청과 같은 이벤트나 조건에 대해 프로세스에 알리는 데 사용됩니다. "kill -l" 명령어를 통해 Signal의 종류를 확인할 수 있습니다. 프로세스를 중단하는데 사용하는 "Ctrl + c"는 2번 인터럽트를 의미하고, 9번 인터럽트는 각 프로세스에서 처리 불가능한 종료 시그널입니다.
시그널을 어떤 프로세스에 보내고 싶다면, "kill -시그널번호 PID"를 입력하면 됩니다. 편집기 프로세스를 백그라운드에서 실행하고, 시그널을 보내 종료시킨 예제입니다.
종료 코드를 확인하는 예제입니다. 프로세스를 Ctrl + C (2번 인터럽트)로 종료한 결과, (시그널 번호 + 128)로 시그널 번호를 확인할 수 있습니다.
어떤 프로세스가 시그널을 받고 아무 동작을 하지 않는다면 해당 프로세스는 종료됩니다. 따라서, 시그널 처리 코드를 작성하지 않는다면 시그널을 받은 프로세스는 종료됩니다.
Bash Shell에서는 'trap' 명령어를 사용하여 시그널을 처리할 수 있고, C Shell에서는 시그널 처리 방법을 지원하지 않는 것으로 보입니다. ( * 아시는 분 있으시면 댓글 부탁드립니다.)
시스템 자원 사용량 확인
사용법: top ( Enter: 사용량 갱신 & q(quit): 프로그램 종료)
감사합니다.
'Linux' 카테고리의 다른 글
[Linux] C Shell Script - 제어문(2) (0) | 2024.03.27 |
---|---|
[Linux] 파일 검색 (1) | 2024.03.26 |
[Linux] C Shell Script - 제어문(1) (0) | 2024.03.26 |
[Linux] C Shell Script - Operator (0) | 2024.03.26 |
[Linux] C Shell Script - 사용자 입력, 인자 (0) | 2024.03.26 |