Como posso executar um programa automaticamente no meu VPS?

0

Atualmente possuo um VPS com o Centos7 instalado. Eu também tenho um ' Steambot programado' que eu gostaria de colocar no VPS e tê-lo executado automaticamente em todos os momentos enquanto o VPS estiver online. Não tenho certeza de como fazer isso, pesquisei e reparei em um post no subreddit do / r / SteamBot que o mono era necessário no VPS para conseguir isso. Não tenho certeza em vez disso ou não que é verdade ou não, o que me trouxe aqui.

    
por cscodismith 02.11.2015 / 06:46

2 respostas

0

Primeiro, execute-o para executar "manualmente". Se ainda não o fez, instale epel e mono , e faça o bot funcionar. Você basicamente precisará escrever algo que iniciará o comando e o manterá em execução.

  1. Escreva um script de inicialização para iniciá-lo. O Centos 7 usa o systemd, que permite que você faça coisas legais como reiniciar automaticamente. Eu não mergulhei no systemd, mas está bem documentado.

  2. O método que eu normalmente uso é supervisord . Não é nível do sistema. irá reiniciar as coisas em caso de falha, e tem um webui opcional

Seu script de supervisão é tão simples quanto

command=command to run steambot
directory=directory you want to run steambot in
autostart=true
startretries=5
stderr_logfile=/var/log/supervisor/ttrss/ttrss.err.log
user=www-data

Isso registra erros e você pode adicionar uma linha para registrar a saída padrão para fins de solução de problemas.

  1. Adicione ao seu crontab se for um aplicativo não interativo (senão fica mais complicado). @reboot irá iniciá-lo uma vez quando você reiniciar, mas os outros métodos são melhores, já que eles registram e reiniciam o erro
por 02.11.2015 / 06:57
0

A coisa mais simples é escrever um serviço systemd. O Systemd tem um grande leque de possibilidades, e você não especificou o que você deseja, então eu vou te dar um script bem simples:

   [Unit]
   Description=Some comment here about what this does
   After=network.target

   [Service]
   EnvironmentFile=-/path/to/flag/setting/file
   ExecStart=/absolute/path/to/executable $FLAGS
   ExecReload=/bin/kill -HUP $MAINPID
   KillMode=process
   Restart=on-failure
   User=%i
   Group=users

   [Install]
   WantedBy=multi-user.target

A variável $ FLAGS deve ser definida no arquivo /path/to/flag/setting/file , se for uma opção complexa, caso contrário, basta excluir esta linha e substituir a abaixo por

  ExecStart=/absolute/path/to/executable -i -f -d

ou qualquer sinal que você precisar. O acima deve ser colocado em um arquivo chamado [email protected] . Desta forma, pode ser chamado como

  systemctl [email protected]  

e o exutável será executado como usuário MyName. Você deve colocar o arquivo acima em /etc/systemd/user , para que ele seja executado como um serviço do usuário, não como um serviço do sistema. A vantagem disso é que qualquer usuário pode executá-lo, não apenas root. Você sempre pode controlá-lo com systemctl --user .

Se, ao invés disso, você não se importar com a possibilidade de outros usuários executarem o serviço, use a linha

     User=MyName

salve o arquivo em myservice.service e controle-o sem passar o argumento, como systemctl myservice ...

    
por 02.11.2015 / 08:03

Tags