Amazon Linux中启动Tomcat报错(code=exited, status=217/USER)求助
Tomcat启动报错(code=exited, status=217/USER)排查方案
status=217/USER的核心原因是systemd无法切换到配置中指定的tomcat用户/组,以下是具体排查步骤:
1. 确认tomcat用户/组是否存在且属性有效
- 执行命令检查用户状态:
id tomcat- 若输出提示
no such user,需创建符合要求的系统用户:
(sudo useradd -r -m -U -d /opt/tomcat -s /sbin/nologin tomcat-r标记为系统用户,-m创建主目录,-U自动创建同名组,-d指定主目录路径,-s设置不可登录shell) - 若用户已存在,查看
/etc/passwd文件中tomcat用户的配置行,确保shell路径有效(如/sbin/nologin或/bin/bash,不能是不存在的路径):grep tomcat /etc/passwd
- 若输出提示
2. 检查service配置的用户/组拼写
确认/etc/systemd/system/tomcat.service中的User=tomcat和Group=tomcat无拼写错误(注意大小写、字符正确性)。
3. 修复启动脚本的权限与归属
- 确保tomcat用户拥有脚本的执行权限:
sudo chmod +x /home/test/scripts/start-tomcats.sh /home/test/scripts/shutdown-tomcats.sh - 调整脚本及目录的归属,确保tomcat用户可访问:
sudo chown -R tomcat:tomcat /home/test/scripts - 同时检查上级目录
/home/test的权限,需至少给tomcat用户rx权限(可执行、可读):sudo chmod o+rx /home/test
4. 验证环境变量文件的读取权限
/etc/environment需允许tomcat用户读取,执行以下命令修复:
sudo chmod o+r /etc/environment
5. 重新加载systemd配置并测试启动
- 重新加载service配置:
sudo systemctl daemon-reload - 再次尝试启动tomcat:
sudo systemctl start tomcat - 查看状态确认结果:
systemctl status tomcat.service
内容的提问来源于stack exchange,提问作者gabriel
相关产品推荐
相关产品推荐

