Điểm:1

Chạy nhiều phiên VNC đồng thời

lá cờ hm

Tôi đang thực hiện một dự án cho một khách hàng muốn truy cập một số ứng dụng Windows thông qua trang web của tôi bằng noVNC, điều này đã cho tôi ý tưởng thiết lập một máy chủ có nhiều người dùng. Tôi đã cài đặt máy chủ TigerVNC trên VPS CentOS 7 của mình, hoạt động tốt khi một người dùng được kết nối, nhưng khi người dùng thứ hai kết nối, họ sẽ chỉ nhận được màn hình đen vì có vẻ như gnome sẽ không khởi động lần thứ hai người dùng.

Nếu tôi, ví dụ, chạy vncservice@:1 tất cả đều hoạt động tốt và người dùng sẽ đăng nhập không có vấn đề gì nhưng khi vncservice@:2 bắt đầu, nó sẽ không khởi động gnome và anh ấy/cô ấy sẽ nhận được màn hình đen chỉ với một con trỏ. Khi nào vncservice@:2 bắt đầu trước, người dùng đó sẽ được đưa vào gnome nhưng vncservice@:1 sẽ không thấy máy tính để bàn của họ, v.v.

Đây là những gì thiết lập của tôi trông giống như:

[Người dùng 1 và 2 ~/.vnc/xstartup]
#!/bin/sh

bỏ đặt SESSION_MANAGER
bỏ đặt DBUS_SESSION_BUS_ADDRESS
/etc/X11/xinit/xinitrc
# Giả sử Gnome hoặc KDE sẽ được khởi động theo mặc định khi cài đặt
# Chúng tôi muốn tự động hủy phiên trong trường hợp này khi người dùng đăng xuất. Trong trường hợp bạn sửa đổi
# /etc/X11/xinit/Xclients hoặc ~/.Xclients để đạt được kết quả khác, thì bạn nên
# chịu trách nhiệm sửa đổi mã bên dưới để tránh phiên của bạn sẽ tự động bị hủy

ngủ 60

nếu [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; sau đó
    vncserver -kill $ HIỂN THỊ
    killall -u $USER
fi

[/etc/X11/xinit/xinitrc]

#!/bin/sh

# Nguồn bắt buộc xinitrc-common, là mã chung được chia sẻ giữa
# Tập lệnh Xsession và xinitrc đã được loại bỏ để tránh trùng lặp
. /etc/X11/xinit/xinitrc-common

# Người dùng có thể có ứng dụng khách riêng mà họ muốn chạy. Nếu họ không,
# trở lại mặc định hệ thống.
nếu [ -f $HOME/.Xclients ]; sau đó
    exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \
    exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients
yêu tinh [ -f /etc/X11/xinit/Xclients ]; sau đó
    exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \
    exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients
khác
    # Cài đặt không an toàn. Mặc dù chúng ta không bao giờ nên đến đây
    # (chúng tôi cũng cung cấp các dự phòng trong Xclients) điều đó không hại gì.
    [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
    [ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 &
    [ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 &
    [ -x /usr/bin/twm ] && /usr/bin/twm
fi

[vncserver@:1 và vncserver@:2, được thay thế bằng tên người dùng thực]

[Đơn vị]
Mô tả=Dịch vụ máy tính từ xa (VNC)
Sau=syslog.mục tiêu mạng.mục tiêu

[Dịch vụ]
Loại = rẽ nhánh
Người dùng=<USERNAME>
Nhóm=<TÊN NGƯỜI DÙNG>

ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/<USERNAME>/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i


[Cài đặt]
WantedBy=multi-user.target

[Nhật ký VNC của người dùng thứ hai]

[root@.... ~]# systemctl status vncserver@:5
â vncserver@:5.service - Dịch vụ máy tính từ xa (VNC)
   Đã tải: đã tải (/etc/systemd/system/vncserver@:5.service; bị vô hiệu hóa; cài đặt sẵn của nhà cung cấp: bị vô hiệu hóa)
   Đang hoạt động: đang hoạt động (đang chạy) kể từ za 2021-07-24 19:04:54 CEST; 59s trước
  Quá trình: 25990 ExecStart=/usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
  Quá trình: 25981 ExecStartPre=/usr/bin/vncserver -kill %i (code=exited, status=2)
 PID chính: 25997 (Xvnc)
   Nhóm C: /system.slice/system-vncserver.slice/vncserver@:5.service
           ââ25997 /usr/bin/Xvnc :5 -auth /home/AHtYezzDXegQScyu/.Xmasterity -desktop <HOSTNAME>:5 (AHtYezzDXegQScyu) -danh mục fp:/etc/X11/fontpath.d -geometry 1024x768 - pn -rfbauth /home/AHtYezzDXegQScyu/.vnc/passwd -rfbport 5905 -rfbwait 30000
           ââ26006 /bin/sh /home/AHtYezzDXegQScyu/.vnc/xstartup
           ââ26018 dbus-launch --sh-syntax --exit-with-session
           ââ26019 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
           ââ26053 /usr/libexec/imsettings-daemon
           ââ26057 /usr/libexec/gvfsd
           ââ26062 /usr/libexec/gvfsd-fuse /home/AHtYezzDXegQScyu/.gvfs -f -o big_writes
           ââ26126 /usr/libexec/at-spi-bus-launcher
           ââ26131 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
           ââ26135 /usr/libexec/at-spi2-registryd --use-gnome-session
           ââ26158 /usr/bin/gnome-keyring-daemon --start --components=ssh
           ââ26241 /usr/libexec/xdg-permission-store
           ââ26246 /usr/libexec/gnome-shell-calendar-server
           ââ26251 /usr/libexec/evolution-source-registry
           ââ26258 /usr/libexec/goa-daemon
           ââ26269 /usr/libexec/goa-identity-service
           ââ26275 /usr/libexec/mission-control-5
           ââ26286 /usr/libexec/gvfs-udisks2-volume-monitor
           ââ26293 /usr/libexec/gvfs-mtp-volume-monitor
           ââ26299 /usr/libexec/gvfs-goa-volume-monitor
           ââ26305 /usr/libexec/gvfs-gphoto2-volume-monitor
           ââ26310 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
           ââ26311 /usr/libexec/gvfs-afc-volume-monitor
           ââ26411 /usr/libexec/gsd-print-notifications
           ââ26413 /usr/libexec/gsd-rfkill
           ââ26418 /usr/libexec/gsd-screensaver-proxy
           ââ26454 ngủ 60
           ââ26458 /usr/libexec/evolution-calendar-factory

ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session-binary[26007]: CẢNH BÁO: Không thể khởi động ứng dụng: Không thể khởi động ứng dụng: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)
ngày 24 tháng 7 19:05:22 <HOSTNAME> gsd-print-notif[26411]: Không thể thực thi trình xử lý system-config-printer-udev: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session-binary[26007]: CẢNH BÁO: Ứng dụng 'org.gnome.SettingsDaemon.Power.desktop' bị giết bởi tín hiệu 5
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: gnome-session-binary[26007]: CẢNH BÁO: Ứng dụng 'org.gnome.SettingsDaemon.Power.desktop' bị giết bởi tín hiệu 5
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session-binary[26007]: GLib-CẢNH BÁO: GError được đặt ở đầu GError trước đó hoặc bộ nhớ chưa được khởi tạo.
                                                                       Điều này cho biết có lỗi trong mã của ai đó. Bạn phải đảm bảo lỗi là NULL trước khi nó được đặt.
                                                                       Thông báo lỗi ghi đè là: Không thể khởi động ứng dụng: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)...
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: gnome-session-binary[26007]: GLib-CẢNH BÁO: GError được đặt ở đầu GError trước đó hoặc bộ nhớ chưa được khởi tạo.
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: Điều này cho biết có lỗi trong mã của ai đó. Bạn phải đảm bảo lỗi là NULL trước khi nó được đặt.
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: Thông báo lỗi ghi đè là: Không thể khởi động ứng dụng: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)
ngày 24 tháng 7 19:05:22 <HOSTNAME> sự tiến hóa-calen[26465]: tạo chủ đề 'gdbus': Lỗi tạo chủ đề: Tài nguyên tạm thời không khả dụng
ngày 24 tháng 7 19:05:47 <HOSTNAME> gnome-shell-cal[26246]: Không thể tải nguồn 'sinh nhật': Đã hết thời gian chờ

[/etc/X11/xinit/Xclient]

#!/bin/bash

GSESSION="$(type -p gnome-session)"
STARTKDE="$(loại -p startkde)"

# kiểm tra xem người dùng có máy tính để bàn ưa thích không
ƯU ĐÃI=
nếu [ -f /etc/sysconfig/desktop ]; sau đó
    . /etc/sysconfig/máy tính để bàn
    nếu [ "$DESKTOP" = "Gnome" ]; sau đó
        PREFERRED="$GSESSION"
    yêu tinh [ "$DESKTOP" = "KDE" ]; sau đó
        PREFERRED="$STARTKDE"
    fi
fi

nếu [ -n "$PREFERRED" ]; sau đó
    exec "$PREFERRED"
fi

# bây giờ nếu chúng ta có thể đến đây, hoặc là không có tệp máy tính để bàn nào,
# hoặc máy tính để bàn được yêu cầu chưa được cài đặt.

nếu [ -n "$GSESSION" -a -f /usr/share/xsessions/gnome.desktop ]; sau đó
    # theo mặc định, chúng tôi chạy GNOME.
    exec "$GSESSION" --session=gnome
yêu tinh [ -n "$STARTKDE" ]; sau đó
    # nếu GNOME chưa được cài đặt, hãy thử KDE.
    thực thi "$STARTKDE"
fi

# Chúng ta cũng nên hỗ trợ tập lệnh /etc/X11/xinit/Xclients.d
XCLIENTS_D=/etc/X11/xinit/Xclients.d
nếu [ "$#" -eq 1 ] && [ -x "$XCLIENTS_D/Xclients.$1.sh" ]; sau đó
    exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"
fi

# Không an toàn.

# các tệp này bị TheNextLevel bỏ lại.
rm -f $HOME/Xrootenv.0

# Argh! Không có gì tốt được cài đặt. Rơi trở lại twm
{
    # trời ạ, cả fvwm95 và fvwm2 đều không có;
    # quay trở lại cài đặt an toàn dự phòng
    [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'

    nếu [ -x /usr/bin/xclock ] ; sau đó
        /usr/bin/xclock -hình học 100x100-5+5 &
    fi
    nếu [ -x /usr/bin/xterm ] ; sau đó
        /usr/bin/xterm -hình học 80x50-50+150 &
    fi
    nếu [ -x /usr/bin/firefox -a -f /usr/share/doc/HTML/index.html ]; sau đó
        /usr/bin/firefox /usr/share/doc/HTML/index.html &
    fi
    nếu [ -x /usr/bin/twm ] ; sau đó
        thực thi/usr/bin/twm
    fi
}

Điều ngu ngốc là, sau khi cố gắng bắt đầu cái thứ hai vncserver khoảng 50 lần, nó thường hoạt động một lần, khi tôi dừng và khởi động lại dịch vụ, nó sẽ không hiển thị lại bất cứ thứ gì, ngoại trừ con trỏ chuột.

Còn rất nhiều bộ nhớ trống (khoảng 5 hợp đồng biểu diễn), cũng còn rất nhiều dung lượng lưu trữ (khoảng 100 hợp đồng biểu diễn). Khi tôi chỉnh sửa ~/.vnc/xstartup chỉ bao gồm một trình quản lý tệp, nó hoạt động tốt mọi lúc, cố gắng chạy một phiên cho nhiều người dùng dường như là một vấn đề.

Cảm ơn bạn đã đọc tất cả những điều này, tôi đã mất vô số thời gian để cố gắng gỡ lỗi này mà không có bất kỳ cải tiến (chính) nào.

CẬP NHẬT 1: Sau nhiều giờ mày mò, tôi vẫn không làm cho gnome hoạt động. Thời điểm tuyệt vọng kêu gọi các biện pháp tuyệt vọng, vì vậy cuối cùng tôi đã cài đặt Xfce và làm cho nó đẹp hơn với một chủ đề đẹp mắt và một gói biểu tượng. Nó chỉ hoạt động sau khi tôi cài đặt nó. Tôi đã xóa tất cả các tham chiếu gnome khỏi xstartup tập tin và thêm vào startxfce4.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.