"작업 실행 중지..."에서 "작업 중지"란 정확히 무엇입니까?

"작업 실행 중지..."에서 "작업 중지"란 정확히 무엇입니까?

종료 명령을 실행한 후 다음과 같은 상태 메시지가 표시되는 경우가 있습니다.

A stop job is running for Session 1 of user xy

그런 다음 시스템은 ???에 따라 잠시 동안 또는 영원히 중단됩니다.

그렇다면 "봉쇄"란 정확히 무엇입니까?

또한, 왜 걸릴 시간을 상당히 정확하게 예측할 때도 있고, 영원히 걸릴 때도 있는 걸까요?

답변1

systemd는 "작업" 대기열에서 내부적으로 작동합니다. 각일하다(약간 단순화됨) 취해야 할 조치는 특정 작업을 중지, 확인, 시작 또는 다시 시작하는 것입니다.단위.

(예를 들어) systemd에게서비스 단위는 단위 요구 사항 및 종속성을 기반으로 목표를 달성하는 데 필요한 모든 단위(서비스 단위, 설치 단위, 장비 단위 등)에 대한 작업 중지 및 시작 목록을 개발하고 단위 주문 관계를 기준으로 정렬하여 문제를 해결하고 ( 가능한 경우) 불일치를 수정하고 (마지막 단계가 성공하면) 대기열에 넣습니다.

그런 다음 대기 중인 "작업"을 실행하려고 시도합니다.

사용자 xy에 대해 세션 1에서 실행 중인 작업 중지

그 단위이름 표시하기이것은 Session 1 of user xy. (표시 이름으로 판단하면)회의하나가 아닌 단위제공하다단위. 이는 logindsystemd 프로그램과 해당 PAM 플러그인에 의해 유지 관리되는 사용자 공간 로그인 세션 추상화입니다. 이는 (본질적으로나 이론적으로) 이 사용자의 어딘가에서 "로그인 세션"으로 실행되는 모든 프로세스를 그룹화한 것입니다.

대기 중인 작업은 입니다 stop. 시스템 사용자가 실수로 세션을 병합했기 때문에 시간이 오래 걸릴 수 있습니다.끊다세션 포함폐쇄. 그들은 후자를 작동시키기 위해 전자를 깨뜨리고, 이에 대응하여 일부 사람들은 전자를 작동시키기 위해 후자를 깨기 위해 시스템을 변경합니다. 체계화된 사람들은 이 두 가지가 서로 다르다는 사실을 깨달아야 합니다.

SIGTERM로그인 세션에서 무시 되거나 일단 확인된 후 종료하는 데 오랜 시간이 걸리는 항목이 있습니다 SIGTERM. 아이러니하게도 전자는 일부 작업 제어 셸의 오랜 동작입니다. 로그인 세션 리더가 이러한 특정 작업 제어 셸인 경우 이를 종료하는 올바른 방법은 세션이 종료되었음을 알리는 것입니다.안녕그래서 그들은 모두 종료했습니다그들의작업(내부 시스템 작업과 다른 유형의 작업)을 수행한 후 자체적으로 종료됩니다.

실제로 일어나는 일은 systemd가 장치의시간 초과 중지SIGKILL물론 이 시간 초과는 장치별로 구성할 수 있으며 시간 초과가 발생하지 않도록 설정할 수 있습니다 . 이것이 사람들이 다른 행동을 볼 수 있는 이유입니다.

추가 읽기

답변2

이러한 메시지는 작업을 시작하고 중지하는 초기화 시스템인 systemd에서 나옵니다. 작업은 데몬일 수도 있지만 디스크 마운트 및 마운트 해제, /tmp 삭제, 시작 시 화면 밝기 저장 및 복원과 같은 작은 작업일 수도 있습니다. systemctl list-units이 아이디어를 제공합니다. Systemd는 "단위"와 "작업"을 같은 의미로 사용합니다.

작업이 중지되면(예:) systemctl stop ...문제는 실패를 선언하고 신호를 사용하여 작업 프로세스를 종료하기 전에 작업이 완료될 때까지 기다리는 시간입니다 SIGKILL. SIGKILL우리는 꼭 필요한 경우가 아니면 이 방법을 사용하고 싶지 않습니다. 왜냐하면 프로세스가 깔끔하게 종료될 기회를 주지 않기 때문입니다. 일부 프로세스의 경우 실패를 선언하는 데 몇 초면 충분할 수 있지만, 데이터베이스와 같은 다른 프로세스의 경우 작업을 완전히 중지하려면 상당한 네트워크 및 디스크 I/O가 필요할 수 있으므로 이 단위는 몇 분 정도 걸릴 수 있습니다. 깔끔하게 종료합니다.

systemctl stop $UNIT_NAME종료 시 표시되는 내용은 실행하는 데 시간이 걸리는 것과 같습니다 . SIGKILL을 발행하고 이에 관계없이 종료를 계속하기 전에 경과된 초 수와 최대 대기 시간을 표시하는 카운터가 있습니다.

긴 지연이 예상되는 타당한 이유가 없는 한 이는 일반적으로 일종의 결함을 나타냅니다. 여기에는 DHCP 서버가 릴리스에 응답하지 않아 릴리스 작업 시간이 초과되어야 하거나 데몬이 종료되지 않게 만드는 일부 오류가 포함될 수 있습니다.

답변3

일부 서비스가 중단되어 systemd가 해당 서비스가 종료되기를 기다리고 있습니다. Systemd는 소요 시간을 정확하게 예측하지 못할 수 있습니다. 시간(보통 90초)은 systemd가 인내심을 잃기 전에 기다리는 시간입니다. 이 문서를 참조하세요:

사용자 세션 c2가 중지 작업을 실행 중입니다.

답변4

"중지된 작업"은 systemd특정 "작업"이 중지되기를 기다리고 있음을 의미합니다(예: 계속하기 전에 완료되기를 기다리는 일부 프로세스). "작업 실행 중지..."(등)라는 경고 메시지가 표시되면 기술적으로 작업 대기열에 처리 대기 중인 항목이 있음을 의미합니다.

그러나 전체 시스템 작업 대기열을 자세히 살펴보기 전에 이러한 경고 메시지는 다음과 같은 간접적인 결과일 수 있다는 점을 명심하세요.환경적 요인(실제로 이 메시지는 GitHub 저장소에서 잠재적인 버그로 인용되기도 합니다.)

예: "작업 중지됨"과 관련된 메시지를 받았지만 이유를 알 수 없습니다... 결과적으로 디스크 공간이 거의 소진되고 운영 체제가 이상하게 작동하기 시작합니다.

서버를 더 큰 디스크로 업그레이드하고 다시 시작하세요.수리하다;)

관련 정보