CentOS系统GCP VM开机自动启动带预定义Token的Jupyter Notebook
解决GCP CentOS虚拟机开机自动启动指定用户Jupyter Notebook的问题
问题原因定位
报错Account or password is expired, reset your password and try again并非实际密码过期,核心问题是:
- 开机启动脚本执行时环境变量不完整,相对路径指向错误
sudo -u test1在启动脚本环境中未加载用户的完整登录配置
修复步骤
1. 确认test1账号状态(排除真过期)
先检查并重置账号密码,避免账号锁定:
sudo passwd test1
执行以下命令确认账号有效期为永久:
chage -l test1
确保输出中Account expires项显示为never。
2. 修改启动脚本为绝对路径+完整环境加载
将原启动脚本替换为以下命令,解决路径和环境问题:
sudo -u test1 bash -l -c 'cd /home/test1 && nohup /home/test1/tvenv/bin/jupyter-notebook --config=/home/test1/.jupyter/jupyter_notebook_config.py &'
关键修正点:
- 用绝对路径替代相对路径,避免启动环境中
~/指向错误 - 添加
bash -l强制加载test1用户的登录环境配置,确保虚拟环境依赖正常 - 明确指定
--config参数,保证预定义Token等配置生效
3. 更新GCP开机启动脚本
在GCP控制台或通过gcloud命令,将VM的自定义启动脚本替换为上述修正后的命令。
4. 验证效果
重启VM后,执行以下命令检查Jupyter进程状态:
ps aux | grep jupyter-notebook
同时查看启动脚本日志确认无报错:
sudo journalctl -u google-startup-scripts.service
备选方案:用systemd服务管理(更稳定)
如果上述方法仍有问题,推荐使用systemd服务实现开机启动,可靠性更高:
- 创建systemd服务文件
/etc/systemd/system/jupyter-test1.service:
[Unit] Description=Jupyter Notebook for test1 user After=network.target [Service] User=test1 Group=test1 WorkingDirectory=/home/test1 ExecStart=/home/test1/tvenv/bin/jupyter-notebook --config=/home/test1/.jupyter/jupyter_notebook_config.py Restart=always [Install] WantedBy=multi-user.target
- 启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable jupyter-test1.service sudo systemctl start jupyter-test1.service
- 验证服务状态:
sudo systemctl status jupyter-test1.service
重启VM后,服务会自动启动Jupyter Notebook,无需依赖GCP启动脚本。
内容的提问来源于stack exchange,提问作者folded verse
相关产品推荐
相关产品推荐

