Làm cách nào để ngăn quá trình tự động tạm dừng trong phiên người dùng không hoạt động?


14

Lâu nay khi tôi chuyển đổi giữa hai phiên người dùng, một phiên không hoạt động trong một số trường hợp sẽ dừng thực thi các quy trình GUI. Bằng cách này, tôi buộc phải chờ một phiên khác tải và không thể làm gì đó trong một phiên khác, bởi vì nếu tôi chuyển đổi và quay lại sau một thời gian thì nó vẫn ở cùng một điểm. Phần mềm bị ảnh hưởng bao gồm rsync, sao lưu dự phòng, quy trình nền KDE, Steam được khởi chạy trong phiên Openbox (thậm chí dừng tải xuống) và ít nhất là một số trò chơi. VLC không bị ảnh hưởng, ít nhất là nó bỏ qua thời gian cần thiết sau khi tôi quay lại, nhưng trong một khoảnh khắc tôi có thể thấy khung hình cũ và thời gian trong cửa sổ của nó.

Quá trình nào chịu trách nhiệm cho hành vi đó? Tôi có thể cấu hình lại nó bằng cách nào đó?

Cập nhật: Sử dụng bộ nhớ và hoán đổi

Một số bối cảnh bổ sung: Điều trớ trêu là tôi đã đề xuất hành vi chính xác này trên brainstorm.ubfox.com cũ (hiện không còn tồn tại).


1
@Fabby đã hoàn thành, nó không giống như một vấn đề hoán đổi nếu đó là những gì bạn ngụ ý.
int_ua

2
Vâng, đó là những gì tôi đang ám chỉ ... ;-) Tôi đã cố gắng mô phỏng hành vi bạn gặp phải: đăng nhập với tư cách người dùng, sau đó đăng nhập với tư cách là người dùng phụ, bắt đầu phim, [Ctrl] [Alt ] [F7] cho người dùng đầu tiên, bắt đầu findbật /, [ctrl] [Alt] [F8] cho người dùng thứ hai và mọi thứ tiếp tục chạy ... (mặc dù âm thanh của phim bị tắt khi chuyển người dùng.) bạn kiểm tra?
Fabby

1
@int_ua Tôi không biết cụ thể về hơi nước, nhưng tôi đã có các trò chơi chứa mã cụ thể bị tạm dừng khi chuyển đổi người dùng ... Tôi không sử dụng KDE vì vậy tôi nghĩ rằng tôi không thể giúp bạn thêm nữa ... Xin lỗi!
Fabby 7/07/2015

1
Bằng cách lưu ý cả trạng thái đầu ra trước và sau khi chuyển sang người dùng khác và bởi đèn HDD bên ngoài sẽ ngừng mọi hoạt động trong một phiên khác đang hoạt động.
int_ua

2
cho rsyncbạn đang sử dụng verboseđể in tiến độ? bạn đã thử mà không có nó + bạn đã thử gửi nó trực tiếp vào nền rsync .... &chưa? Thế còn nohup rsync .... & ? đối với GUI, họ phải tạm dừng vì chỉ có một tài nguyên đầu ra và nó được thực hiện bởi một phiên người dùng khác và họ sẽ tạm dừng :)
asнι

Câu trả lời:


1

Tôi cũng gặp phải vấn đề này vì tôi thường xuyên chuyển đổi giữa bàn điều khiển và thiết bị đầu cuối ảo đồ họa. Xorg theo thiết kế đình chỉ các khách hàng của mình trong các thiết bị chuyển mạch VT, đó là lý do tại sao các khách hàng của nó dường như "đóng băng" khi VT của Xorg không còn hoạt động. Wayland thì không, vì vậy nếu các chương trình bạn cần chạy trong nền VT hỗ trợ giao thức hiển thị mới, hãy sử dụng bộ tổng hợp Wayland thay vì Xorg.

Một cách để khắc phục vấn đề này là chạy các chương trình đồ họa trên máy chủ VNC cục bộ để chúng không bao giờ bị treo. Đây là cách giải quyết mà tôi sử dụng thường xuyên nhất.


0

Quá trình nào chịu trách nhiệm cho hành vi đó?

Trình quản lý hiển thị (DM) là trình quản lý bạn đang tìm kiếm. Bất cứ ai: lightdm, gdm, kdm(kde cũ), sddm(kde mới), xdm...

Tôi có thể cấu hình lại nó bằng cách nào đó?

AFAIK, Đó phải là cách đó với máy chủ X. Tuy nhiên, tôi thường bỏ qua hành vi đó bằng cách sử dụng:

  • Các công cụ CLI trên TTY console ảo khác
  • Công cụ CLI là initdịch vụ

Liên quan đến các luồng âm thanh, khi tôi bắt đầu sử dụng GNU / Linux vào năm 2006. Các thiết bị âm thanh được quản lý tách biệt với Display. Giờ đây, mọi thứ đã thay đổi đặc biệt với các thiết bị / cổng tích hợp mới như HDMI. Vì vậy, máy chủ Pulse nên biết về một số sự kiện hiển thị X. Theo tôi nhớ (tôi sẽ kiểm tra lại điều này), máy chủ Pulse được chạy dưới dạng tiến trình người dùng.


Bạn có thể vui lòng chứng minh điểm đầu tiên? Làm thế nào chính xác hoặc nơi trong mã nó làm điều này? Có rất nhiều tình huống mà CLI trong TTY không phải là một tùy chọn và tải xuống và sao lưu là vấn đề thực sự, âm thanh là một vấn đề nhỏ.
int_ua

0

Bạn có thể khởi chạy một screenphiên từ CLI bằng bash và bên trong phiên này bạn có thể khởi chạy ứng dụng. Và bây giờ bạn có thể đóng Terminal này mà không gặp vấn đề gì và phục hồi bằng screen -rlệnh. Là nhiều hay ít đây:

screen bash
rsync -V xxx yyy

Và bạn có thể đóng CLI và trả lại bất cứ điều gì bạn muốn và làm:

screen -r

Để xác nhận công việc được thực hiện. Tôi không biết nếu điều này có thể hoạt động với các ứng dụng GUI bằng cách sử dụng một lệnh như:

nohup your-X-application &
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.