前言

用于记录Linux使用的时候遇到的一些特殊场景, 以及对应的解决方案

多用户同时使用图形界面

机房有一台很好配置的服务器, 但是同学们不太会直接使用命令行界面, 都需要图形化的使用, 这个时候我们就需要多个用户同时使用, 就不用等某个同学的使用了

解决方案: vnc+内网穿透 或者 vnc+向日葵 (这个可能有点问题, 我尝试没成功)

要在CentOS服务器上设置VNC以便远程多用户访问,您可以按照以下步骤进行:

VNC安装

1. 安装VNC Server和桌面环境

首先,您需要安装一个VNC服务器和一个桌面环境。这里以TigerVNC和GNOME桌面环境为例:

1
2
3
sudo yum install epel-release -y
sudo yum install tigervnc-server -y
sudo yum groupinstall "GNOME Desktop" -y

2. 设置VNC Server

创建VNC Server的配置文件:

1
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

编辑该文件:

1
sudo vim /etc/systemd/system/vncserver@:1.service

找到以下行并修改<USER>为您的实际用户名:

1
2
3
4
5
6
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i
ExecStop=/usr/bin/vncserver -kill %i

保存并关闭文件。

3. 设置VNC密码

切换到您的用户,然后设置VNC密码:

1
2
su - <USER>
vncpasswd

4. 启动VNC服务

重新加载systemd服务,并启动VNC服务:

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service
sudo systemctl start vncserver@:1.service

5. 配置防火墙

打开VNC服务所需的端口:

1
2
sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --reload

6. 连接到VNC服务器

在本地计算机上,使用VNC客户端连接到服务器的IP地址和端口。例如,如果服务器的IP地址是192.168.1.100,您可以使用192.168.1.100:5901进行连接。

7. 其他配置

可以编辑每个用户的VNC启动脚本以自定义启动环境:

1
vim ~/.vnc/xstartup

添加以下内容以启动GNOME桌面:

1
2
3
4
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc

保存并关闭文件,给脚本添加执行权限:

1
chmod +x ~/.vnc/xstartup

这样,您的CentOS服务器就可以通过VNC进行多用户远程访问了。如果有任何问题或需要进一步的帮助,请随时告知。

8. 多用户配置

如果需要多个用户访问,可以为每个用户配置一个不同的VNC实例。重复上述步骤2和3,修改配置文件和服务端口号。例如,为第二个用户创建一个新的服务:

1
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service

编辑该文件并将<USER>替换为新用户的用户名,同时将所有端口号从1改为2

启动新的VNC服务:

1
2
sudo systemctl enable vncserver@:2.service
sudo systemctl start vncserver@:2.service

为新用户设置VNC密码:

1
2
su - <NEW_USER>
vncpasswd

9. 关闭服务

1
2
3
4
5
sudo systemctl stop vncserver@:1.service
sudo systemctl disable vncserver@:1.service
# 多用户
sudo systemctl stop vncserver@:2.service
sudo systemctl disable vncserver@:2.service

内网穿透工具

选择其中一个工具,按照使用方法做好端口映射就行

VNC工具

桌面卡死, 项目更换父进程

我在跑我的项目, 但是桌面卡死了, 我又要需要查看当前项目的情况, 这个时候我就需要这个项目的父进程交给其他进程(一定要是这个用户的进程), 不然重启桌面会导致这个项目被杀死

使用ssh登陆进入(如果这个做不到, 就自求多福希望这个跑的项目不重要)

1
2
3
4
5
6
7
8
9
sudo yum install screen

screen -S my_session #

ps -axu | grep 项目信息 # 找到pid

reptyr pid # 使用上面找到的pid

systemctl restart gdm # 这里对应自己的桌面管理程序

这个是事后补救了, 如果是很重要的项目在跑或者很费时间的项目, 建议提前使用 screen这类工具, 这样就不怕什么终端关闭, 桌面卡死了, 但是如果断电还是怕的