JobData/jobs_spider/start_all.sh

55 lines
1.7 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
if command -v apt-get >/dev/null; then
if command -v sudo >/dev/null; then
sudo apt-get update -y
sudo apt-get install -y unzip python3 python3-pip tmux
else
apt-get update -y
apt-get install -y unzip python3 python3-pip tmux
fi
fi
python3 -m pip install -U requests loguru httpx fake-useragent PySocks --break-system-packages
use_tmux=0
if command -v tmux >/dev/null; then
use_tmux=1
fi
tmux_session="jobs_spider"
if [ "$use_tmux" -eq 1 ]; then
if ! tmux has-session -t "$tmux_session" 2>/dev/null; then
tmux new-session -d -s "$tmux_session" -c "$SCRIPT_DIR"
fi
fi
start_one() {
name="$1"
dir="$2"
entry="$3"
cd "$dir"
mkdir -p logs
if pgrep -f "$entry" >/dev/null; then
echo "$name 已在运行"
return 0
fi
if [ "$use_tmux" -eq 1 ]; then
if tmux list-windows -t "$tmux_session" 2>/dev/null | awk -F: '{print $2}' | awk '{print $1}' | grep -qx "$name"; then
if tmux respawn-window -t "$tmux_session:$name" -k -c "$dir" "python3 $entry >> logs/runner.log 2>&1"; then
:
else
tmux kill-window -t "$tmux_session:$name" 2>/dev/null || true
tmux new-window -t "$tmux_session" -n "$name" -c "$dir" "python3 $entry >> logs/runner.log 2>&1"
fi
else
tmux new-window -t "$tmux_session" -n "$name" -c "$dir" "python3 $entry >> logs/runner.log 2>&1"
fi
echo "$name tmux: $tmux_session:$name"
else
nohup python3 "$entry" >> logs/runner.log 2>&1 &
echo "$name PID: $!"
fi
}
start_one "boss" "$SCRIPT_DIR/boss" "boos_api.py"
start_one "qcwy" "$SCRIPT_DIR/qcwy" "qcwy.py"
start_one "zhilian" "$SCRIPT_DIR/zhilian" "zhilian_single.py"