Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Sửa lỗi tạm dừng tắt máy 'A Stop Job is Running' trên Linux

Nếu bạn đang sử dụng bản phân phối Linux hiện đại, chắc chắn bạn sẽ gặp thông báo “A stop job is doing” khi tắt máy và nó sẽ tạm dừng quá trình tắt máy trong tối đa 90 giây. Tìm hiểu lý do tại sao thông báo này xuất hiện và cách bạn có thể giảm thiểu nó.

Mục lục

Đây là tính năng an toàn, không phải lỗi

Điều đầu tiên bạn cần biết là thông báo “A stop job is doing” là một tính năng an toàn được tích hợp trong hệ thống chứ không phải lỗi.

Các bản phân phối Linux hiện đại như Ubuntu, Fedora và Arch sử dụng Systemd để quản lý quá trình khởi động và tắt máy. Khi bạn nhấp vào Tắt máy, Systemd không chỉ rút phích cắm điện. Nó gửi một tín hiệu lịch sự có tên là SIGTERM cho mọi dịch vụ và ứng dụng đang chạy. Hầu hết các ứng dụng, sau khi nhận được tín hiệu này, sẽ lưu dữ liệu, đóng tệp và tắt một cách nhẹ nhàng.

Tuy nhiên, một số dịch vụ cần thêm thời gian để hoàn thành nhiệm vụ và bỏ qua tín hiệu. Đó là khi bạn nhìn thấy thông báo cảnh báo. Sự chậm trễ này thường xảy ra do một số dịch vụ nhất định, chẳng hạn như trình quản lý mạng, bộ chứa, phiên của người dùng hoặc ổ đĩa gắn trên mạng, cần thêm thời gian để đóng kết nối hoặc lưu dữ liệu một cách an toàn.

Nhiều người dùng Linux tìm kiếm các bản sửa lỗi khi họ nhìn thấy thông báo “A Stop Job is Running”, cho rằng có điều gì đó bị hỏng. Sự thật là các nhà phát triển Systemd đã cố tình xây dựng hành vi này. Về cơ bản, đó là khoảng thời gian chờ đợi, thường là 90 giây, mà Systemd cung cấp cho các dịch vụ để hoàn thành các nhiệm vụ đang chờ xử lý của chúng. Nếu một dịch vụ không hoàn thành trong thời gian chờ đã định cấu hình, Systemd sẽ buộc chấm dứt dịch vụ đó bằng cách sử dụng SIGKILL và tiếp tục quá trình tắt máy.

Sửa lỗi tạm dừng tắt máy  A Stop Job is Running  trên Linux

Với cách tắt máy nhẹ nhàng này, nhiều ứng dụng sẽ hoàn thành những gì chúng đang làm, chẳng hạn như đóng tệp, hoàn thành các giao dịch cơ sở dữ liệu và ngắt kết nối hệ thống tệp một cách sạch sẽ. Bạn vẫn có thể loại bỏ thời gian chờ và tắt máy nhanh hơn, nhưng làm như vậy cũng làm tăng nguy cơ mất các lần ghi hoặc giao dịch gần đây, làm hỏng cơ sở dữ liệu hoặc tệp nhật ký hoặc khiến ổ đĩa được gắn ở trạng thái không ổn định.

Giảm thời gian chờ mặc định

Thời gian chờ mặc định 90 giây mang lại sự cân bằng cho nhiều người dùng Linux, đặc biệt là những người sử dụng phần cứng cũ hơn, vì thời gian chờ này đủ dài để hầu hết các dịch vụ hoàn tất quy trình dọn dẹp của họ. Tuy nhiên, đối với người dùng chạy máy tính xách tay hoặc hệ thống máy tính để bàn hiện đại, 90 giây có thể cảm thấy quá mức.

Dù lý do là gì, bạn có thể điều chỉnh tệp cấu hình hệ thống và giảm thời gian chờ bằng cách yêu cầu systemd cung cấp cho các dịch vụ chưa hoàn thành một số giây cụ thể để hoàn thành nhiệm vụ của chúng.

Để bắt đầu, hãy khởi chạy thiết bị đầu cuối của bạn và sử dụng trình soạn thảo văn bản ưa thích của bạn để chỉnh sửa tệp cấu hình hệ thống:

sudo nano /etc/systemd/system.conf
Sửa lỗi tạm dừng tắt máy  A Stop Job is Running  trên Linux

Tiếp theo, xác định vị trí biến thời gian chờ. Bạn sẽ thấy rất nhiều văn bản đại diện cho cài đặt chung cho hệ thống của bạn. Tìm dòng tương tự như #DefaultTimeoutStopSec=90s . Biểu tượng băm ở đầu dòng có nghĩa là nó đã bị nhận xét hoặc bị vô hiệu hóa. Hệ thống hiện đang sử dụng mặc định nội bộ, tức là 90 giây.

Để sửa đổi giá trị, trước tiên hãy xóa ký hiệu băm để kích hoạt dòng, sau đó thay đổi 90 giây thành thời lượng ngắn hơn tùy theo sở thích của bạn.

Cảnh báo :Không đặt giá trị này thành 0. Đặt giá trị này thành 0 sẽ tạo ra thời gian chờ vô hạn, nghĩa là hệ thống sẽ đợi mãi cho đến khi quá trình dừng lại. Đó là điều ngược lại với những gì chúng ta mong muốn. Giá trị tầm trung (20–30 giây) là một sự thỏa hiệp thiết thực đối với nhiều người dùng.

Khi bạn đã hoàn tất, hãy lưu và thoát khỏi trình chỉnh sửa. Để áp dụng các thay đổi, bạn thường cần phải khởi động lại. Vì sự cố xảy ra trong quá trình tắt máy nên bạn có thể phải đợi lâu lần cuối. Sau lần khởi động tiếp theo, giới hạn thứ hai mới sẽ có hiệu lực.

Lưu ý :Trong một số trường hợp, bạn có thể cần bật #DefaultDeviceTimeoutSec=90s để nó hoạt động.

Khi thời gian chờ có thể chỉ ra sự cố

Trong hầu hết các trường hợp, việc dừng công việc hết thời gian là hành vi bình thường. Tuy nhiên, đôi khi điều này có thể chỉ ra một vấn đề tiềm ẩn, đặc biệt nếu cùng một dịch vụ liên tục trì hoãn việc tắt máy. Giá đỡ mạng có thể không truy cập được, daemon có thể bị định cấu hình sai hoặc dịch vụ có thể không phản hồi đúng cách với tín hiệu tắt.

Nếu bạn nhận thấy việc tắt máy mất vài phút thay vì vài giây hoặc mỗi lần dịch vụ đều hết thời gian chờ thì bạn nên điều tra. Sự chậm trễ đôi khi thường vô hại, nhưng những sự chậm trễ nhất quán cho thấy cần phải chú ý đến điều gì đó.

Để xác định dịch vụ gây ra sự chậm trễ, hãy kiểm tra nhật ký sau khi khởi động lại sau khi tắt máy chậm:

journalctl -b -1 -e
Sửa lỗi tạm dừng tắt máy  A Stop Job is Running  trên Linux

Lệnh này hiển thị nhật ký từ lần khởi động trước và nhảy về cuối. Bạn có thể cuộn lên để tìm cảnh báo, thông báo hết thời gian chờ hoặc dịch vụ mà hệ thống buộc phải dừng.

Ngoài ra, bạn cũng có thể thu hẹp mọi thứ bằng cách xem các thông báo ở mức cảnh báo:

journalctl -b -1 -p warning
Sửa lỗi tạm dừng tắt máy  A Stop Job is Running  trên Linux

Một cách kiểm tra hữu ích khác là chạy lệnh phân tích Systemd này:

systemd-analyze blame

Mặc dù lệnh này tập trung vào thời gian khởi động nhưng các dịch vụ khởi động chậm thường hoạt động tương tự trong quá trình tắt máy. Một số dịch vụ phổ biến khác có xu hướng kích hoạt thông báo dừng công việc bao gồm:

  • Dịch vụ mạng
  • Các hệ thống tệp từ xa như NFS hoặc SMB
  • Máy chủ cơ sở dữ liệu
  • Trình quản lý vùng chứa và máy ảo
  • Ổ đĩa ngoài và thiết bị tự động gắn kết

Việc gắn kết dựa trên mạng đặc biệt dễ bị trễ nếu kết nối không ổn định hoặc không còn khả dụng. Ngoài ra, việc giảm thời gian chờ tắt máy có thể khiến cảm giác tắt máy nhanh hơn nhưng không khắc phục được vấn đề cơ bản. Nếu một dịch vụ liên tục trì hoãn việc tắt máy thì việc giải quyết nguyên nhân cốt lõi sẽ mang lại kết quả lâu dài tốt hơn.

Suy nghĩ cuối cùng

Linux cung cấp cho bạn mức độ kiểm soát cao đối với hệ thống của bạn, bao gồm cả thời gian chờ đợi các dịch vụ cứng đầu ngừng hoạt động. Bạn cũng có thể quản lý các ứng dụng nền và tắt các dịch vụ không cần thiết để cải thiện cả thời gian tắt máy và khởi động.