별도의 화면에서 두 명령 실행

별도의 화면에서 두 명령 실행

파일을 다운로드하려고 하는데 wget백그라운드와 분리된 화면에 있습니다...

내 초기 명령은 다음과 같습니다.

wget http://www.example.com/file.zip -O temp/file.zip; mv temp/file.zip downloads/file.zip;

downloads/이렇게 하면 다운로드 후 파일이 원활하게 이동되고 파일이 백그라운드에서 다운로드되는 동안 파일을 처리 할 수 없게 됩니다 .

이제 화면이 있는 백그라운드에서 실행해야 하므로 실행하고 분리합니다.

screen -dm wget http://www.example.com/file.zip -O temp/file.zip;

하지만 어떻게 이동 명령을 전달하고 첫 번째 명령이 완료될 때 실행되도록 할 수 있습니까?

편집하다: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'

답변1

내가 지정하면 작동합니다배쉬-c

screen -dm bash -c 'command1; command2;'

사용자이 솔루션은 댓글에서 제공되었습니다. 감사합니다.

답변2

보내려는 명령의 전체 순서를 묶으십시오 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'

관련 정보