๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Linux

ํ„ฐ๋ฏธ๋„ ์ข…๋ฃŒํ•ด๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๊ธฐ - &๊ณผ ๋ชจ๋‹ˆํ„ฐ ์Šคํฌ๋ฆฝํŠธ

๋ฏธ์ธ์ฃผ 2023. 5. 12. 09:40

๋ฌธ์ œ ์ƒํ™ฉ

nohup node ./node_modules/@vue/cli-service/bin/vue-cli-service serve --port [PORT] &
nohup python manage.py runserver [IP]:[PORT] --settings=main.config.settings.debug

์œ„์˜ ๋ช…๋ น์œผ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์„œ๋ฒ„์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ..
๋•Œ๋•Œ๋กœ ์›น์ด ๋‚ด๋ ค๊ฐ€๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

์›์ธ

์ž˜๋ชป๋œ ๋ช…๋ น์–ด๋กœ ์ธํ•ด์„œ ์‚ฌ์‹ค ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰์ด ์•ˆ ๋˜๊ณ  ์žˆ๋Š”๊ฒŒ ์•„๋‹๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ

์™œ ๊ทธ๋Ÿฌ๋Š”์ง€ ์‹คํ–‰ํ•  ๋•Œ ๋ช…๋ น์„ ๋‹ค์‹œ ์‚ดํŽด๋ดค๋”๋‹ˆ

๋„์šธ ๋•Œ ์žฅ๊ณ  ์‹คํ–‰์— & ๋ฅผ ๋ถ™์ด์ง€ ์•Š๊ณ  ์‹คํ–‰ํ•ด์„œ ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ๋‹ซ์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๋„ ๊ฐ™์ด ์ข…๋ฃŒ๋˜์—ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค..

nohup python manage.py runserver [IP]:[PORT] --settings=main.config.settings.debug

 

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

1. ๋„์šธ ๋•Œ & ๋ฅผ ์žŠ์ง€ ๋ง์ž!

nohup python manage.py runserver [IP]:[PORT] --settings=main.config.settings.debug &

 

2. ํ”„๋กœ์„ธ์Šค ๋ชจ๋‹ˆํ„ฐ ํฌ๋ก ์žก ๋“ฑ๋ก

์„œ๋ฒ„๊ฐ€ ์•„์˜ˆ ์žฌ๋ถ€ํŒ… ๋˜๊ฑฐ๋‚˜ ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ
ํฌ๋ก ์žก์œผ๋กœ 5๋ถ„๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚ด๋ ค๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ๋‚ด๋ ค๊ฐ€ ์žˆ์œผ๋ฉด ์ž๋™์œผ๋กœ ์˜ฌ๋ ค์ฃผ๋„๋ก ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

#!/usr/bin/env bash

# ๋กœ๊ทธ ํŒŒ์ผ ์œ„์น˜
LOG_DIRECTORY="/home1/irteamsu/cronjob/logs"
LOG_FILE="$LOG_DIRECTORY/logfile_$(date "+%Y%m%d_%H").log"

# ํ™•์ธํ•  ํ”„๋กœ์„ธ์Šค
PYTHON_PROCESS="/home1/irteamsu/.pyenv/versions/py39/bin/python manage.py runserver [IP]:[PORT] --settings=main.config.settings.debug"
NODE_PROCESS="node ./node_modules/@vue/cli-service/bin/vue-cli-service serve --port [PORT]"

# ์‹คํ–‰ํ•  ๋””๋ ‰ํ† ๋ฆฌ
PROCESS_DIRECTORY="/home1/irteamsu/variable-comparison"

# ๋กœ๊ทธ์— ๋‚จ๊ธธ ํ˜„์žฌ์‹œ๊ฐ
log_current_time() {
    current_time=$(date "+%Y-%m-%d %H:%M:%S")
    echo "[$current_time] $1" >> "$LOG_FILE"
}

# ํ˜„์žฌ ์‹œ๊ฐ„์„ ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ๊ตฌํ•˜๊ธฐ
current_hour=$(date "+%H")

# ์ด์ „ ์‹œ๊ฐ„๋Œ€์˜ ๋กœ๊ทธ ํŒŒ์ผ ์œ ์ง€, ๋‚˜๋จธ์ง€ ๋กœ๊ทธ ํŒŒ์ผ ์‚ญ์ œ
for ((hour=0; hour<current_hour; hour++)); do
    if [ "$hour" -lt 10 ]; then
        rm "$LOG_DIRECTORY/logfile_$(date "+%Y%m%d_0$hour").log" 2>/dev/null
    else
        rm "$LOG_DIRECTORY/logfile_$(date "+%Y%m%d_$hour").log" 2>/dev/null
    fi
done

# python ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ
if pgrep -f "$PYTHON_PROCESS" >/dev/null; then
    log_current_time "Python process is already running."
else
    log_current_time "Python process is not running. Starting the process..."
    source ~/.bash_profile
    cd "$PROCESS_DIRECTORY"
    pyenv activate py39
    nohup /home1/irteamsu/.pyenv/versions/py39/bin/python manage.py runserver [IP]:[PORT] --settings=main.config.settings.debug > /dev/null 2>&1 &
    if pgrep -f "$PYTHON_PROCESS" >/dev/null; then
        log_current_time "Python process started."
    else
    log_current_time "Failed to start Python process."
    fi
fi

# node ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ
if pgrep -f "$NODE_PROCESS" >/dev/null; then
    log_current_time "Node.js process is already running."
else
    log_current_time "Node.js process is not running. Starting the process..."
    cd "$PROCESS_DIRECTORY"
    nohup node ./node_modules/@vue/cli-service/bin/vue-cli-service serve --port [PORT] > /dev/null 2>&1 &
    if pgrep -f "$NODE_PROCESS" >/dev/null; then
        log_current_time "Node.js process started."
    else
        log_current_time "Failed to start Node.js process."
    fi
fi
*/5 * * * * ~/cronjob/background_process_monitor.sh

 

๊ฒฐ๊ณผ

  • ๋กœ๊ทธ ํŒŒ์ผ ์ƒ์„ฑ ํ›„ 1์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ๋ณด๊ด€
    • ํฌ๊ฒŒ ์œ ์˜๋ฏธํ•œ ๋กœ๊ทธ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ž˜ ๋ณด๊ด€ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์›น์ด ๋‹ค์‹œ ์˜ฌ๋ผ์˜ค๊ฒŒ ๋œ๋‹ค!