-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_cron.sh
More file actions
executable file
·90 lines (79 loc) · 3.16 KB
/
Copy pathsetup_cron.sh
File metadata and controls
executable file
·90 lines (79 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
# Get the absolute path of the script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
IMAGE_FETCH_SCRIPT="$SCRIPT_DIR/fetchers/fetch_cmrs_image.ts"
API_FETCH_SCRIPT="$SCRIPT_DIR/fetchers/fetch_meteofrance_api.ts"
BACKUP_SCRIPT="$SCRIPT_DIR/fetchers/backup/backup_to_s3.sh"
# Node.js 22 paths (explicit for cron compatibility)
NODE_PATH="/home/chtitux/.nvm/versions/node/v22.18.0/bin/node"
NPX_PATH="/home/chtitux/.nvm/versions/node/v22.18.0/bin/npx"
echo "Setting up hourly cron jobs for weather data fetching..."
# Check if Node.js 22 is installed at the expected path
if [ ! -x "$NODE_PATH" ]; then
echo "Error: Node.js 22 is not installed at $NODE_PATH"
echo "Please install Node.js 22 via nvm"
exit 1
fi
# Check if npx is available
if [ ! -x "$NPX_PATH" ]; then
echo "Error: npx is not installed at $NPX_PATH"
echo "Please install Node.js 22 via nvm"
exit 1
fi
# Make fetch scripts executable
chmod +x "$IMAGE_FETCH_SCRIPT"
chmod +x "$API_FETCH_SCRIPT"
# Cron jobs definitions (using explicit Node.js 22 paths for cron compatibility)
IMAGE_CRON_JOB="0 * * * * $NODE_PATH $NPX_PATH tsx $IMAGE_FETCH_SCRIPT >> $SCRIPT_DIR/fetch.log 2>&1"
API_CRON_JOB="0 * * * * cd $SCRIPT_DIR/fetchers && $NODE_PATH $NPX_PATH tsx $API_FETCH_SCRIPT >> $SCRIPT_DIR/fetchers/fetch_api.log 2>&1"
BACKUP_CRON_JOB="5 * * * * $BACKUP_SCRIPT >> $SCRIPT_DIR/fetchers/backup.log 2>&1"
# Setup image fetch cron job
echo ""
echo "=== Image Fetch Cron Job ==="
if crontab -l 2>/dev/null | grep -F "$IMAGE_FETCH_SCRIPT" >/dev/null 2>&1; then
echo "Image fetch cron job already exists!"
crontab -l | grep -F "$IMAGE_FETCH_SCRIPT"
else
(crontab -l 2>/dev/null; echo "$IMAGE_CRON_JOB") | crontab -
echo "Image fetch cron job added successfully!"
echo "Logs: $SCRIPT_DIR/fetch.log"
fi
# Setup API fetch cron job
echo ""
echo "=== API Fetch Cron Job ==="
if crontab -l 2>/dev/null | grep -F "$API_FETCH_SCRIPT" >/dev/null 2>&1; then
echo "API fetch cron job already exists!"
crontab -l | grep -F "$API_FETCH_SCRIPT"
else
(crontab -l 2>/dev/null; echo "$API_CRON_JOB") | crontab -
echo "API fetch cron job added successfully!"
echo "Logs: $SCRIPT_DIR/fetchers/fetch_api.log"
fi
# Setup S3 backup cron job
echo ""
echo "=== S3 Backup Cron Job ==="
if crontab -l 2>/dev/null | grep -F "$BACKUP_SCRIPT" >/dev/null 2>&1; then
echo "S3 backup cron job already exists!"
crontab -l | grep -F "$BACKUP_SCRIPT"
else
(crontab -l 2>/dev/null; echo "$BACKUP_CRON_JOB") | crontab -
echo "S3 backup cron job added successfully!"
echo "Logs: $SCRIPT_DIR/fetchers/backup.log"
fi
echo ""
echo "Fetch scripts will run every hour at minute 0"
echo "Backup script will run every hour at minute 5"
echo ""
echo "To view current crontab: crontab -l"
echo "To remove cron jobs: crontab -e (and delete the lines)"
echo ""
echo "Running fetch scripts once now to test..."
echo ""
echo "=== Testing Image Fetch ==="
cd "$SCRIPT_DIR" && "$NODE_PATH" "$NPX_PATH" tsx "$IMAGE_FETCH_SCRIPT"
echo ""
echo "=== Testing API Fetch ==="
cd "$SCRIPT_DIR/fetchers" && "$NODE_PATH" "$NPX_PATH" tsx "$API_FETCH_SCRIPT"
echo ""
echo "=== Testing S3 Backup ==="
"$BACKUP_SCRIPT"