내가 wget
백그라운드에서 사용하는 명령은 다음과 같습니다
wget -bq
그것은 인쇄한다
백그라운드에서 계속 실행합니다(PID 31754).
그러나 명령을 입력하면 jobs
내 작업이 표시되지 않습니다(다운로드가 아직 완료되지 않았지만).
답변1
wget
-b
또는와 함께 --background
사용하는 경우그 자체현재 쉘에서 연결을 해제하여 배경으로 들어갑니다(하위 프로세스를 포크하고 상위 프로세스를 종료함으로써). 백그라운드에 비동기 작업으로 넣어주는 쉘이 아니기 때문에 사용시 작업으로 표시되지 않습니다 jobs
.
wget
셸에서 비동기(백그라운드) 작업으로 실행 하려면 다음을 사용하세요.
wget ... URL &
이렇게 하면 출력을 파일로 리디렉션하거나(사용하면 wget
이 작업이 자동으로 수행됨 ) -b
로 리디렉션하거나 또는 을 /dev/null
사용하여 -q
삭제할 수도 있습니다 --quiet
.
답변2
그 자체가 배경에 놓여 있기 때문입니다. &
bash에게 이를 백그라운드로 두고 bash의 작업 목록에 넣도록 지시하는 데 사용됩니다 .
배경과 작업 제어 목록이 다릅니다. Bash는 모든 백그라운드 프로세스를 작업 제어 목록(기본적으로)에 넣습니다. 그러나 프로세스는 목록에 넣지 않고도 백그라운드로 처리될 수 있습니다. bash만이 목록에 작업을 넣을 수 있습니다.
이 옵션에는 장점이 있을 수 있습니다 -bg
(무엇인지 모르겠습니다). 예를 들어 ssh
, 백그라운드에 배치하기 전에 비밀번호가 필요한 백그라운드 옵션이 있습니다.
답변3
pid가 31754인 프로세스가 존재합니다. 입력하면 ps -e |grep 31754
다시 포그라운드로 이동할 수 있는 작업이 아니기 때문에 jobs 명령이 이를 표시하지 않습니다. wget -bq
다시 전경으로 이동하도록 선택하지 않고도 자동으로 출력을 배경으로 보냅니다.
답변4
나는 보통 tail wget-log
다운로드 상태를 파악하기 위해 로그의 마지막 몇 줄을 봅니다.