Bash

[Bash] 시그널 및 프로세스 관리

인공지능하마 2023. 10. 27. 21:46
반응형

1. 시그널 처리:

시그널은 프로세스에 보내는 간단한 메시지로, 예외 상황이나 사용자 명령에 응답하는 데 사용됩니다. trap 명령어를 사용하여 시그널을 처리할 수 있습니다.

예제: Ctrl-C (SIGINT) 시그널 처리

#!/bin/bash

function handle_sigint() {
    echo "Ctrl-C (SIGINT) received. Cleaning up..."
    # 여기에 종료 또는 정리 작업 추가
    exit 1
}

trap 'handle_sigint' SIGINT

while true; do
    echo "Running... Press Ctrl-C to exit."
    sleep 1
done

설명:

handle_sigint 함수는 Ctrl-C (SIGINT) 시그널을 처리하며 종료 또는 정리 작업을 수행합니다.
trap 명령어를 사용하여 Ctrl-C 시그널이 수신되면 handle_sigint 함수가 호출됩니다.

 


2. 백그라운드 작업 관리:

백그라운드 작업을 실행하고 관리하는 데 & 연산자와 wait 명령어를 사용할 수 있습니다.

예제: 백그라운드 작업 실행 및 관리

#!/bin/bash

# 백그라운드에서 실행할 스크립트를 실행
./background_script.sh &

# 백그라운드 작업의 PID를 저장
bg_job_pid=$!

echo "Background job is running with PID $bg_job_pid"

# 백그라운드 작업이 종료할 때까지 대기
wait $bg_job_pid

echo "Background job has completed"

설명:

background_script.sh를 백그라운드에서 실행하기 위해 & 연산자를 사용합니다.
백그라운드 작업의 PID를 $!로 저장하고 출력합니다.
wait 명령어를 사용하여 백그라운드 작업이 종료될 때까지 대기합니다.

 


3. 프로세스 제어:

kill 명령어를 사용하여 다른 프로세스를 제어하고 시그널을 보낼 수 있습니다.

예제: 다른 프로세스에 SIGTERM 시그널 보내기

#!/bin/bash

# 백그라운드에서 실행 중인 프로세스의 PID
target_pid=12345

# 다른 프로세스에 SIGTERM 시그널 보내기
kill -15 $target_pid

echo "SIGTERM signal sent to process $target_pid"

설명:

kill 명령어를 사용하여 -15 옵션으로 SIGTERM 시그널을 다른 프로세스에 보냅니다.
해당 프로세스의 PID를 $target_pid 변수에 설정하여 시그널을 보냅니다.

반응형