如果你的 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
将自动启动。