Configurar servidor de CSGO para iniciar automático na inicialização do Linux Ubuntu

Olá, preciso configurar um script ou algum comando para dar start em um servidor de csgo em uma VPS linux Ubuntu, ja tentei algumas configs, mas acho que em maquina virtual deve ser diferente, pq ate agora nao consegui fazer o servidor ligar quando eu ligo o servidor no painel da VPS.

São 3 linhas de comando que preciso configurar no start do linux, são esses:

sudo su - csgo

tmux

~/csgo-ds/srcds_run -game csgo -tickrate 128 -usercon -maxplayers_override 13 -maxplayers 13 -autoupdate -net_port_try 1 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount

1 Curtida

Dois problemas aqui:

Desse jeito, esse comando vai abrir um terminal dentro do terminal com uma sequência de comandos paralela.

Pode não parecer assim quando você tá usando terminal interativamente, mas note que ao fazer su qualquerusuário, digitar exit volta ao primeiro usuário, e depois de sair ele não lembra do histórico que você criou enquanto estava no su. O terminal do seu usuário ficou “dormente” e deixou-se ocupar pelo de outro e quando esse outro terminal sai, o seu volta.

Se esse for o Terminal Multiplexer, vai ter o mesmo problema de um terminal dentro de um terminal, que espera ter uma sequência própria de comandos, que o sudo su - csgo.

Minha solução seria:

su csgo -c '~/csgo-ds/srcds_run -game csgo -tickrate 128 -usercon -maxplayers_override 13 -maxplayers 13 -autoupdate -net_port_try 1 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount' &

Com a opção -c COMANDO o su não vai atrás da entrada do usuário, faz o comando direto e no máximo pede a senha da conta.

O & no final estipula que o servidor vai rodar no fundo (você ainda pode caçar e matar ele com htop, killall etc.)

1 Curtida

Boa tarde meu amigo, testei sua solução e deu certissimo, unica modificação que fiz foi manter o sudo su - csgo, so assim ele executou o comando correto.
Agora tenho mais uma duvida, preciso colocar um comando de atualizar o servidor antes de executar o comando que liga o servidor, qual sua suloção? eu posso apenas colocar este comando de atualizar antes do comando de ligar?
o comando que preciso é este : steamcmd +force_install_dir ~/csgo-ds/ +login anonymous +app_update 740 +quit

Agrupe os comandos num arquivo .SH no servidor, na ordem apropriada, por exemplo, server_start.sh

#! /bin/bash
COMANDO_PRA_ATUALIZAR
COMANDO_PRA_LIGAR_SERVIDOR
COMANDOS_ETC

Substitua os COMANDO pelos comandos apropriados.

Dê permissão de execução com chmod +x server_start.sh

Coloque o server_start.sh como arquivo de inicialização.

Deu certo, ta funcionando perfeito… só mais uma duvida, quando eu precisar finalizar o servidor eu dei o comando kill mas ele fecha e abre de novo automático, tem algum comando que eu dou para terminar o processo sem ele reiniciar automático? E mais uma ultima pergunta, eu consigo visualizar o terminal que esta rodando o servidor do jogo? pq ele inicia automatico blz, mas eu queria poder ver a tela do servidor rodando quando eu acessar pelo ssh.

Eu não faço ideia do que esteja causando isso.

Depois do COMANDO_PARA_LIGAR e antes do & que põe o programa no fundo, insira >/home/csgo/log.txt 2>&1. Isso vai copiar tudo que sairia no terminal do servidor para o arquivo log.txt. Aí dar cat nele pra mostrar o conteúdo.