当前位置: 首页 > 知识库问答 >
问题:

来自非root用户的单位(用于启动/停止/启用/禁用命令)

姬和歌
2023-03-14

我想在引导时通过一些非root用户(例如michael)通过systemd(操作系统是Fedora Core 16)执行脚本

我不需要root权限-我只想在启动时和关闭时在systemd中运行我的一些单元。我不想为此打开root用户。我只想使用systemd单元语法的力量来启动和监视我的进程(当然没有root访问权限)。这可能吗?

我在文档中找不到任何帮助。我只在systemd(1)中找到-

$ pkg-config systemd --variable=systemduserunitdir
/usr/lib/systemd/user

但是/usr/lib/systemd/user是:

drwxr-xr-x.2根

我无法想象如何以非root用户的身份使用此目录...

共有2个答案

郎刚捷
2023-03-14

为“michael”创建用户systemd单位文件。

以下是确保用户systemd进程在引导时而不是登录时启动的魔法:

loginctl enable-linger michael

全部细节

越雨泽
2023-03-14

此Arch Linux文档可能会有所帮助。

systemd为用户提供了运行systemd实例来管理其会话和服务的能力。当用户运行systemd时,这允许用户启动、停止、启用和禁用某些目录中的单元。这对于通常以root用户或特殊用户(如mpd)以外的用户身份运行的守护程序和其他服务来说很方便。

他们建议通过xinit启动一个系统-用户实例,但我想不管用户是否登录,都应该启动用户服务。

我通常会在crontab中添加一个@reboot行。

来自维基百科:

@如果需要在特定用户下启动服务器或守护程序,并且该用户无权配置init来启动程序,则重新启动会很有用。

也许你可以通过@reboot启动systemd--user!!!

 类似资料:
  • 问题内容: 我有一个简单的python脚本,我需要启动和停止,我需要使用start.sh和stop.sh脚本来执行此操作。 我有start.sh: 和stop.sh 我主要关注stop.sh脚本。我 认为 这是找到pid的适当方法,但我对此并不敢多说。start.sh成功启动它。当我运行stop.sh时,我无法再通过控制台找到该进程,但输出如下: 因此似乎可以正常工作,并显示“没有这样的过程”的错

  • 我正在编写一个将在Linux服务器上运行的Java程序。程序需要以“root”的身份开始,做某种操作(读取文件),然后将自己降级为非root用户,在文件已经读取并关闭之后。 我通读了下面的问题,但还没有找到可行的解决方案--尤其是因为我处理的不是http端口。

  • 问题内容: 如果我在命令行中键入,则可以看到以下行: 要 启动 此cronjob,我需要使用命令编辑文件,删除该行开头的注释字符,保存已编辑的文件,然后退出编辑器。 要 停止 此cronjob,请执行相同的步骤,但在该行的开头添加注释字符。 我想使用 PHP脚本 实现完全相同的效果,而不是手动编辑文件。 问题答案: 我进行了一些研究,并在论坛中找到以下消息: 将EDITOR环境变量设置为php脚本

  • PrimeFaces的CommandButton允许指定图标: 但是,我需要根据JSF托管bean属性启用/禁用图标。 我试过了 这适用于选择不同的图标,但不允许完全禁用图标(即,在没有属性的情况下获得相同的渲染效果)。我可以在中返回一个空字符串,但PrimeFaces仍将渲染额外的

  • 我正在开发一个web服务来创建和更新OIM中的用户。OIM 12c Rest api用于此目的。我能够使用更新用户api-/iam/convernance/selfservice/api/v1/users/{uuid}更新名字、姓氏等字段。 我必须在我的服务中添加启用/禁用用户功能。我无法使用上述rest服务实现这一点。OIM还有其他Rest api设置usr_disabled标志吗? 设置: O

  • 问题内容: 我想用另一个命令启动一个停止的Docker容器,因为默认命令崩溃了-这意味着我无法启动该容器,然后使用’docker exec’。 基本上,我想启动一个外壳,以便可以检查容器的内容。 幸运的是,我使用-it选项创建了容器! 问题答案: 提交停止的容器: 此命令将修改后的容器状态保存到新映像中 从另一个入口点开始/运行: 入口点参数描述:https ://docs.docker.com/