Executar um comando em um shell e continuar executando o comando quando você fechar a sessão
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.
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:
- 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