서버 (Unix, Linux) 프로세스 체크 쉘스크립트 제작 질문

서버 (Unix, Linux) 프로세스 체크 쉘스크립트 제작 질문

작성일 2023.07.06댓글 2건
    게시물 수정 , 삭제는 로그인 필요

안녕하세요
서버 인프라 운영을 하고있는 1인입니다. (이제 막 시작한 초보입니다...ㅠㅠ)

다름이 아니라 맡고있는 서버들이 몇개있는데 해당 서버들을 매일같이 접근해서 프로세스 체크하고
하는게 업무 효율성이 좋지않아보여 쉘스크립트를 만든다음 각 서버들의 프로세스들을 매일 체크하여 정상유무를 확인하고 싶은데 구글링을해도 기본틀이 없어서 만들기가 좀 어렵습니다...

-- 만들고 싶은 쉘 스크립트 --

한서버에 서비스 프로세스 3개라는 가정 : test , test_1 , test_2  있을경우

ps -ef | grep test 로 각각 입력하여 3개의 프로세스가 정상실행 중인지 아닌지 log파일 또는 txt파일로 서버내 디렉토리에 떨구고 싶습니다. (crontab 등록하는 방법도 같이 부탁드립니다.)

위 방법으로 쉘스크립트 짜게 될 경우 어떤식으로 해야하는지 틀이라도 좀 알려주시면 정말감사하겠습니다..ㅠ.ㅠ


#unix 서버 #unix 서버 사양 확인 #unix 서버 시간 확인

profile_image 익명 작성일 -

안녕하세요.

cat do.sh #!/bin/bash DATE=`date "+%Y-%m-%d %H:%M:%S"` # nginx 프로세스가 있는지 검사하기 if [ "ps -ef | grep nginx | grep -v grep" -eq 0 ]; then # nginx 프로세스가 없으면 띄우기 systemctl start gninx echo "crond process started. ${DATE}" else echo "crond process is already running. ${DATE}" fi --------------------- 이런식으로 do.sh라는 스크립트를 작성하고, crontab 에서 5분마다 실행하여, 프로세스를 띄우는 스크립트입니다. crontab 에서는 아래처럼 입력합니다. */5 * * * * /home/user123/do.sh 위처럼 하면 5분마다 do.sh 를 실행하여, nginx 프로세스가 없으면 띄우는 샘플입니다. 로그를 남기려면 로그폴더를 만들어서 5분마다 실행된 로그를 저장하도록 하면 됩니다. crontab 을 아래처럼 하시면 됩니다. */5 * * * * /home/user123/do.sh >> /home/user123/Log_process/procLog.log 이렇게 하면 5분마다 nginx 프로세스를 체크하여 없으면 띄우고, 로그에도 저장되는 형식이 됩니다. ^^ test, test1, test2 세개는 위 if 문을 3번 반복해서 쓰거나, for 문으로 돌리면 됩니다. 일단 한개로 먼저 테스트해보시고, 이것을 알고서 여러개를 체크하는 스크립트를 만들어보세요~

profile_image 익명 작성일 -

안녕하세요. 답변드려요.

안녕하세요! 서버 인프라 운영에 관심을 가지고 계신다니 멋지네요. 쉘 스크립트를 사용하여 프로세스 체크와 로그 파일 생성, crontab 등록하는 방법에 대해 알려드리겠습니다. 함께 단계별로 알아보도록 하죠!

1. 쉘 스크립트 파일 생성하기:

- 텍스트 에디터(예: vim, nano)를 사용하여 스크립트 파일을 생성합니다.

- 파일의 확장자는 `.sh`로 지정해주세요.

2. 스크립트에 코드 작성하기:

- 아래 코드를 스크립트 파일에 복사하여 붙여넣기 해주세요.

shell

#!/bin/bash

# 프로세스 체크할 서비스 이름들을 배열로 정의합니다.

services=("test" "test_1" "test_2")

# 로그 파일 경로 설정

log_file="/서버내/디렉토리/로그파일.txt"

# 각 서비스의 프로세스 상태를 체크하고 로그 파일에 기록합니다.

for service in "${services[@]}"; do

if pgrep -x "$service" > /dev/null; then

echo "$(date): $service 프로세스가 정상 실행 중입니다." >> "$log_file"

else

echo "$(date): $service 프로세스가 종료되었습니다." >> "$log_file"

fi

done

3. 스크립트 파일 저장하기:

- 텍스트 에디터에서 `Ctrl + S`를 눌러 파일을 저장합니다.

- 저장한 파일의 경로와 이름을 잘 기억해주세요.

4. 스크립트 실행 권한 설정하기:

- 터미널에서 아래 명령어를 실행하여 스크립트 파일에 실행 권한을 부여합니다.

shell

chmod +x /스크립트/파일/경로.sh

5. crontab 등록하기:

- 터미널에서 `crontab -e` 명령어를 실행하여 crontab 설정을 엽니다.

- 매일 스크립트를 실행하기 위해 아래 내용을 추가합니다.

0 0 * * * /스크립트/파일/경로.sh

- `0 0 * * *`는 매일 자정(00:00)에 스크립트를 실행하라는 의미입니다.

- `/스크립트/파일/경로.sh`는 실제 스크립트 파일의 경로로 수정해야 합니다.

- `crontab`을 저장하고 종료합니다.

이제 준비가 끝났습니다! 매일 자정에 스크립트가 실행되어 프로세스 상태를 체크하고 로그 파일에 기록될 것입니다. 필요한 경우 로그 파일의 경로를 변경하실 수 있습니다. 언제든지 스크립트를 수정하거나 crontab 설정을 변경할 수 있습니다. 어떤가요? 이제 효율적인 업무를 위해 자동화된 프로세스 체크를 사용해보세요! 화이팅하세요!

답변확정 부탁합니다.

Linux 서버 재설치에 관한 질문입니다.

... 질문입니다. 1. 서버 머신과 개인용 컴퓨터에서 linux... #ps axf 라는 명령어로 현재 실행되고 있는 프로세스를... 전부 체크해주셔야 합니다. 모른것들은 그냥...

unix 서버를 배우고 싶은데 책을 추천해...

... 및 UNIX/LINUX의 컨셉 (이를테면 파이프, redirection 등) 2. 프로세스의 개념 및 관리 방법 3. 사용자 계정에 대한 개념과 관리 방법 4. 기본적인 쉘 스크립트의 이해 정도를...

(B-Shell)에서 로그파일을 FTP로 받고...

... 입력하는 UNIXLINUX 표준 명령을 시스템이 이해할수 있도록... 그러니까 질문하신 분께서 시스템과 대화를 할수 있도록 도와주는 기특한 녀석이지요. 그리고 ...

JAVA와 플래쉬 액션스크립트와의...

... 게임을 제작 해보려고 하고있습니다. 애니메이션을 만들었을때 사용한 것은 액션스크립트2.0 이였는데 좀 심도있게 해보려고합니다. 그런데 여기서 질문있습니...

필요 없는 프로세스 좀 골라주세요...

... 전부 체크 해제시킵니다... Ctfmon AhnSD 그리고... 가이드: 일반적으로 로컬 UNIX 프린트 서버를... 시스템 프로세스 1. explorer.exe - 윈도우의 기본 입니다....