使用“systemd”在 15.04 下启动时运行 sudo 脚本

使用“systemd”在 15.04 下启动时运行 sudo 脚本

我想运行一个脚本来在登录时关闭华硕的键盘背光(这个答案不起作用)。systemd在 Ubuntu 15.04 中引入 之前,我通过 /etc/rc.local使用 命令来实现这一点(sleep 10 && echo 0 > /sys/class/leds/asus::kbd_backlight/brightness)。然而,在 下systemd,这不再起作用。

我尝试跟随此处的说明创建一个systemd service。但是这不起作用。这是我使用的文本:

[Unit] 描述=MBWD 键盘背光关闭脚本

[服务] 类型=oneshot ExecStart=/usr/lib/systemd/scripts/keyboard_backlight.sh #RemainAfterExit=yes [安装] WantedBy=multi-user.target

调用此脚本:

 #!/bin/bash
 echo 0 | sudo tee /sys/class/leds/asus::kbd_backlight/brightness

然后我启用该服务,启动该服务,并使用该systemctl preset命令在启动时启用该服务(我认为这就是它的作用)。

完成所有这些操作后,systemctl status命令会显示服务已启用,当我systemctl start启动服务时,键盘会变暗。而且,在重新启动时(即启动时),它可能会起作用,因为 Ubuntu 启动时键盘会关闭。

但是,一旦我进入登录屏幕并登录,键盘灯就会重新亮起。我尝试通过sleep 20在脚本中使用和通过以下方式巧妙地解决这个问题:创造一个systemd.timer单位。两者都不起作用。

有人可以帮忙吗?

答案1

我最终通过使用rc-local.serviceand 而/etc/rc.local不是创建单独的 systemd 服务解决了这个问题。以下是我所做的:

  1. 在终端:systemctl enable rc-local.service
  2. 我输入/etc/rc.local了以下内容:

/bin/sh -e (睡眠 20 && echo 0 > /sys/devices/platform/asus-nb-wmi/leds/asus::kbd_backlight/brightness) 退出 0

  1. 使/etc/rc.local可执行文件:

sudo chmod a+x /etc/rc.local

  1. 要确认,请检查rc-local.service

systemctl status rc-local.service

它应该显示绿色并表示活动。就是这样。

答案2

当然不是最好的答案,但您可以通过安装包 upstart-sysv 从 systemd 切换到 upstart。

sudo apt-get install upstart-sysv

相关内容