我正在 Mac 上设置一个名为 Jenkins 的应用程序,它是一个构建工具。
关于这个主题有很多非常有用的文章,它们都涉及修改 plist 以指向新创建的用户。
他们都说使用 sudo 来启动/停止
sudo launchctl unload -w /Library/LaunchDaemons/org.jenkins-ci.plist
sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist
他们都说为此目的要创建一个新用户(现有用户怎么样?)
sudo dscl . create /Users/jenkins
sudo dscl . create /Users/jenkins PrimaryGroupID 1
sudo dscl . create /Users/jenkins UniqueID 300
sudo dscl . create /Users/jenkins UserShell /bin/bash
sudo dscl . create /Users/jenkins home /Users/Shared/Jenkins/Home/
sudo dscl . create /Users/jenkins NFSHomeDirectory /Users/Shared/Jenkins/Home/
sudo dscl . passwd /Users/jenkins
现在我刚开始使用 Mac。这没有告诉我任何有关以下内容的信息:
- 如何使应用程序/服务/守护程序在重启机器时自动启动。
- 这如何赋予用户 jenkins 所需的权限?
- 我还需要以一个用户身份登录来更改 plist,然后再以另一个用户身份登录等等。
- 尽管每行都执行正常,但我根本没在 /Users/jenkins 中看到这个新创建的用户。我没看到 /Users/jenkins。
- 启动机器并以管理员帐户登录将如何导致此 jenkins 用户和守护进程启动?我就是不明白?我需要在管理员中的某些启动脚本中添加 sudo 吗?
我的意思是,我认为每个人在考虑运行守护进程时都会想到这一点。而不是不断地执行 sudo 这个和 sudo 那个。
我完全不知道如果我启动机器并以用户 jenkins 登录会发生什么。无论哪个用户实际登录到机器,我如何让 jenkins 服务器运行?
注意:我以管理员账户执行了所有操作。不是 root 账户。
所以我需要一些有关如何做到这一点的完整信息。
我的意思是,如果每次机器启动时我都需要 sudo load,那么守护进程有什么意义呢?
现在我的具体情况是我已经有一个管理员用户 jenkinsadmin,我想使用它来监控机器等。如上所述创建这个新用户并没有给我一个具有管理员权限的用户。事实上,执行 sudo 是不可能的。那么每次机器启动并使用 jenkinsadmin 登录时,我如何自动启动这个 jenkins?
答案1
您需要告诉 Mac,Jenkins 必须在重启后立即启动。这是使用所谓的 LaunchDaemons 完成的。有关 LaunchDaemons 和 LaunchAgents 的更多信息,请查看Apple 开发者资源的守护进程和服务页面。
基本上,驻留在 Mac 中的特殊文件/Library/LaunchDaemons
会导致 Mac 启动某个程序。如果文件包含<key>RunAtLoad</key><true/>
该应用程序,则该应用程序将在系统启动时启动,您无需手动启动该过程。
你做不是需要一个具有管理访问权限的用户。只需在 LauchDaemon 配置文件中将用户设置为该进程的用户即可。当系统启动该进程时,它将以该给定用户的身份启动该进程。即使您通过运行手动启动该进程,sudo launchctl
该进程最终也会以您的jenkins管理员-用户。