![별도의 화면에서 두 명령 실행](https://linux55.com/image/115200/%EB%B3%84%EB%8F%84%EC%9D%98%20%ED%99%94%EB%A9%B4%EC%97%90%EC%84%9C%20%EB%91%90%20%EB%AA%85%EB%A0%B9%20%EC%8B%A4%ED%96%89.png)
파일을 다운로드하려고 하는데 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'