[파이썬] 리눅스 프로세스 관리 및 모니터링 자동화

리눅스 운영체제에서 프로세스 관리와 모니터링은 중요한 작업입니다. 프로세스와 리소스 사용을 효율적으로 관리하고, 문제가 발생할 때 신속하게 대응할 수 있는 자동화된 도구는 시스템 관리자에게 큰 도움을 줄 수 있습니다. 이번에는 파이썬을 사용하여 리눅스 프로세스 관리 및 모니터링을 자동화하는 방법에 대해 알아보겠습니다.

1. 프로세스 관리

리눅스에서 프로세스를 관리하기 위해 psutil 라이브러리를 사용할 수 있습니다. 이 라이브러리는 파이썬에서 리눅스 프로세스 관련 작업을 수행하기 위한 다양한 기능을 제공합니다. 다음은 psutil을 사용하여 현재 실행 중인 프로세스의 목록을 가져오는 간단한 예제 코드입니다.

import psutil

# 현재 실행 중인 모든 프로세스의 정보를 가져옴
processes = psutil.process_iter()

# 각 프로세스의 PID와 이름을 출력
for proc in processes:
    print("PID:", proc.pid)
    print("Name:", proc.name())
    print("--------------------")

2. 프로세스 모니터링

프로세스의 상태를 주기적으로 모니터링하여 필요한 조건에 따라 알림을 받을 수도 있습니다. psutil 라이브러리를 사용하여 프로세스의 CPU 및 메모리 사용량을 확인하고, 임계치를 설정하여 경고를 발생시키는 예제 코드를 작성해 보겠습니다.

import psutil

# CPU 및 메모리 임계치 설정
cpu_threshold = 80
memory_threshold = 70

while True:
    # 현재 실행 중인 모든 프로세스의 정보를 가져옴
    processes = psutil.process_iter()

    for proc in processes:
        # 프로세스의 CPU 사용량 및 메모리 사용량을 가져옴
        cpu_percent = proc.cpu_percent()
        memory_percent = proc.memory_percent()

        # CPU 사용량이 임계치를 초과하거나 메모리 사용량이 임계치를 초과하는 경우 경고 출력
        if cpu_percent > cpu_threshold or memory_percent > memory_threshold:
            print(f"Warning - {proc.name()} (PID: {proc.pid}) is using high CPU or memory.")

    # 1초 동안 대기
    time.sleep(1)

3. 자동화

프로세스 관리와 모니터링을 자동화하기 위해서는 위의 코드를 적절한 방법으로 스케줄링하면 됩니다. 예를 들어, cron이나 systemd와 같은 리눅스 스케줄링 기능을 사용하거나, 파이썬의 schedule 라이브러리를 활용할 수 있습니다. 스케줄링을 통해 프로세스 관리 및 모니터링 작업을 주기적으로 실행할 수 있습니다.

위의 두 예제 코드는 프로세스 관리와 모니터링에 대한 간단한 개념을 소개하기 위한 예제이며, 실제 상황에 따라 보다 복잡한 로직을 구현할 수 있습니다. 파이썬의 다양한 라이브러리와 리눅스 운영체제의 기능을 활용하여 필요한 작업을 자동화하는 방법을 학습하고, 시스템 관리 작업을 효율적으로 처리할 수 있도록 노력해 보세요.