O maior portal de MU Online do Brasil — desde 2003
Tutorial Intermediário Infraestrutura

Como automatizar tarefas com o Task Scheduler no servidor de MU

Use o Agendador de Tarefas do Windows para automatizar reinícios, backups, limpeza de logs e eventos do seu servidor de MU Online, com scripts prontos e um método para diagnosticar tarefas que não disparam.

BR Bruno · Atualizado em 14 jul 2026 · ⏱ 20 min de leitura
Resposta rápida

Um servidor de MU Online vive de rotina: reiniciar processos para liberar memória, gerar backup do banco, limpar logs que incham o disco, ligar e desligar eventos sazonais, e garantir que tudo suba de novo depois de um reboot do VPS. Fazer isso na mão funciona enquanto você está online e lembra — e

Um servidor de MU Online vive de rotina: reiniciar processos para liberar memória, gerar backup do banco, limpar logs que incham o disco, ligar e desligar eventos sazonais, e garantir que tudo suba de novo depois de um reboot do VPS. Fazer isso na mão funciona enquanto você está online e lembra — e falha exatamente no fim de semana em que você viajou. O Agendador de Tarefas do Windows (Task Scheduler) resolve isso de graça, com o que já vem instalado no Windows Server. Este tutorial mostra um método completo: quais tarefas de MU vale a pena automatizar, como escrevê-las como scripts robustos, como agendá-las corretamente e como diagnosticar a causa número um de dor de cabeça — a tarefa que aparece como "concluída" mas não fez nada. Todos os caminhos, horários e nomes de serviço aqui são exemplos e variam por provedor/versão do seu emulador e do Windows.

Pré-requisitos

Antes de agendar qualquer coisa, você precisa de um servidor de MU já funcionando para automatizar — não faz sentido agendar o reinício de um GameServer que ainda não roda. Se você ainda está montando a base, comece por como criar um servidor de MU Online e volte aqui depois. Assumindo o servidor no ar, você vai precisar de:

  • Acesso administrador ao Windows Server do VPS (via RDP), porque criar tarefas que rodam sem sessão exige privilégio elevado.
  • Os caminhos absolutos das pastas do servidor: onde está o GameServer.exe, o ConnectServer.exe, o JoinServer.exe e a pasta de logs. Anote-os, você vai usá-los muito.
  • Uma noção de PowerShell básico. Não precisa ser especialista; os scripts abaixo são comentados e você adapta os caminhos.
  • Espaço em disco reservado para backups e uma política de retenção definida (quantos dias guardar). Automação sem retenção enche o disco e derruba o servidor — o oposto do que você queria.
Dica: Crie uma pasta única D:\Scripts\ no servidor e guarde todos os seus scripts de automação lá. Ter tudo num lugar só facilita backup, versionamento e a hora de passar o servidor para outro admin.

O que vale a pena automatizar num servidor de MU

Nem toda tarefa deve ser automatizada, e nem todo horário é adequado. A tabela abaixo lista as automações mais comuns em servidores de MU, com a frequência típica e o horário sugerido. Os valores são exemplo e variam por provedor/versão e pelo perfil de jogadores do seu servidor.

TarefaFrequência típicaHorário sugeridoGatilho recomendado
Reinício do GameServerDiária05:00 (menor pico)Por horário
Backup do banco de dadosDiária + a cada 6h05:15 + intervalosPor horário
Limpeza de logs antigosSemanalDomingo 04:00Por horário
Subir servidor após rebootSob demandaAo iniciar o sistema
Ligar evento sazonalSazonalConforme calendárioPor horário
Verificação de processo vivoA cada 5 minPor horário (repetição)

A regra de ouro: automatize o que é repetitivo, previsível e de baixo risco. Reinício, backup e limpeza entram fácil. Já uma migração de banco ou uma atualização de versão do emulador não devem ser automatizadas — são operações que exigem olho humano e ponto de decisão.

Passo 1 — Escrever o script de reinício do GameServer

Antes de agendar, escreva o script. Uma tarefa agendada é só um gatilho; a inteligência está no script que ela dispara. Este exemplo em PowerShell para o reinício do GameServer, com aviso, verificação e log:

# Script: ReiniciarGameServer.ps1
# Reinicia o GameServer de forma controlada, com log.

param(
    [string]$GameServerDir  = "D:\MuServer\GameServer",
    [string]$GameServerExe  = "GameServer.exe",
    [string]$LogDir         = "D:\Scripts\Logs"
)

$LogFile = Join-Path $LogDir ("reinicio_{0}.log" -f (Get-Date -Format 'yyyyMM'))

function Write-Log {
    param([string]$Msg)
    $line = "[{0}] {1}" -f (Get-Date -Format 'yyyy-MM-dd HH:mm:ss'), $Msg
    Add-Content -Path $LogFile -Value $line
}

Write-Log "=== Iniciando reinicio controlado do GameServer ==="

# 1 -> Encerra o processo atual, se estiver rodando
$proc = Get-Process -Name ($GameServerExe -replace '\.exe$','') -ErrorAction SilentlyContinue
if ($proc) {
    Write-Log "GameServer rodando (PID $($proc.Id)). Encerrando..."
    Stop-Process -Id $proc.Id -Force
    Start-Sleep -Seconds 5
} else {
    Write-Log "GameServer nao estava rodando."
}

# 2 -> Sobe o GameServer novamente
$exePath = Join-Path $GameServerDir $GameServerExe
if (Test-Path $exePath) {
    Start-Process -FilePath $exePath -WorkingDirectory $GameServerDir
    Write-Log "GameServer iniciado a partir de $exePath"
} else {
    Write-Log "ERRO: executavel nao encontrado em $exePath"
    exit 1
}

Write-Log "=== Reinicio concluido ==="

Repare em três detalhes que separam um script amador de um profissional: caminho absoluto (nunca relativo), o WorkingDirectory definido explicitamente (o MU depende de arquivos na pasta dele), e o log com data. Sem o log você fica cego quando algo falhar às 5h da manhã.

Atenção: Muitos emuladores de MU precisam do GameServer rodando em sessão interativa (janela visível), não como serviço. Se o seu for assim, Start-Process funciona com a sessão aberta, mas ao fechar o RDP a janela pode encerrar dependendo da configuração. Teste o comportamento do seu emulador antes de confiar no reinício automático sem supervisão.

Passo 2 — Criar a tarefa no Agendador (interface gráfica)

Com o script pronto, agende-o. Abra o Agendador de Tarefas (taskschd.msc) e siga:

  1. No painel direito, clique em Criar Tarefa (não "Criar Tarefa Básica" — a completa dá mais controle).
  2. Na aba Geral: dê o nome MU_Reinicio_GameServer, marque Executar estando o usuário conectado ou não e Executar com privilégios mais altos.
  3. Na aba Disparadores: novo disparador, Diariamente, horário 05:00.
  4. Na aba Ações: nova ação, Iniciar um programa. No campo Programa: powershell.exe. Em Argumentos: -NonInteractive -ExecutionPolicy Bypass -File "D:\Scripts\ReiniciarGameServer.ps1". No campo Iniciar em: D:\Scripts\.
  5. Na aba Condições: desmarque "Iniciar a tarefa somente se o computador estiver na energia CA" (VPS roda 24h).
  6. Na aba Configurações: marque "Executar a tarefa assim que possível após uma inicialização agendada ter sido perdida".

O campo Iniciar em da etapa 4 é o que mais gente esquece e o que mais causa a falha silenciosa: sem ele, o PowerShell roda a partir de System32 e qualquer caminho relativo quebra.

Passo 3 — Criar tarefas via linha de comando (schtasks)

Para automação em escala, ou para documentar a criação da tarefa num script de setup, use o schtasks. É o mesmo agendador, sem cliques:

# Cria a tarefa de reinicio diario as 05:00, rodando como SYSTEM
schtasks /Create `
  /TN "MU_Reinicio_GameServer" `
  /TR "powershell.exe -NonInteractive -ExecutionPolicy Bypass -File D:\Scripts\ReiniciarGameServer.ps1" `
  /SC DAILY `
  /ST 05:00 `
  /RU "SYSTEM" `
  /RL HIGHEST `
  /F

# Cria tarefa que sobe todos os servidores ao iniciar o Windows
schtasks /Create `
  /TN "MU_Subir_ServidoresBoot" `
  /TR "powershell.exe -NonInteractive -ExecutionPolicy Bypass -File D:\Scripts\SubirTudo.ps1" `
  /SC ONSTART `
  /RU "SYSTEM" `
  /RL HIGHEST `
  /F

# Lista todas as tarefas MU criadas
schtasks /Query /TN "MU_Reinicio_GameServer" /V /FO LIST

A tarefa MU_Subir_ServidoresBoot com /SC ONSTART é uma das mais valiosas: se o VPS reiniciar sozinho de madrugada (atualização forçada, queda de energia no datacenter), seus servidores voltam sozinhos, na ordem certa, sem você acordar.

Passo 4 — Script mestre que sobe os servidores na ordem correta

O MU tem ordem de inicialização: primeiro o banco de dados deve estar no ar, depois DataServer/ConnectServer, depois JoinServer, e por último os GameServers. Subir tudo de uma vez, fora de ordem, gera erros de conexão. Um script mestre resolve:

# Script: SubirTudo.ps1
# Sobe os componentes do MU na ordem correta, com espera entre eles.

$base = "D:\MuServer"
$LogFile = "D:\Scripts\Logs\boot_$(Get-Date -Format 'yyyyMM').log"

function Log($m){ Add-Content $LogFile "[$(Get-Date -f 'yyyy-MM-dd HH:mm:ss')] $m" }
function Subir($nome, $pasta, $exe){
    $p = Join-Path $base "$pasta\$exe"
    if(Test-Path $p){
        Start-Process -FilePath $p -WorkingDirectory (Join-Path $base $pasta)
        Log "$nome iniciado."
    } else { Log "ERRO: $nome nao encontrado em $p" }
}

Log "=== BOOT do servidor MU ==="

# 1 -> Aguarda o SQL Server ficar pronto (exemplo: espera fixa)
Log "Aguardando banco de dados..."
Start-Sleep -Seconds 30

Subir "DataServer"    "DataServer"    "DataServer.exe";    Start-Sleep 8
Subir "ConnectServer" "ConnectServer" "ConnectServer.exe"; Start-Sleep 5
Subir "JoinServer"    "JoinServer"    "JoinServer.exe";    Start-Sleep 5
Subir "GameServer"    "GameServer"    "GameServer.exe"

Log "=== BOOT concluido ==="

Os tempos de espera (Start-Sleep) são exemplo e variam por provedor/versão e pelo hardware do VPS. Num servidor mais lento, aumente. O ideal, em vez de espera fixa, é checar se a porta do componente anterior já responde antes de subir o próximo — mas a espera fixa já resolve a maioria dos casos.

Passo 5 — Tarefa de vigilância (o servidor caiu, sobe de novo)

Uma tarefa que roda a cada poucos minutos e verifica se o GameServer está vivo transforma uma queda de madrugada num soluço de 3 minutos em vez de horas offline:

# Script: VigiaGameServer.ps1 - agende com repeticao a cada 5 min
$nome = "GameServer"
$proc = Get-Process -Name $nome -ErrorAction SilentlyContinue
if(-not $proc){
    Add-Content "D:\Scripts\Logs\vigia.log" "[$(Get-Date -f 'HH:mm:ss')] GameServer caiu. Subindo..."
    Start-Process "D:\MuServer\GameServer\GameServer.exe" -WorkingDirectory "D:\MuServer\GameServer"
}

Para agendar a repetição: na aba Disparadores, crie um disparador diário e, em "Configurações avançadas", marque Repetir a tarefa a cada 5 minutos por uma duração de "Indefinidamente".

Dica: Vigilância é ótima, mas cuidado com o efeito colateral: se o GameServer estiver travado num loop de crash, a vigia vai ressuscitá-lo a cada 5 minutos indefinidamente, mascarando o problema real. Adicione ao log um contador de reinícios e configure um alerta se ele subir demais em uma hora.

Erros comuns e soluções

SintomaCausa provávelSolução
Tarefa "concluída" mas script não fez nadaCaminho relativo ou campo "Iniciar em" vazioUse caminhos absolutos e preencha "Iniciar em" com a pasta do script
Código de resultado 0x1 no históricoErro dentro do script (arquivo não achado, permissão)Abra o log do script; rode-o manualmente pelo mesmo usuário da tarefa
Tarefa não dispara no horárioCondição de energia CA marcada, ou fuso/hora do servidor erradosDesmarque condição de CA; confira o relógio do VPS
0x41301 "em execução" travadaInstância anterior não encerrouMarque "Parar a tarefa se rodar mais que X horas"; revise o script
Script roda no meu login mas não sem sessãoPrecisa de sessão interativa (janela)Mantenha sessão, ou rode o processo como serviço com ferramenta dedicada
ExecutionPolicy bloqueia o scriptPolítica de execução restritivaUse -ExecutionPolicy Bypass no argumento, como nos exemplos
Histórico da tarefa vazioHistórico do Agendador desativadoNo painel direito, clique em "Habilitar Histórico de Todas as Tarefas"

O erro campeão é o primeiro da tabela. Sempre que uma tarefa "funcionar" mas nada acontecer, o primeiro reflexo deve ser: caminho absoluto? "Iniciar em" preenchido? Conta com permissão na pasta? Noventa por cento dos casos morrem aí.

Boas práticas de operação

Automação sem observabilidade é uma bomba-relógio. Três hábitos evitam a maioria dos desastres:

  1. Todo script escreve log com data e hora. Quando algo falha às 5h, o log é a única testemunha.
  2. Toda tarefa manda alerta em falha. Um Send-MailMessage ou um webhook de Discord no bloco de erro te avisa antes do jogador reclamar.
  3. Revise o histórico semanalmente. Cinco minutos olhando os códigos de resultado das tarefas revelam problemas antes que virem quedas.

E teste cada tarefa manualmente antes de confiar nela: no Agendador, botão direito na tarefa, Executar. Se roda bem sob demanda mas falha no horário, o problema está no gatilho ou na conta — não no script.

Checklist de lançamento

  • Caminhos absolutos de GameServer, ConnectServer, JoinServer e logs anotados
  • Pasta D:\Scripts\ criada com todos os scripts versionados
  • Script de reinício testado manualmente e gerando log
  • Tarefa de reinício diário criada, com "Iniciar em" preenchido
  • Tarefa de boot (ONSTART) subindo os servidores na ordem correta
  • Tarefa de backup agendada e integrada com a política de retenção
  • Tarefa de vigilância a cada 5 min com contador de reinícios
  • Condição de energia CA desmarcada em todas as tarefas
  • "Executar assim que possível se perder o horário" marcado onde faz sentido
  • Histórico do Agendador de Tarefas habilitado
  • Alertas de falha (e-mail ou Discord) configurados nos scripts críticos
  • Relógio e fuso horário do VPS conferidos
  • Cada tarefa executada manualmente ("Executar") e validada antes do lançamento

Com essas tarefas no lugar, o seu servidor de MU passa a se cuidar sozinho na maior parte do tempo: reinicia limpo, faz backup, se levanta após um reboot e avisa quando algo dá errado. Você deixa de ser refém do "espero que ninguém precise de mim de madrugada" e ganha o bem mais escasso de quem administra servidor: sono.

Perguntas frequentes

O que é o Task Scheduler e por que usá-lo num servidor de MU?

O Task Scheduler (Agendador de Tarefas) é o serviço nativo do Windows que dispara programas e scripts em horários ou eventos definidos, sem intervenção humana. Num servidor de MU ele resolve o problema da disciplina: reiniciar o GameServer de madrugada, rodar backup, limpar logs e ligar eventos deixam de depender de você lembrar. Enquanto o servidor estiver ligado, a tarefa roda. É gratuito, já vem no Windows Server e não exige software extra.

Preciso deixar a sessão do Windows aberta para as tarefas rodarem?

Não, e essa é justamente a vantagem. Marque a opção Executar estando o usuário conectado ou não e a tarefa roda como serviço, mesmo com ninguém logado via RDP. O detalhe é que tarefas que abrem janela (como uma janela de console do GameServer que precisa ficar visível) exigem sessão interativa; para essas, ou você mantém a sessão, ou usa uma ferramenta que rode o processo como serviço. Varia por versão do Windows Server.

Por que minha tarefa aparece como concluída mas o script não fez nada?

Quase sempre é caminho relativo ou permissão. O Task Scheduler roda a tarefa a partir de uma pasta que não é a do seu script, então caminhos como .\\GameServer.exe falham silenciosamente; use sempre caminhos absolutos e preencha o campo Iniciar em. O outro motivo comum é a conta: se a tarefa roda como SYSTEM ou como um usuário sem acesso à pasta do MU, o script não consegue ler os arquivos. Verifique o código de resultado no histórico da tarefa.

Posso reiniciar o GameServer automaticamente sem derrubar jogadores no meio de um evento?

Pode, com cuidado. O ideal é agendar o reinício para o horário de menor movimento (madrugada) e enviar um aviso no jogo antes, se o seu emulador suportar broadcast por linha de comando. Um script bem feito checa se há um evento crítico em andamento (Castle Siege, por exemplo) e adia o reinício. Nunca agende reinício automático em cima do horário de eventos importantes; o remédio vira problema.

Qual a diferença entre agendar por horário e agendar por evento?

Agendar por horário dispara a tarefa num relógio (todo dia às 5h, por exemplo) e é o mais usado para backup e reinício. Agendar por evento dispara a tarefa quando algo acontece no Windows: ao iniciar o sistema, ao um serviço parar, ou quando um ID específico aparece no Log de Eventos. Para MU, o gatilho ao iniciar o sistema é ouro: garante que ConnectServer, JoinServer e GameServer subam sozinhos depois de um reboot inesperado do VPS.

BR
Editor de eventos, mapas e itens

Bruno é especialista em eventos, mapas, bosses e economia de itens do MU Online. Documenta cada detalhe com base em jogo real.

Continue lendo

Artigos relacionados