Computer >> 컴퓨터 >  >> 시스템 >> Linux

Linux에서 'A Stop Job is Running' 종료 일시 중지 문제 수정

최신 Linux 배포판을 사용하는 경우 종료 중에 "작업 중지가 실행 중입니다"라는 메시지가 표시되며 최대 90초 동안 종료 프로세스가 일시 중지됩니다. 이 메시지가 나타나는 이유와 이를 완화할 수 있는 방법을 알아보세요.

목차

버그가 아닌 안전 기능입니다

가장 먼저 알아야 할 것은 "작업 중지가 실행 중입니다" 메시지는 버그가 아니라 시스템에 내장된 안전 기능이라는 것입니다.

Ubuntu, Fedora 및 Arch와 같은 최신 Linux 배포판은 Systemd를 사용하여 부팅 및 종료 프로세스를 관리합니다. 종료를 클릭하면 Systemd는 전원 플러그만 뽑지 않습니다. SIGTERM이라는 정중한 신호를 보냅니다. 실행 중인 모든 서비스와 애플리케이션에 적용됩니다. 대부분의 애플리케이션은 이 신호를 받은 후 데이터를 저장하고 파일을 닫은 후 정상적으로 종료됩니다.

그러나 일부 서비스는 작업을 완료하고 신호를 무시하는 데 더 많은 시간이 필요합니다. 이때 경고 메시지가 표시됩니다. 이러한 지연은 일반적으로 네트워크 관리자, 컨테이너, 사용자 세션 또는 네트워크 탑재 드라이브와 같은 특정 서비스가 연결을 종료하거나 데이터를 안전하게 저장하는 데 추가 시간이 필요하기 때문에 발생합니다.

많은 Linux 사용자는 "작업 중지가 실행 중입니다" 메시지가 표시되면 문제가 있다고 가정하여 수정 사항을 검색합니다. 사실 Systemd 개발자는 의도적으로 이러한 동작을 구축했습니다. 기본적으로 Systemd가 보류 중인 작업을 완료하기 위해 서비스를 제공하는 것은 일반적으로 90초의 대기 기간입니다. 서비스가 구성된 제한 시간 내에 완료되지 않으면 Systemd는 SIGKILL을 사용하여 서비스를 강제 종료합니다. 종료 프로세스를 계속합니다.

Linux에서  A Stop Job is Running  종료 일시 중지 문제 수정

이러한 정상적인 종료를 통해 많은 애플리케이션이 파일 닫기, 데이터베이스 트랜잭션 완료, 파일 시스템 마운트 해제 등 수행 중인 작업을 깔끔하게 완료합니다. 대기 시간을 없애고 종료 속도를 높일 수 있지만 그렇게 하면 최근 쓰기나 트랜잭션이 손실되거나, 데이터베이스나 저널 파일이 손상되거나, 마운트된 드라이브가 불안정한 상태로 남을 위험이 높아집니다.

기본 시간 초과 줄이기

90초의 기본 대기 시간은 대부분의 서비스가 정리 루틴을 완료하는 데 충분히 길기 때문에 많은 Linux 사용자, 특히 오래된 하드웨어를 사용하는 사용자에게 균형을 유지합니다. 그러나 최신 노트북이나 데스크탑 시스템을 실행하는 사용자에게는 90초가 과도하게 느껴질 수 있습니다.

이유가 무엇이든, 완료되지 않은 서비스에 작업을 완료하는 데 특정 시간(초)을 제공하도록 systemd에 지시하여 시스템 구성 파일을 조정하고 시간 제한을 낮출 수 있습니다.

시작하려면 터미널을 실행하고 원하는 텍스트 편집기를 사용하여 시스템 구성 파일을 편집하세요.

sudo nano /etc/systemd/system.conf
Linux에서  A Stop Job is Running  종료 일시 중지 문제 수정

다음으로 시간 초과 변수를 찾습니다. 시스템의 전역 설정을 나타내는 많은 텍스트가 표시됩니다. #DefaultTimeoutStopSec=90s과 유사한 줄을 찾으세요. . 줄 시작 부분의 해시 기호는 주석 처리되었거나 비활성화되었음을 의미합니다. 시스템은 현재 내부 기본값인 90초를 사용하고 있습니다.

값을 수정하려면 먼저 해시 기호를 제거하여 선을 활성화한 다음 원하는 대로 90초를 더 짧은 기간으로 변경하세요.

경고 :이 값을 0으로 설정하지 마십시오. 0으로 설정하면 무한 시간 초과가 발생합니다. 즉, 시스템은 프로세스가 중지될 때까지 영원히 기다립니다. 그것은 우리가 원하는 것과 반대입니다. 중간 범위 값(20~30초)은 많은 사용자에게 실용적인 절충안입니다.

완료되면 저장하고 편집기를 종료하십시오. 변경 사항을 적용하려면 일반적으로 재부팅해야 합니다. 종료 중에 문제가 발생하므로 마지막으로 오래 기다려야 할 수도 있습니다. 다음 부팅 후에는 새로운 두 번째 제한이 적용됩니다.

참고 :어떤 경우에는 #DefaultDeviceTimeoutSec=90s을 활성화해야 할 수도 있습니다. 작동하기에도 너무 좋습니다.

시간 초과로 인해 문제가 발생할 수 있는 경우

대부분의 경우 작업 중지 시간 초과는 정상적인 동작입니다. 그러나 특히 동일한 서비스가 반복적으로 종료를 지연하는 경우 근본적인 문제를 지적할 수 있습니다. 네트워크 마운트에 연결할 수 없거나, 데몬이 잘못 구성되었거나, 서비스가 종료 신호에 제대로 응답하지 않을 수 있습니다.

몇 초가 아닌 몇 분이 걸리거나 동일한 서비스가 매번 시간 초과되는 경우 조사해 볼 가치가 있습니다. 간헐적인 지연은 일반적으로 해롭지 않지만, 지속적인 지연은 주의가 필요한 사항임을 나타냅니다.

지연을 일으키는 서비스를 식별하려면 느린 종료에서 재부팅한 후 로그를 확인하세요.

journalctl -b -1 -e
Linux에서  A Stop Job is Running  종료 일시 중지 문제 수정

이 명령은 이전 부팅의 로그를 표시하고 끝으로 이동합니다. 위로 스크롤하여 경고, 시간 초과 메시지 또는 시스템이 강제로 중지한 서비스를 찾아볼 수 있습니다.

또한 경고 수준 메시지를 확인하여 범위를 좁힐 수도 있습니다.

journalctl -b -1 -p warning
Linux에서  A Stop Job is Running  종료 일시 중지 문제 수정

또 다른 유용한 검사는 다음 Systemd 분석 명령을 실행하는 것입니다:

systemd-analyze blame

이 명령은 시작 시간에 중점을 두지만 시작 속도가 느린 서비스는 종료 중에 유사하게 동작하는 경우가 많습니다. 작업 중지 메시지를 유발하는 기타 일반적인 서비스는 다음과 같습니다.

  • 네트워크 서비스
  • NFS 또는 SMB와 같은 원격 파일 시스템
  • 데이터베이스 서버
  • 컨테이너 및 가상 머신 관리자
  • 외장 드라이브 및 자동 마운트 장치

네트워크 기반 마운트는 연결이 불안정하거나 더 이상 사용할 수 없는 경우 특히 지연되기 쉽습니다. 또한 종료 시간 초과를 낮추면 종료가 더 빠르게 느껴질 수 있지만 근본적인 문제가 해결되지는 않습니다. 서비스 종료가 지속적으로 지연되는 경우 근본 원인을 해결하면 장기적으로 더 나은 결과를 얻을 수 있습니다.

최종 생각

Linux는 완고한 서비스가 종료될 때까지 기다리는 시간을 포함하여 시스템에 대한 높은 수준의 제어 기능을 제공합니다. 또한 백그라운드 애플리케이션을 관리하고 불필요한 서비스를 비활성화하여 종료 및 부팅 시간을 개선할 수도 있습니다.