feat(cron): Bithumb cron 비활성화·재활성화 지원
example 기본 주석 처리와 install_crontab --disable/--enable로 다운로드·거래·모니터 cron을 안전하게 끄고 켤 수 있게 한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,17 +1,23 @@
|
|||||||
# Bithumb vol_breakout 운영 cron (install_crontab.sh 로 등록)
|
# Bithumb vol_breakout 운영 cron (install_crontab.sh 로 등록)
|
||||||
# 프로젝트: /Users/dsyoon/workspace/bithumb
|
# 프로젝트: /Users/dsyoon/workspace/bithumb
|
||||||
# Python: BITHUMB_PYTHON 또는 coin/ncue conda (scripts/_cron_env.sh)
|
# Python: BITHUMB_PYTHON 또는 coin/ncue conda (scripts/_cron_env.sh)
|
||||||
|
#
|
||||||
|
# 활성화: 아래 cron 줄 맨 앞 # 제거 후
|
||||||
|
# bash scripts/install_crontab.sh --apply
|
||||||
|
# 비활성화(주석): bash scripts/install_crontab.sh --disable
|
||||||
|
# 제거: bash scripts/install_crontab.sh --remove
|
||||||
|
|
||||||
# 캔들 증분 (TRX,NEAR,WLD × DOWNLOAD_INTERVALS) — 매 1분
|
# 캔들 증분 (TRX,NEAR,WLD × DOWNLOAD_INTERVALS) — 매 1분
|
||||||
* * * * * /Users/dsyoon/workspace/bithumb/scripts/00_run_download_cron.sh >> /Users/dsyoon/workspace/bithumb/data/common/download_cron.log 2>&1
|
# * * * * * /Users/dsyoon/workspace/bithumb/scripts/00_run_download_cron.sh >> /Users/dsyoon/workspace/bithumb/data/common/download_cron.log 2>&1
|
||||||
|
|
||||||
# vol_breakout 15m flip tick — 매 1분
|
# vol_breakout 15m flip tick — 매 1분
|
||||||
* * * * * /Users/dsyoon/workspace/bithumb/scripts/3_run_vol_breakout_cron.sh >> /Users/dsyoon/workspace/bithumb/data/spot/operations/vol_breakout_cron.log 2>&1
|
# * * * * * /Users/dsyoon/workspace/bithumb/scripts/3_run_vol_breakout_cron.sh >> /Users/dsyoon/workspace/bithumb/data/spot/operations/vol_breakout_cron.log 2>&1
|
||||||
|
|
||||||
# vol_live 모니터 JSON/HTML 백업 갱신 — 5분마다
|
# vol_live 모니터 JSON/HTML 백업 갱신 — 5분마다
|
||||||
*/5 * * * * /Users/dsyoon/workspace/bithumb/scripts/3_run_vol_monitor_cron.sh >> /Users/dsyoon/workspace/bithumb/data/spot/operations/vol_monitor_cron.log 2>&1
|
# */5 * * * * /Users/dsyoon/workspace/bithumb/scripts/3_run_vol_monitor_cron.sh >> /Users/dsyoon/workspace/bithumb/data/spot/operations/vol_monitor_cron.log 2>&1
|
||||||
|
|
||||||
# 모니터 HTTP 서버(8766) — 터미널: python scripts/3_run_vol_monitor.py
|
# vol_live 모니터 HTTP 서버(8766) — 2분마다 미기동 시 nohup 기동
|
||||||
|
# */2 * * * * /Users/dsyoon/workspace/bithumb/scripts/3_ensure_vol_monitor_serve.sh >> /Users/dsyoon/workspace/bithumb/data/spot/operations/vol_monitor_serve.log 2>&1
|
||||||
|
|
||||||
# (선택) fractal 운영 감시 — vol 전용이면 주석 유지
|
# (선택) fractal 운영 감시 — vol 전용이면 주석 유지
|
||||||
# */5 * * * * /Users/dsyoon/workspace/bithumb/scripts/3_run_watch_cron.sh >> /Users/dsyoon/workspace/bithumb/data/spot/operations/watch_cron.log 2>&1
|
# */5 * * * * /Users/dsyoon/workspace/bithumb/scripts/3_run_watch_cron.sh >> /Users/dsyoon/workspace/bithumb/data/spot/operations/watch_cron.log 2>&1
|
||||||
|
|||||||
@@ -1,18 +1,23 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Bithumb cron 등록 — 기존 crontab에 BITHUMB 블록 병합/갱신
|
# Bithumb cron 등록 — 기존 crontab에 BITHUMB 블록 병합/갱신/비활성화
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||||
MARKER_BEGIN="# BITHUMB vol_breakout cron (begin)"
|
MARKER_BEGIN="# BITHUMB vol_breakout cron (begin)"
|
||||||
MARKER_END="# BITHUMB vol_breakout cron (end)"
|
MARKER_END="# BITHUMB vol_breakout cron (end)"
|
||||||
|
MARKER_BEGIN_ALT="# BITHUMB (begin)"
|
||||||
|
MARKER_END_ALT="# BITHUMB (end)"
|
||||||
EXAMPLE="${ROOT}/scripts/crontab.bithumb.example"
|
EXAMPLE="${ROOT}/scripts/crontab.bithumb.example"
|
||||||
|
BITHUMB_CRON_RE='bithumb/scripts/(00_run_download_cron|3_run_vol_breakout_cron|3_run_vol_monitor_cron|3_ensure_vol_monitor_serve|3_run_watch_cron)\.sh'
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Usage: $(basename "$0") [--apply|--show|--remove]
|
Usage: $(basename "$0") [--show|--apply|--disable|--enable|--remove]
|
||||||
|
|
||||||
--show 등록될 cron 블록만 출력 (기본)
|
--show 등록될 cron 블록만 출력 (기본)
|
||||||
--apply crontab에 BITHUMB 블록 병합 후 설치
|
--apply crontab에 BITHUMB 블록 병합 후 설치 (example 주석=비활성)
|
||||||
|
--disable crontab BITHUMB 블록 내 실행 줄을 # 주석 처리
|
||||||
|
--enable crontab BITHUMB 블록 내 cron 줄 주석 해제
|
||||||
--remove crontab에서 BITHUMB 블록 제거
|
--remove crontab에서 BITHUMB 블록 제거
|
||||||
|
|
||||||
환경 변수:
|
환경 변수:
|
||||||
@@ -22,6 +27,7 @@ Usage: $(basename "$0") [--apply|--show|--remove]
|
|||||||
data/common/download_cron.log
|
data/common/download_cron.log
|
||||||
data/spot/operations/vol_breakout_cron.log
|
data/spot/operations/vol_breakout_cron.log
|
||||||
data/spot/operations/vol_monitor_cron.log
|
data/spot/operations/vol_monitor_cron.log
|
||||||
|
data/spot/operations/vol_monitor_serve.log
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,18 +35,45 @@ render_block() {
|
|||||||
{
|
{
|
||||||
echo "$MARKER_BEGIN"
|
echo "$MARKER_BEGIN"
|
||||||
sed "s|/Users/dsyoon/workspace/bithumb|${ROOT}|g" "$EXAMPLE" \
|
sed "s|/Users/dsyoon/workspace/bithumb|${ROOT}|g" "$EXAMPLE" \
|
||||||
| grep -v '^#' | grep -v '^[[:space:]]*$'
|
| grep -v '^[[:space:]]*$'
|
||||||
echo "$MARKER_END"
|
echo "$MARKER_END"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strip_block() {
|
strip_block() {
|
||||||
awk -v b="$MARKER_BEGIN" -v e="$MARKER_END" '
|
awk -v re="${BITHUMB_CRON_RE}" '
|
||||||
$0 == b { skip=1; next }
|
$0 == "# BITHUMB vol_breakout cron (begin)" { skip=1; next }
|
||||||
$0 == e { skip=0; next }
|
$0 == "# BITHUMB vol_breakout cron (end)" { skip=0; next }
|
||||||
|
$0 == "# BITHUMB (begin)" { skip=1; next }
|
||||||
|
$0 == "# BITHUMB (end)" { skip=0; next }
|
||||||
skip { next }
|
skip { next }
|
||||||
/^# BITHUMB/ { next }
|
$0 ~ re { next }
|
||||||
/bithumb\/scripts\/(00_run_download_cron|3_run_vol_breakout_cron|3_run_vol_monitor_cron|3_run_watch_cron)\.sh/ { next }
|
{ print }
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle_block() {
|
||||||
|
local mode="$1"
|
||||||
|
awk -v mode="$mode" -v re="${BITHUMB_CRON_RE}" '
|
||||||
|
$0 == "# BITHUMB vol_breakout cron (begin)" || $0 == "# BITHUMB (begin)" {
|
||||||
|
in_b=1
|
||||||
|
print
|
||||||
|
next
|
||||||
|
}
|
||||||
|
$0 == "# BITHUMB vol_breakout cron (end)" || $0 == "# BITHUMB (end)" {
|
||||||
|
in_b=0
|
||||||
|
print
|
||||||
|
next
|
||||||
|
}
|
||||||
|
in_b && mode == "disable" && $0 !~ /^#/ && $0 ~ re {
|
||||||
|
print "# " $0
|
||||||
|
next
|
||||||
|
}
|
||||||
|
in_b && mode == "enable" && $0 ~ /^# / && $0 ~ re {
|
||||||
|
sub(/^# /, "")
|
||||||
|
print
|
||||||
|
next
|
||||||
|
}
|
||||||
{ print }
|
{ print }
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
@@ -68,6 +101,28 @@ case "$ACTION" in
|
|||||||
rm -f "$tmp"
|
rm -f "$tmp"
|
||||||
echo "crontab installed. 확인: crontab -l"
|
echo "crontab installed. 확인: crontab -l"
|
||||||
;;
|
;;
|
||||||
|
--disable)
|
||||||
|
tmp="$(mktemp)"
|
||||||
|
if crontab -l 2>/dev/null | toggle_block disable > "$tmp"; then
|
||||||
|
crontab "$tmp"
|
||||||
|
echo "BITHUMB cron 비활성화(주석 처리) 완료."
|
||||||
|
else
|
||||||
|
echo "crontab empty or not found." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f "$tmp"
|
||||||
|
;;
|
||||||
|
--enable)
|
||||||
|
tmp="$(mktemp)"
|
||||||
|
if crontab -l 2>/dev/null | toggle_block enable > "$tmp"; then
|
||||||
|
crontab "$tmp"
|
||||||
|
echo "BITHUMB cron 활성화(주석 해제) 완료."
|
||||||
|
else
|
||||||
|
echo "crontab empty or not found." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f "$tmp"
|
||||||
|
;;
|
||||||
--remove)
|
--remove)
|
||||||
tmp="$(mktemp)"
|
tmp="$(mktemp)"
|
||||||
if crontab -l 2>/dev/null | strip_block > "$tmp"; then
|
if crontab -l 2>/dev/null | strip_block > "$tmp"; then
|
||||||
|
|||||||
Reference in New Issue
Block a user