无法使用systemctl以root身份运行脚本

时间:2015-07-07 01:04:42

标签: linux bluetooth debian systemd

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

我的bluetooth.service

[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

然而,当我重新启动时,我收到错误消息“无法打开/ dev / mem:操作不被允许”

我知道/dev/mem只能由root访问,但我不是以root身份运行我的init脚本吗?

1 个答案:

答案 0 :(得分:-3)

它清楚地表明您无权运行脚本,您可以 您需要以root用户身份运行脚本 ExecStart=/etc/init.d/bluetooth start 此命令应以root用户身份运行

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

系统启动时运行脚本

  1. 在/etc/init.d/目录中创建一个名为bluetooth.service的脚本(以root身份登录) vi /etc/init.d/bluetooth.service

  2. 设置脚本的可执行权限: chmod +x /etc/init.d/bluetooth.service

  3. 确保每次Debian Linux系统启动/启动时都会执行此脚本:

    update-rc.d bluetooth.service defaults 100

  4. 其中,bluetooth.service:是您的启动脚本名称 defaults:参数'defaults'是指默认的运行级别,为2到5。 100:数字100表示​​脚本将在包含数字101的任何脚本之前执行。 只需运行命令

    ls –l /etc/rc3.d/
    

    此命令将软件链接到/etc/init.d并带有数字。

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

    1. 在系统启动时执行shell脚本 打开/etc/init.d/目录中的文件bluetooth.service