AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1889387
Accepted
berger-devel
berger-devel
Asked: 2025-04-01 19:00:25 +0800 CST2025-04-01 19:00:25 +0800 CST 2025-04-01 19:00:25 +0800 CST

环境变量和 systemd

  • 772

我正在 Ubuntu 上安装 SonarQube Community Build。我已将 Java 从 .tar.gz 安装到 /opt/java。我已将JAVA_HOME=/opt/java/和添加SONAR_JAVA_PATH=/opt/java/bin/java到我的 .profile 文件中。echo $JAVA_HOME并echo $SONAR_JAVA_PATH给了我预期的结果。

我已将 SonarQube 安装到 /opt/sonarqube,并且可以使用 启动它/opt/sonarqube/bin/linux-x86-x64/sonar.sh start。

仍然不起作用的是将其安装为 systemd 服务。日志显示

Java not found. Please make sure that the environmental variable SONAR_JAVA_PATH points to a Java executable

这是单元文件:

[Unit]
Description=SonarQube Community Build
[Service]
Type=simple
RestartSec=1
User=me
ExecStart=/bin/bash /opt/sonarqube/bin/linux-x86-64/sonar.sh start
WorkingDirectory=/opt/sonarqube
[Install]
WantedBy=multi-user.target

我遗漏了什么?谢谢。

ubuntu
  • 2 2 个回答
  • 60 Views

2 个回答

  • Voted
  1. berger-devel
    2025-04-01T19:12:39+08:002025-04-01T19:12:39+08:00

    刚刚发现单元文件中的环境标签:

    [Unit]
    ...
    [Service]
    ...
    Environment="SONAR_JAVA_PATH=/opt/java/bin/java"
    [Install]
    ...
    
    • 1
  2. Best Answer
    grawity
    2025-04-01T19:13:51+08:002025-04-01T19:13:51+08:00

    该特定服务所需的环境变量应作为服务的一部分指定,在本例中为[Service] Environment=参数。

    [Service]
    Environment=JAVA_HOME=/opt/java/
    Environment=SONAR_JAVA_PATH=/opt/java/bin/java
    

    最初的原因是它通常~/.profile 不会作为用户切换的一部分被加载。1它仅由您的 shell(Bash)专门加载,并且仅在以“登录 shell”模式启动时加载。

    但是当您启动服务时,ExecStart 程序不会通过“登录”shell 运行 - 它根本不通过 shell 运行,只是直接执行 - 因此任何特定于 shell 的自定义都不适用,无论是 ~/.profile 还是 ~/.bashrc。

    即使您的 ExecStart 明确运行了 shell 脚本,该脚本解释器进程也知道它是一个非交互式shell,并且不会加载任何“rc”或“profile”脚本;它的sonar.sh行为就像一个常规程序,并且只具有它继承的环境。

    在极少数情况下,您可以运行bash -l -c "..."强制它作为“登录”shell 运行,即使是非交互式的,从而从 .profile 加载环境,但这不一定是个好主意,除非您知道 .profile 写得很好并且不会启动随机的“登录时启动”的事情。


    1(而且 User= 也不构成完整的“登录”;它仅切换 UID/GID,并且可能设置“最低限度”环境(如 HOME)。服务通常不需要经历完整的登录过程。在极少数情况下,PAMName= 可以启用它,但这只是“预 shell”步骤,仍然不包括 Bash 本身。换句话说,Linux 上的用户登录由许多离散步骤组成,几乎所有这些步骤对于服务都被省略了。)

    • 1

相关问题

  • 与 putty 和 Ubuntu 集成

  • 无法打开 Windows 10 和在 Hyper-v 上创建的本地托管的 Ubuntu VM 之间的端口

  • Docker 容器 ssh 错误:ssh_exchange_identification: Connection closed by remote host

  • apache2 可以在没有 conf 文件的情况下工作吗?

  • vmwared 共享文件夹不工作

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve