wget
を使用してファイルをダウンロードしようとしていますが、バックグラウンドで切り離された画面の内側で...
私の最初のコマンドは:
wget http://www.example.com/file.Zip -O temp/file.Zip; mv temp/file.Zip downloads/file.Zip;
これは、ダウンロードされたファイルを適切に移動し、バックグラウンドでダウンロードしている間はdownloads/
ファイルを処理できなくなります。
次に、それを画面付きのbackgorundで実行する必要があるので、実行してデタッチします。
screen -dm wget http://www.example.com/file.Zip -O temp/file.Zip;
しかし、どうすればmoveコマンドを渡して、最初のコマンドが完了したときに実行されるようにできますか?
編集: DopeGhotiの回答に基づいて引用を試みました:
screen -dm 'wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; mv 1.bin 2.bin'
cannot identify account 'wget http:'.
この:
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
編集:/usr/bin/wget
と/usr/bin/mv
のフルパスを試してみましたが、セッション名が見つからないというメッセージが表示され、-S foo
を使用してセッション名を付けました。再開する画面はなく、ファイルはダウンロードされません。
screen -dm -S foo '/usr/bin/wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; /usr/bin/mv 1.bin 2.bin'
bash -cを指定すると機能します
screen -dm bash -c 'command1; command2;'
ユーザーmeuhこのソリューションをコメントで提供していただき、ありがとうございます。
screen
に送信する一連のコマンド全体を引用符で囲みます。それ以外の場合、最初のセミコロンはそのコマンドを終了し、残りをscreen
を呼び出しているシェルに送信します。
screen -dm 'wget http://www.example.com/file.Zip -O temp/file.Zip; mv temp/file.Zip downloads/file.Zip'
ただし、ダウンロードが成功した場合にのみファイルを移動することをお勧めします。
screen -dm 'if wget http://www.example.com/file.Zip -O temp/file.Zip; then mv temp/file.Zip downloads/file.Zip; fi'