apt Upgrade를 실행할 때 SSH 파이프가 손상되었습니다. 어떡해?

apt Upgrade를 실행할 때 SSH 파이프가 손상되었습니다. 어떡해?

내 aws debian wheezy 서버에 연결되어 있지만 apt-get upgrade실행 중에 SSH 파이프가 끊어집니다. 아무것도 사용하지 않아서 screen세션을 복원할 수 있는 방법이 없는 것 같습니다.

새 SSH 세션에 다시 연결하고 실행하면 다음 을 ps aux | grep apt볼 수 있습니다.aptdpkg아직도 달리고 있다

그들은 말 그대로 몇 시간 동안 달리고 있었습니다. 시스템 라이브러리/바이너리를 수정할 수 있으므로 이러한 프로세스를 종료하는 것이 안전하다고 상상할 수 없습니다. 하지만 어떻게 해야 합니까? 키보드 입력 등을 기다리고 있다면 어떻게 될까요? 처음에 업데이트를 설치하라는 요청을 받았을 때 이렇게 말 했는데 y추가 사용자 입력이 필요한지 모르겠습니다. 그들이 하고 있는 일을 끝내기 위해 apt몇 시간을 더 기다릴 계획입니다 . 하지만 아무 일도 일어나지 않으면 어떻게 해야 합니까?dpkg

답변1

세션을 다시 얻을 수 없습니다. 따라서 이 프로세스와 상호 작용하기 위해 아무것도 할 수 없습니다.

프로세스가 실행되고 있지 않은 것 같습니다. 내 생각엔 이게 apt-get아마 됐을 것 같아좀비지금까지. 어쨌든 ps또는 를 사용하여 프로세스를 확인할 수 있습니다 top. 실행 중이면 손을 떼고 완료되었는지 모니터링하세요. 유휴 상태로 남아 있으면 죽이십시오.

그런 다음 간단히 실행할 수 있습니다apt-get upgrade 다시프로세스를 종료한 후 세션이 중단되었을 때 업그레이드 중이던 패키지를 완료하거나 수정하세요.

답변2

SIGINT나는 그들에게 (키보드 인터럽트, 즉 Ctrl+C) 신호를 보내는 것이 트릭을 수행할 것이라고 생각합니다.

killall -SIGINT apt-get

또는

killall -2 apt-get

두 번 이상 시도해 볼 수도 있습니다.

답변3

당신은 시도 할 수 있습니다세션 다시 연결이런 도구를 사용하세요렙텔, 그러나 이것이 항상 작동하는 것은 아닙니다.

언제든지 해당 프로세스와 하위 프로세스를 종료할 수 있습니다 apt. dpkg모든 키트 유지 관리 작업은 갑작스러운 정전에 대비해야 합니다. 완료하려면 명령을 다시 실행하십시오.

SIGKILL이 아닌 SIGINT 또는 SIGTERM 신호를 APT 및 dpkg로 보내십시오. SIGKILL은 잠긴 파일을 그대로 둡니다. 이는 일반적인 규칙입니다. SIGINT를 사용할 수 있는 경우 SIGKILL을 사용하지 마십시오.

답변4

이는 앞으로 더 나은 일을 하는 데 도움이 됩니다. "화면"을 사용하는 것입니다.

이 데비안 게시물은 제가 심각한 문제를 해결하는 데 도움이 되었습니다:

https://wiki.debian.org/Teams/Dpkg/FAQ

sudo fuser -vki -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend

sudo dpkg --configure --pending

관련 정보