Executar um comando em um shell e continuar executando o comando quando você fechar a sessão

StackOverflow https://stackoverflow.com/questions/431521

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu estou usando Putty se conectar a um servidor remoto. O que eu quero saber é se existe alguma maneira de escrever os meus mandamentos e permitir-lhes continuar correndo depois de eu fechar a sessão com Putty. A razão para isso é que eu não quero manter o computador ligado o tempo todo. Existe alguma maneira de fazer isso?.

Atualização com a solução

Para a minha pergunta como é apresentada a melhor solução é usar um dos comandos fornecidos como nohup , porque você não precisa instalar nenhum software adicional. Mas se você está na mesma tela o uso problema, instalá-lo e usá-lo. É incrível.

Eu selecionei a resposta de Norman Ramsey como causa favorita propor várias soluções usando comandos e tela . Mas por favor, verifique as outras respostas especialmente a de PEZ, então você obtém uma visão do que a tela é capaz de tarefas.

Foi útil?

Solução

nohup, disown e screen são todos bons, mas screen é a melhor, porque ao contrário dos outros dois, screen permite desconectar do servidor remoto, manter tudo funcionando, e volte a ligar mais tarde para ver o que está acontecendo. Com nohup e disown você não pode continuar interagindo.

Outras dicas

ecrã! É a melhor coisa desde o pão fatiado. (Sim, eu sei outros já sugeriu, mas é tão bom todo o mundo deve participar e sugerir-lo também.)

tela é como, como, ummmm ... como usar VNC ou similar para ligar a um destop GUI, mas para janelas de shell de comando. Você pode ter várias "janelas" shell abertos ao mesmo tempo na mesma sessão tela. Você pode fazer coisas como:

  1. Inicie uma sessão telas usando "tela -Dr" (se acostumar a usar -Dr)
    • executar alguns comandos em uma janela
    • pressione Ctrl - A , C para criar uma nova janela abrir um arquivo existe no vim
    • pressione Ctrl - A , 0 para voltar para a primeira janela e emitir algum comando sobre o arquivo que você acabou de editar
    • Ctrl - A , 1 para voltar à sua sessão vim
    • Ctrl - A , C para mais uma janela e talvez fazer "sudo - su" (porque você só acontecerá a precisar de uma completa shell de root)
    • Ctrl - A , 0 e iniciar um processo de fundo
    • Ctrl - A , C para criar ainda uma nova janela, "tail -f" o registro para esse processo de fundo
    • Ctrl - A , d Para desligar o ecrã, em seguida, Ctrl - D para desligar o servidor
    • Vá de férias por três semanas
    • Inicie a sessão no servidor novamente e emissão "tela -Dr" para conectar a sua sessão de tela existente
    • verificar o log na quarta janela a com Ctrl - A , 3 (é como se você estivesse lá observando tudo o tempo)
    • Ctrl - A , 1 para pegar aquela sessão vim novamente
    • Eu acho que você está começando a receber a imagem agora? =)

É como mágica. Eu estive usando a tela por mais tempo do que me lembro, e eu ainda estou totalmente surpreso com o quão grande sangrenta que é.

Editar : Só quero mencionar há agora também tmux . Muito parecido com tela , mas tem algumas características únicas, dividindo a Windows que está sendo o mais proeminente.

Tente usar GNU tela . Ele permite que você tenha várias conchas abertas ao mesmo tempo. E você pode desconectar a partir dessas conchas em execução (ou seja, perto sessão com Putty) e eles vão continuar fazendo a sua coisa.

O que você está procurando é nohup .

Veja o link wiki para saber como usá-lo.

tela é o melhor.

Tente:

tela -dmS tail "MyTail" -f / var / log / syslog

Este comando de partida no fundo.

Use a tela -r para lista e ou tela -r Mytail para entrar sessão.

Se mais usuários precisam ter acesso mesma sessão, use:. Tela -rx MyTail, e ambos ou mais usuários compartilhar a sessão

Se você não pode usar screen (porque, por exemplo, a sua sessão SSH está sendo conduzido por meio de programação), você também pode usar daemonize para executar o programa como um daemon.

Uma maneira que funciona bem para mim é at.

at funciona como cron, mas para um trabalho a tempo um. Usei-o hoje para baixar um arquivo grande sem ter que manter a minha sessão vivo.

Por exemplo:

$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D  

Você passa at um tempo (no futuro) e dá-lhe um aviso. Você inserir os comandos que você deseja executar naquele momento e ctrl + hit d. Você pode sair de sua sessão e vai executar os comandos no tempo especificado.

Wikipedia tem mais informações sobre at.

./command & disown
ssh localhost && ./command && exit
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top