Schedule a ARK: Survival Evolved server restart

ARK is the game where scheduled restarts matter most, and where doing them carelessly costs the most. Memory use climbs steadily with dino count and structure count, and a server left up for a week will be visibly worse than one restarted daily.

When should it restart?

Use {{minutes}} where the countdown number should go.

What happens, in order

  1. Job startsWarnServerChat Server restarting in 15 min
  2. 10 min beforeWarnServerChat Server restarting in 10 min
  3. 5 min beforeWarnServerChat Server restarting in 5 min
  4. 1 min beforeWarnServerChat Server restarting in 1 min
  5. Restart timeSaveSaveWorld
  6. Restart timeStopDoExit

Always send SaveWorld and wait for it to return before DoExit. ARK does not reliably save on shutdown, and this is the single most common cause of a rolled-back tribe base.

The crontab line

Shifted 15 minutes earlier than your chosen time, so the restart itself lands on it rather than 15 minutes after.

45 3 * * *  /opt/restart-ark_se.sh

The script it runs

Save as /opt/restart-ark_se.sh and make it executable. It assumes rcon-cli is on the path and reads the password from the environment rather than embedding it.

#!/usr/bin/env bash
set -euo pipefail

# Scheduled restart for ARK: Survival Evolved.
# Generated by spawnly.net/tools/restart-scheduler

# The password stays out of this file. Put it in the environment, or in a
# file only root can read, and export it before this script runs.
RCON_HOST="${RCON_HOST:-127.0.0.1}"
RCON_PORT="${RCON_PORT:-27020}"
: "${RCON_PASSWORD:?set RCON_PASSWORD before running}"

send() {
  rcon-cli --host "$RCON_HOST" --port "$RCON_PORT" --password "$RCON_PASSWORD" "$1"
}

# 15 minute warning
send 'ServerChat Server restarting in 15 min'

sleep 300
# 10 minute warning
send 'ServerChat Server restarting in 10 min'

sleep 300
# 5 minute warning
send 'ServerChat Server restarting in 5 min'

sleep 240
# 1 minute warning
send 'ServerChat Server restarting in 1 min'

sleep 60
# Flush the world to disk
send 'SaveWorld'

sleep 10
# Shut down cleanly
send 'DoExit'

# Give the process time to finish writing before anything restarts it.
sleep 30
systemctl start ark_se 2>/dev/null || true

Cron uses the server’s timezone, not yours. Check it with timedatectl before assuming 04:00 means 04:00 where you are — a container in UTC and an admin in Europe are two hours apart in summer and one in winter.

The part specific to ARK: Survival Evolved

Always send SaveWorld and wait for it to return before DoExit. ARK does not reliably save on shutdown — this is the single most common cause of a tribe logging in to find a day's progress gone, and it is entirely preventable. If you run a cluster, every map is a separate server with its own save, and every one of them needs the full sequence.

Support & Help