SUSE

시스템 종료 쉘 스크립트

로만로만 2024. 1. 8. 08:09
반응형
#!/bin/bash

# 자기 이외의 사용자가 로그인하지 않았는지 who 명령어 출력으로 확인
other_user=$(who | wc -l)

if [ "$other_user" -ge 2 ]; then
    echo "[ERROR] who 명령어 출력이 2줄 이상: 작업 중인 사용자가 있습니다." >&2
    exit 1
fi

# 미리 정지해야 할 프로세스 목록
processes=("/path/to/first/process" "/path/to/second/process" "/path/to/third/process")

# 프로세스 확인
for process in "${processes[@]}"; do
    if ps ax -o command | grep -q "^$process"; then
        echo "[ERROR] 셧다운 중지: 프로세스 $process 실행 중" >&2
        exit 2
    fi
done

# 셧다운 실행
sync
shutdown -h now

 

작업 순서

1. 다른 사용자 확인
현재 로그인한 사용자 수를 who 명령어로 확인합니다.
다른 사용자가 있으면 에러 메시지 출력 후 스크립트 종료.

2. 중요 프로세스 확인
processes 배열에 정의된 프로세스들을 순회하며 실행 여부를 확인합니다.
어느 하나라도 실행 중인 프로세스가 있으면 에러 메시지 출력 후 스크립트 종료.

3, 시스템 셧다운
모든 조건이 충족되면 sync 후 shutdown -h now 명령어로 시스템 종료.

주의사항
프로세스 경로는 실제 시스템 환경에 맞게 조정해야 합니다.
스크립트는 시스템 관리자 권한으로 실행되어야 합니다.
변경 사항을 적용하기 전에는 스크립트 및 시스템 설정의 백업을 권장합니다.

 

번외로,

고객사 일정이 있어서 업로드가 뜸했습니다.

이젠 차질 없이, 업로드가 될 예정입니다.