Executando trabalhos contínuos remotamente

6

Sou novo no Linux e provavelmente estou fazendo uma pergunta básica. Como faço para executar um programa contínuo no Linux?

Basicamente, tenho um programa que verifica constantemente o conteúdo de um site. Este programa estará em execução por vários dias. Eu não tenho privilégios administrativos no computador em que desejo executar este programa e também não tenho acesso exclusivo a este computador, o que significa que outros usuários podem fazer logon fisicamente. Além disso, salvo algum desastre incalculável, o computador estará funcionando durante toda a duração do meu programa.

Eu sei que posso usar o SSH na máquina e executar o programa. No entanto, isso não é desejável, pois eu precisaria de uma segunda máquina para fazê-lo (o que meio que acaba com o que estou fazendo), sem mencionar os problemas de timeout.

Existe uma maneira de executar meu programa no computador remotamente sem estabelecer uma conexão de algum tipo depois que eu iniciei?

    
por Anne Nonimus 23.08.2010 / 07:34

3 respostas

11

Se for algo que precisa acontecer em intervalos regulares, use cron (por exemplo, você precisa verificar o site uma vez a cada hora, ou uma vez por dia, ou mais ou menos frequentemente, mas ainda não definido arbitrariamente).

No entanto ... Você pode querer executar um comando em um momento posterior em vez de agora , para isso você deseja usar o daemon at , que permite executar um comando uma vez em uma data / hora posterior (como se fossem 5 horas e você quer ir para casa, mas você tem um processo de 4 horas que seria melhor executado no meio da noite, e não é recorrente).

Eu direi que nohup , screen , tmux foram mencionados, use nohup se você quiser executá-lo agora, mas não quiser se reconectar a essa sessão para ver mais tarde. screen / tmux são para verificar mais tarde.

    
por 23.08.2010 / 08:34
4

Você precisa fazer duas coisas:

  1. Execute o comando com nohup . Isso impede que a máquina remota encerre o comando quando você desconectar
  2. Execute o comando em segundo plano, anexando & . Isso não é estritamente necessário, mas o retornará a um shell em vez de bloquear o comando, para que você possa se desconectar normalmente ou fazer outras coisas

Então, para o comando command :

nohup command &
    
por 23.08.2010 / 07:39
4

nohup é definitivamente o caminho certo a percorrer se você puder executar seu programa sem interagir com ele: se ele gravar todas as suas mensagens de saída e erro em um arquivo que você pode obter posteriormente, por exemplo. / strike> verifique o arquivo nohup.out para ver as mensagens de erro que o programa deixou para trás durante a execução (obrigado pela correção, Michael!)

Se você precisa interagir com o programa enquanto ele está em execução, Tela GNU pode ser a melhor maneira de fazê-lo . Ele permite que você crie um terminal virtual que permanece em execução mesmo após o logout, juntamente com todos os programas iniciados, contanto que ninguém desligue o computador. Aqui está um tutorial eu encontrei em usá-lo.

    
por 23.08.2010 / 08:08