diff --git a/vnc/multi_vnc_single_user.sh b/vnc/multi_vnc_single_user.sh index b20cfbc..443a923 100644 --- a/vnc/multi_vnc_single_user.sh +++ b/vnc/multi_vnc_single_user.sh @@ -57,20 +57,21 @@ for (( i=START_DISPLAY; i<=END_DISPLAY; i++ )); do # 写入专属的 systemd 服务配置 cat < "$SERVICE_FILE" [Unit] -Description=VNC Server for $TARGET_USER on display $i +Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking -User=$TARGET_USER -Group=$TARGET_USER -WorkingDirectory=/home/$TARGET_USER -ExecStartPre=-/usr/bin/vncserver -kill :$i > /dev/null 2>&1 -ExecStart=/usr/bin/vncserver :$i -geometry 1280x720 -depth 24 -ExecStop=/usr/bin/vncserver -kill :$i + +# Clean any existing files in /tmp/.X11-unix environment +ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' +ExecStart=/usr/sbin/runuser -l $TARGET_USER -c "/usr/bin/vncserver %i" +PIDFile=/home/$TARGET_USER/.vnc/%H%i.pid +ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target + EOF # 重新加载 systemd 守护进程