首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用systemctl作为root运行脚本。

无法使用systemctl作为root运行脚本。
EN

Stack Overflow用户
提问于 2015-07-07 01:04:42
回答 1查看 6.9K关注 0票数 3

在Debian启动时,我需要将补丁内存应用到蓝牙芯片上。此修补程序使用/dev/mem重置GPIO。此更新后的蓝牙init脚本包含在/etc/init.d/bluetooth中。

我的bluetooth.service

代码语言:javascript
复制
[Unit]
Description=Bluetooth service
Documentation=man:bluetoothd(8)

[Service]
Type=dbus
BusName=org.bluez
ExecStart=/etc/init.d/bluetooth start
User=root
NotifyAccess=main

[Install]
WantedBy=bluetooth.target
Alias=dbus-org.bluez.service

但是,当我重新启动时,我会收到一个错误,它说‘`Unable to open /dev/mem:运算不允许’。

我知道/dev/mem只对根用户可访问,但我不是以根用户的身份运行init脚本吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-07 01:28:22

它清楚地指出,您没有运行脚本的权限,您可以以根用户的身份运行脚本作为ExecStart=/etc/init.d/bluetooth start,这个命令应该以根用户的身份运行

只需以root身份登录并重新运行脚本即可。

在系统启动时运行脚本

  1. 在/etc/init.d/目录(以root用户身份登录) bluetooth.service中创建一个名为vi /etc/init.d/bluetooth.service的脚本
  2. 在脚本上设置可执行权限:chmod +x /etc/init.d/bluetooth.service
  3. 确保每次Debian系统启动/启动时都执行此脚本: update-rc.d bluetooth.service defaults 100

其中,bluetooth.service:是您的启动脚本名默认值:参数‘default’指的是默认运行级别,即2到5.100: to 100意味着脚本将在任何包含数字101的脚本之前被执行。只需运行命令

代码语言:javascript
复制
ls –l /etc/rc3.d/

此命令将使用数字软链接到/etc/init.d。

下次重新启动系统时,您的自定义命令或脚本将通过bluetooth.services执行。是

  1. 在系统启动时执行shell脚本打开/etc/init.d/目录中的文件bluetooth.service
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31258141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档