Ubuntu Server 24.04 配置自动登录及开机自动运行Discord机器人求助
Ubuntu Server 24.04 配置自动登录及开机自动运行Discord机器人求助
我的问题情况
我用RPi Imager装好了Ubuntu Server,现在有个Python写的Discord机器人,目前是我手动登录服务器后,它会自动启动(因为我把启动命令加在.bashrc文件里了),但每次都得手动登录太麻烦,想找个办法让服务器能自动登录,而且机器人最好开机就能跑,不用等我手动登进去。另外说明下,这个服务器不会24/7一直运行哈。
我现在加在.bashrc里的启动命令是这样的:
cd environments/Psylar source my_env/bin/activate python3 psylar.py
解决方案
一、配置Ubuntu Server控制台自动登录
如果你确实需要服务器开机后自动登录到你的用户账号,可以按下面的步骤操作:
- 编辑getty服务的自定义配置:
打开终端执行:sudo systemctl edit getty@tty1.service - 在弹出的编辑器中,输入以下内容(记得把
你的用户名替换成你实际使用的服务器用户名):[Service] ExecStart= ExecStart=-/sbin/agetty --autologin 你的用户名 --noclear %I $TERM - 保存并退出编辑器后,重新加载systemd配置并重启服务:
完成后,下次开机时,默认的tty1控制台就会自动登录你的账号了。sudo systemctl daemon-reload && sudo systemctl restart getty@tty1.service
二、更稳定的机器人开机启动方案:使用systemd服务
用.bashrc启动机器人有个明显的缺点:一旦你的用户会话意外断开(比如远程连接掉线),机器人也会跟着停止运行。用systemd服务来管理的话,机器人可以脱离用户会话,开机自动启动,甚至崩溃后还能自动重启,更可靠。
具体步骤:
- 创建一个systemd服务配置文件:
sudo nano /etc/systemd/system/discord-psylar-bot.service - 在编辑器中粘贴以下内容,注意替换其中的
你的用户名和路径为你实际的信息:[Unit] Description=Discord Psylar Bot 服务 After=network.target # 确保网络连接建立后再启动机器人 [Service] User=你的用户名 # 运行机器人的用户 WorkingDirectory=/home/你的用户名/environments/Psylar # 机器人代码所在的绝对路径 ExecStart=/home/你的用户名/environments/Psylar/my_env/bin/python3 psylar.py # 直接用虚拟环境的Python执行脚本 Restart=on-failure # 机器人崩溃时自动重启,不需要可以删除此行 RestartSec=5 # 崩溃后5秒再重启 [Install] WantedBy=multi-user.target # 多用户环境下开机启动 - 保存并退出编辑器后,让systemd加载新的服务配置:
sudo systemctl daemon-reload - 设置服务开机自启:
sudo systemctl enable discord-psylar-bot.service - 现在可以手动启动服务测试:
用以下命令查看运行状态,确认机器人正常启动:sudo systemctl start discord-psylar-bot.servicesudo systemctl status discord-psylar-bot.service
如果用了这个systemd服务方案,其实你甚至可以不用配置自动登录,机器人开机就会独立运行。要是你还是需要服务器自动登录的话,把第一部分的自动登录配置加上就好。
备注:内容来源于stack exchange,提问作者Opressive Extenz
相关产品推荐
相关产品推荐

