ubuntu 启动、退出 startx界面

article/2025/10/2 14:09:49

使用的是ubuntu-focal 20.04 桌面版。因为在熟悉使用ubuntu出现这个问题。


启动startx 

1、首先要了解ubuntu几种运行级(参考init_百度百科),ubuntu桌面版默认启动的是init 5 :如下的正常登录界面。

 2、进入和从terminal中输入sudo init 3,进入字符模式。也就是不运行X11/X Window系统了,包括X server 、X client 都不运行。如果对X11 、X server 、X client 不了解,请参考X11、GTK、QT、GNOME和KDE之间的区别与联系_antdz的博客-CSDN博客_gnome qt

 3、在字符模式下,输入sudo startx,进入startx 的图形桌面界面。这个界面与init 5的界面是有区别的,虽然在我电脑上都是启动gnome。

还有一种启动startx 的方法,
1、默认桌面环境的terminal 中输入sudo init 3进入字符环境
2、登录后sudo xinit,进入xinit提供的xterm中,xterm 显示是需要依赖X server的。
3、在xinit的terminal中输入sodu startx ,进入startx界面。

在上面步骤2 之后在xterm中输入firefox命令启动了firefox浏览器,可以看到浏览器窗口是无法移动且右上角没有窗口缩放关闭最小化按钮的。因为xinit没有启动gnome窗口管理器(在进程中医gnome-session-b/c/d来显示)。

startx 与xinit 关系

通过who可以查看linux当前开启的终端。下面的who是第二种启动startx方法时的结果,tty1是init 3时默认字符终端,pts/0是xterm,pts/1是我用外部SSH客户端来开启的虚拟终端。startx 在

 

 通过按钮ctrl+alt+F1~F6来切换tty,在字符模式下默认有六个 TTY_百度百科 终端可用。一个tty中只能启动一个X server
使用第二种启动startx方式,我按ctrl+alt+F4进入了xterm中,可以通过ctrl+c来终止startx。

退出startx

在startx 的桌面环境中按Ctrl+alt+insert 然后log out或者由上角选择log out。或者直接在startx 的terminal 中输入“sudo init 5”,进入系统默认桌面环境就行。
也可以“sudo init 3”进入字符界面 或者“sudo init 6”。或者直接杀死X server 进程(我用的版本是Xorg)直接杀死X server进程是非正常做法,不提倡。

xinit启动只会开启gnome-keyring-d的gnome相关进程,但是在xinit启动后偶尔会看到gnome-shell-cal进程。gnome-shell-cal未退出大概是系统的一个bug。具体出现过程在下面第五点有给出。

1、在默认桌面环境中(init 5)输入sudo startx,是无法通过startx和xinit命令直接进入startx和xinit界面的,因为不管是startx 还是xinit 还是默认桌面环境都会重新启动一个X server ,而一个tty中X server只能在一个时间启动一个,所以只能在init 3的字符界面中启动这两个命令。

2、在init 1中也无法通过startx 命令进入startx,但可以通过xinit进入xinit 界面(也就是说Xorg服务能开启)。大概是我电脑上startx启动需要依赖其他的在init 1中默认不开启的服务。
 

3、有碰到在上面一顿操作后进入init 5 后卡在登录界面无法进去的现象,通过ctrl+alt+F2,进入init 3 界面后再init 6做个重启。就能顺利登录了。原因未找到。


4、在startx进入的桌面环境中无法启动xinit,因为startx 已经启动了x server。 在该tty下xinit无法再次启动x server。
 

5、在init 3中用普通用户账号进入xstart 界面后,然后再切换init 1后有一个gnome-shell-cal 进程仍然在运行,这大概是我在使用的版本的一个bug
 

6、我使用的ubuntu的桌面环境是gnome,默认就已经安装好了。不需要安装lightdm 和 desktop-manager。gnome 、KED、lightdm 都是桌面环境,是同级别的工具,不需要重复安装。

7、xinit 、startx、init 5模式下登录问题基本可以根据xorg和gnome相关进程来进行断定。强制杀死相关的进程可以在不重启的情况下暂时解决问题。


8、init 5进入的登录界面会占用一个tty默认是tty1,登录后的桌面环境另外占用一个tty,如果tty没有被启用过,会取编号最小的未启用tty。Ctrl + alt+F1~F6分别启用tty1~6


http://chatgpt.dhexx.cn/article/4kMtriEu.shtml

相关文章

操作系统 - startx/xinit

了解startx/xinit 1.概述 用户可以通过 xinit 程序手动启动 Xorg 显示服务器,startx脚本是 xinit 的前端。 xinit 通常用在启动 X 时执行窗口管理器 或 桌面环境。虽然可以使用 xinit 在无窗口管理器的情况下启动图形程序,大部分图形程序都需要一个兼容…

CentOS 7输入startx无法启动图形化界面

【PS:最终解决方案见最后面】 【问题背景】 前两天在学习linux虚拟化的时候, 发现虚拟机磁盘空间不足, 由于当初分区的时候不是用lvm来分区的, 导致无法扩容, 所以只能新建了一台虚拟机来学习. 然而在新建完成后, 按照之前老师教的一系列优化手段, 将这台手段优化到…

6.1、startx命令怎么不能进入图形界面

命令行界面输入startx命令怎么不能进入图形界面^ ... [复制链接] 发表于 2010-1-29 12:55 | 来自 51CTO网页 [只看他] 楼主 我在虚拟机(vmware)上新安装的red hat linux 9.0在命令行界面输入startx命令怎么不能进入图形界面??&…

Linux常用命令——startx命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) startx 用来启动X Window 补充说明 startx命令用来启动X Window,实际上启动X Window的程序为xinit。 语法 startx(参数)参数 客户端及选项:X客户端及选项;服务器及选项&a…

startx命令详解

startx命令来自于英文词组”start X-windows“的缩写,其功能是用于启动X-Windows系统。X-Windows System也被称为X或X11,中文译为X窗口系统,主要工作就是以图形方式显示软件窗口的系统,现在的GNOME和KDE桌面环境都是以X窗口系统为…

用gcc编译C++文件

我们误以为gcc只能用来编译C文件&#xff0c;这是不对的。 gcc也可以编译C文件&#xff0c;只是gcc不能自动联接C程序使用的库&#xff0c;即链接过程我们不能用gcc 而g实际上在编译C文件时也是使用gcc编译器&#xff0c;在链接时才使用g 例子1&#xff1a; #include <st…

gcc编译c++文件

gcc是编译c语言的&#xff0c;默认情况下&#xff0c;如果直接编译c程序&#xff0c;会报错&#xff1a; [rootserver demo2]# ls hello.cpp [rootserver demo2]# cat hello.cpp #include <iostream> using namespace std; int main(){ cout<<"hello,c&qu…

C++:GCC编译:GCC编译C++程序分步流程

C或者C程序从源代码生成可执行程序的过程&#xff0c;需要经历4个过程分别是&#xff1a;预处理&#xff0c;编译&#xff0c;汇编&#xff0c;链接。但考虑实际使用过程中&#xff0c;用户可能并不关心程序的执行结果&#xff0c;只是想快速得到最终的可执行程序&#xff0c;因…

如何使用GCC编译器

目录 : GCC rules开始...预编译编译汇编连接另外两个重要选项调试小结站点链接 摘要: 要想读懂本文&#xff0c;你需要对C语言有基本的了解&#xff0c;本文将介绍如何使用gcc编译器。 首先&#xff0c;我们介绍如何在命令行方式下使用编译器编译简单的C源代码。 然后&#x…

gcc编译器入门教程

前言&#xff1a; GCC&#xff08;GNU Compiler Collection&#xff0c;GNU 编译器套装&#xff09;&#xff0c;是一套由 GNU 开发的编程语言编译器。GCC 原名为 GNU C 语言编译器&#xff0c;因为它原本只能处理 C语言。GCC 快速演进&#xff0c;变得可处理 C、Fortran、Pas…

Centos7安装并使用gcc编译器

一.安装gcc编译器 1.使用yum安装gcc&#xff08;需要获取管理员权限&#xff09; su root //进入管理员命令 yum -y install gcc gcc-c kernel-devel //安装gcc、c编译器以及内核文件 上图表示已…

gcc编译的四个过程

gcc是什么&#xff1f; GNU编译器套件&#xff08;GNU Compiler Collection&#xff09;包括C、C、Objective-C、Fortran、Java、Ada和Go语言的前端&#xff0c;也包括了这些语言的库&#xff08;如libstdc、libgcj等等&#xff09;。GCC的初衷是为GNU操作系统专门编写的一款编…

如何用gcc编译C代码

如何用gcc编译C代码 1、编写 hello word 的两种方法——现成编译器 这个方法大家都经常用&#xff0c;比如DEVCpp&#xff0c;Visual Studio 2017&#xff0c;Visual C 6.0等。 简单的输出“hello world”程序如下&#xff1a; #include <stdio.h>int main() {printf…

Linux gcc编译命令

编写一个C程序 1.用文本文件编写代码 用 touch 命令&#xff1a;“touch 文件名” 可以创建一个文件&#xff08;比如 touch hello.c&#xff09;&#xff0c;如下图&#xff1a; 在命令行输入 touch hello.c &#xff0c;就在文件夹中创建了一个hello.c文件&#xff0c;打开…

GCC编译器安装与下载

GCC介绍&#xff1a;是由GNU开发的支持C/C的跨平台编译器&#xff0c;在Windows上可以选择安装Cygwin或者 MinGW-w64,现在选择MinGW-w64来安装. 官网&#xff1a;MinGW-w64 下载地址&#xff1a;MinGW-w64 - for 32 and 64 bit Windows - Browse /ming…

gcc编译器

1 gcc编译器简介 gcc 是 Linux 平台下最常用的编译程序,它是Linux 平台编译器的事实标准。同时,在 Linux 平台下的嵌入式开发领域,gcc也是用得最普遍的一种编译器。gcc 之所以被广泛采用,是因为它能支持各种不同的目标体系结构。例如,它既支持基于宿主的开发(简单讲就是要为某…

【GCC】gcc编译器的使用

gcc编译器的使用 一、gcc编译过程&#xff08;精简&#xff09;1.gcc使用示例&#xff1a;2.执行“gcc -o hello hello.c -v”时&#xff0c;可以查看到这些步骤&#xff1a;3.可以手工执行以下命令体验一下&#xff1a; 二、gcc常用编译选项三、怎么编译多个文件四、制作、使用…

gcc编译过程

一、总体概述 GCC的编译流程分为四个步骤&#xff1a; 1、预处理&#xff08;Pre-Processing&#xff09; 2、编译&#xff08;Compiling&#xff09; 3、汇编 (Assembliang) 4、链接&#xff08;Linking&#xff09; 二、解释步骤 XXX为源文件 YY为生成的文件 1、预处理&am…

【Linux】gcc编译器

目录 一、什么是编译器 二、编译的过程 1.预处理 2.编译 3.汇编 4.链接 三、实际操作实例 四、总结 一、什么是编译器 简单讲&#xff0c;编译器就是将一种语言转化为另一种语言的程序&#xff0c;通常是将高级语言转化为低级语言。一个现代编译器的主要工工作流程&…

Linux下gcc编译器的安装与使用

GCC&#xff08;GNU Compiler Collection&#xff09;是由GNU开发的编程语言译器。GNU编译器套件包括C、C、 Objective-C、 Fortran、Java、Ada和Go语言前端&#xff0c;也包括了这些语言的库。在Linux上进行开发离不开GCC&#xff0c;本文将给出gcc的安装和基本使用方法。 目…