在无图形界面的Ubuntu系统中,可以通过以下几种方式确认当前是否运行在纯命令行模式:
1. 检查运行级别
# 传统SysV init系统
runlevel
# 输出示例:N 3(3表示多用户命令行模式)
# 或使用
who -r
2. 检查当前tty
# 查看当前终端类型
tty
# 纯命令行模式通常显示:/dev/tty1 到 /dev/tty6
# 检查是否有X服务器进程
ps aux | grep -E "Xorg|xinit|gdm|lightdm|sddm"
# 如果没有相关进程,说明是纯命令行模式
3. 检查显示管理器服务状态
# 查看显示管理器是否运行
systemctl status display-manager
# 如果显示"inactive"或"not-found",则是命令行模式
# 或检查具体显示管理器
systemctl status gdm3 # GNOME显示管理器
systemctl status lightdm # LightDM显示管理器
systemctl status sddm # SDDM显示管理器
4. 检查图形环境变量
# 查看DISPLAY环境变量
echo $DISPLAY
# 纯命令行模式通常为空或未设置
# 检查是否有桌面环境进程
ps aux | grep -E "gnome|kde|xfce|cinnamon|mate"
5. 使用systemd分析
# 查看默认目标
systemctl get-default
# 命令行模式通常是:multi-user.target
# 图形模式通常是:graphical.target
# 查看当前目标
systemctl list-units --type=target --state=active | grep -E "multi-user|graphical"
6. 快速综合检查脚本
#!/bin/bash
echo "=== 系统模式检查 ==="
echo "1. 运行级别: $(runlevel 2>/dev/null || echo 'N/A')"
echo "2. 默认目标: $(systemctl get-default 2>/dev/null || echo 'N/A')"
echo "3. DISPLAY变量: $DISPLAY"
echo "4. X进程: $(ps aux | grep -E '[X]org|[x]init' | wc -l)"
echo "5. 显示管理器: $(systemctl is-active display-manager 2>/dev/null || echo '未运行')"
if [ -z "$DISPLAY" ] &&
[ $(ps aux | grep -E '[X]org|[x]init' | wc -l) -eq 0 ] &&
(systemctl get-default 2>/dev/null | grep -q "multi-user" || true); then
echo "✅ 当前运行在纯命令行模式"
else
echo "❌ 可能运行在图形模式或有X服务器"
fi
7. 检查虚拟终端
# 查看当前虚拟终端
echo "当前VT: $(fgconsole 2>/dev/null || tty)"
# 尝试切换到图形终端(如果有)
# Ctrl+Alt+F1-F6: 命令行终端
# Ctrl+Alt+F7-F12: 通常为图形界面(如果存在)
关键判断标准:
runlevel显示为 3 或systemctl get-default显示multi-user.target- 没有Xorg/X服务器进程
DISPLAY环境变量未设置- 显示管理器服务未运行
- 当前在 tty1-6 而不是图形终端
如果满足以上条件,则可以确认系统运行在纯命令行模式。
CLOUD技术笔记