백그라운드에서 "wget" 작업을 실행할 때 왜 볼 수 없나요?

백그라운드에서 "wget" 작업을 실행할 때 왜 볼 수 없나요?

내가 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다운로드 상태를 파악하기 위해 로그의 마지막 몇 줄을 봅니다.

관련 정보