如果你的 Ubuntu Server 系统没有安装桌面环境,就没有 lightdm 管理器可用了,开机自动登录需要用到 tty。
按如下步骤操作:
- 打开终端,使用以下命令以 root 用户身份编辑
/etc/systemd/system/getty@tty1.service.d/autologin.conf
文件,这个文件一般不存在,需要创建它:
sudo nano /etc/systemd/system/getty@tty1.service.d/autologin.conf
我的服务器中不存在文件夹getty@tty1.service.d
,因此我是直接修改/etc/systemd/system/getty.target.wants/getty@tty1.service
2. 输入以下内容:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin cw --noclear %I $TERM
这会让 tty1
终端,自动作为 cw
用户登录。按 Ctrl+X
,输入 Y
并按回车退出。
打开对应文件之后,可能可以看到ExecStart=-/sbin/agetty -o '-p -- \u' --noclear %I $TERM
,把这一行注释掉,再换成上面写的ExecStart=-/sbin/agetty --autologin cw --noclear %I $TERM
。这个命令也是用于在 tty
终端中登录用户的 agetty
程序。下面是每个部分的解释:
ExecStart=
:配置systemd
来启动tty1
终端。-/sbin/agetty
:这是启动agetty
程序的命令,-
符号表示忽略任何错误,不管agetty
是否成功启动。--autologin cw
:这是agetty
的选项,用于设置自动登录的用户名,用户名为cw
。--noclear
:这是agetty
的选项,用于在用户注销后,保留登录的状态(终端上的内容不会被清除)。%I
:这是agetty
的参数,表示启用动态的终端设备编号(%I
对应的是终端设备编号)。$TERM
:这也是agetty
的参数,表示终端类型。
综上,ExecStart=-/sbin/agetty --autologin cw --noclear %I $TERM
表示在 tty1
终端上,启动 agetty
程序,并自动登录用户名为 cw
,并且保留登录的状态(不清除屏幕上的内容)。
下面的部分都是设置jupyter lab自启动,但不太好用,每调用一次bash都会启动一个,很麻烦,所以还是推荐参照云服务器安装Anaconda3以及Jupyter-lab的安装与配置和开机启动
-
接下来创建启动命令的脚本,使用以下命令创建一个名为
startup.sh
的文件:sudo nano /home/cw/startup.sh
-
输入以下内容:
#!/bin/bash sleep 10 /usr/bin/nohup jupyter lab >/dev/null 2>&1 &
sleep 10
命令是为了等待系统启动完成,防止启动脚本失败。>/dev/null 2>&1
命令是把jupyter lab
的输出重定向到/dev/null
中,这样就不会在终端中产生输出。按Ctrl+X
,输入Y
并按回车退出。确保你已经在
cw
用户下,然后改变脚本的权限,使得能够运行:chmod +x /home/cw/startup.sh
-
接下来,需要将脚本添加到
cw
用户的 bashrc 配置文件中,使得每次打开终端,都会自动启动jupyter lab
:nano /home/cw/.bashrc
-
在文件末尾添加如下内容:
# Start jupyter lab on tty1 if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then /bin/bash /home/cw/startup.sh fi
只有当不是在桌面环境下,而且当前终端是
tty1
终端时,才会执行startup.sh
脚本启动jupyter lab
。按
Ctrl+X
,输入Y
并按回车退出。 -
重启系统,等待系统启动,
cw
用户会自动登录到 tty1 终端,并启动jupyter lab
。
完成以上步骤后,每当你使用 cw
用户登录到 tty1 终端时,jupyter lab
将自动启动。