Funciona se eu especificar bash -c
screen -dm bash -c 'command1; command2;'
O usuário meuh forneceu esta solução nos comentários, obrigado.
Estou tentando baixar um arquivo com wget
, mas em segundo plano e dentro de uma tela que se destaca ...
Meu comando inicial foi:
wget http://www.example.com/file.zip -O temp/file.zip; mv temp/file.zip downloads/file.zip;
Isso moveria bem o arquivo depois de baixado, impedindo que eu lide com downloads/
arquivos enquanto eles ainda fazem download em segundo plano.
Agora preciso executar isso em backgorund com tela, então corro e desanexo:
screen -dm wget http://www.example.com/file.zip -O temp/file.zip;
Mas como eu ainda posso passar o comando "Mover" para que ele seja executado quando o primeiro deles estiver concluído?
Editar: Eu tentei citações com base na resposta do DopeGhoti:
screen -dm 'wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; mv 1.bin 2.bin'
cannot identify account 'wget http:'.
e isso:
screen 'wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; mv 1.bin 2.bin'
cannot exec 'wget http://mirror[...] no such file or directory
Editar: eu tentei com caminhos /usr/bin/wget
e /usr/bin/mv
completos, queixou-se da falta do nome da sessão, dei o nome da sessão com -S foo
, agora ele sai silenciosamente, nenhuma tela para retomar e nenhum arquivo baixado:
screen -dm -S foo '/usr/bin/wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; /usr/bin/mv 1.bin 2.bin'
Coloque toda a seqüência de comandos que você está enviando para screen
entre aspas; caso contrário, o primeiro ponto-e-vírgula terminará esse comando e enviará o restante para o shell no qual você está invocando screen
:
screen -dm 'wget http://www.example.com/file.zip -O temp/file.zip; mv temp/file.zip downloads/file.zip'
No entanto, pode ser sensato apenas mover o arquivo se o download for bem-sucedido:
screen -dm 'if wget http://www.example.com/file.zip -O temp/file.zip; then mv temp/file.zip downloads/file.zip; fi'
Tags wget gnu-screen shell