Escolha uma solução
Para manter um comando em execução após o encerramento da sessão SSH, escolha uma das soluções a seguir:
Solução 1: Usar os comandos nohup e &: Ideal para scripts ou comandos automatizados não interativos e de execução única.
Solução 2: Usar GNU screen: Recomendada para tarefas interativas de longa duração que podem exigir depuração ou retomada posterior.
Solução 1: Usar os comandos nohup e &
O comando nohup permite que um processo continue em execução mesmo após o fechamento do terminal, enquanto o símbolo & envia o processo para segundo plano.
-
Execute o comando em segundo plano.
Este comando redireciona tanto a saída quanto os erros para
[your_log_file].sudo nohup [your_command] >[your_log_file] 2>&1 &Por exemplo, para executar
bash hello.shem segundo plano e gravar a saída em um novo arquivo chamadooutput.logno diretório atual, execute o seguinte comando:sudo nohup bash hello.sh > output.log 2>&1 &. -
Visualize a saída do comando.
sudo tail -f [your_log_file] -
Encerre o processo.
ImportanteA finalização do processo encerra o comando ou tarefa. Prossiga com cautela.
-
Localize o ID do processo (PID). Substitua
[your_command]pelo comando executado na Etapa 1.sudo ps aux | grep "[your_command]"Por exemplo, se você executou
sudo nohup bash hello.sh > output.log 2>&1 &, executesudo ps aux | grep "bash hello.sh"para encontrar o PID correspondente. Use o comando
sudo kill [PID]para finalizar o processo.
-
Solução 2: Usar GNU screen
-
Instale o GNU screen.
-
Para Alibaba Cloud Linux e CentOS
sudo yum install -y screen -
Para Debian e Ubuntu
sudo apt-get install -y screen
-
-
Crie e insira uma nova sessão.
[Name]é um nome personalizado para sua sessão.screen -S [Name]Por exemplo, para criar uma sessão chamada
mysession, executesudo screen -S mysession. Execute sua tarefa na nova sessão.
-
Desconecte a sessão.
Pressione Ctrl+A+D para desconectar a sessão
screenatual. -
Retome a sessão.
-
Liste as sessões screen disponíveis para encontrar o PID da sessão desejada.
sudo screen -lsThere is a screen on: 2046.mytask (Detached) 1 Socket in /run/screen/S-root.Neste exemplo, o PID da sessão é
2046. -
Retome a sessão.
Substitua
[PID]pelo PID da sessão obtido na etapa anterior.sudo screen -r -d [PID]Por exemplo, para retomar a sessão com PID 2046, execute
sudo screen -r -d 2046.
-
-
Finalize a sessão.
ImportanteA finalização de uma sessão também encerra todas as tarefas e comandos em execução nela. Prossiga com cautela.
Substitua
[PID]pelo PID da sessão.sudo kill [PID]