与 Ubuntu 同等的 Autoexec.bat 是否以 root 权限运行?

与 Ubuntu 同等的 Autoexec.bat 是否以 root 权限运行?

在 Ubuntu 上一定有几个“ autoexec.bat”等效项,因为我可以看到类似的文件rc.local似乎做得很少,因为文件中的注释说它默认情况下不起作用,而我尝试将此命令放入其中,但它不起作用。

我需要知道的是将这条线放在哪里。

echo 0 | /usr/bin/tee -a /sys/class/leds/smc::kbd_backlight/brightness

我也看到了一个rc.local/etc/init.d但是我要把 cmd 放在哪里才能使其工作是一个谜,因为里面有两个函数,所以我应该把它放在其中一个函数的末尾还是最后一行?

该命令需要 root 权限才能运行,理想情况下应在计算机启动时执行。因为该命令使我的 MacBook Air 的键盘变暗。

另外,如果只有特定用户运行此命令,我还想知道我需要编辑什么文件。由于它是一个 root 命令,并且我不想授予该用户管理员或 sudo 访问权限,因此我希望当用户登录时以 root 身份执行此命令,并且用户无法停止该命令的运行。


其他发现
$HOME/.profile是登录脚本,但不能以 root 身份运行,如果您使用 sudo 命令它会起作用,但这不是我需要的。

/etc/profile奇怪,它不会在启动时执行,但是当我进入 shell 并执行sudo -i“它会在 sudo 进入交互模式后立即运行


简洁的捷径
使用 14.04 版本,在早期版本中可能可以正常工作,您只需使用以下命令在 crontab 中添加一行sudo crontab -e,然后添加一行“@reboot whatevercommandwithfullpath”即可。但使用此新版本,我创建了一个 upstart 脚本,它更接近应有的方式。

答案1

您可以创建一个守护进程,这是正确的做法。但是它比 rc.local 稍微难一点。

看这里 :https://superuser.com/questions/530071/installing-daemon-on-a-fresh-ubuntu-system

详细帮助(可以以 /etc/init.d/hostname 为例):

复制骨架:

sudo cp /etc/init.d/skeleton /etc/init.d/keyboard_backlight

编辑骨架:

sudo nano /etc/init.d/keyboard_backlight

搜索此内容

do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.

}

并将其更改为:

do_start()
{
        echo 0 | /usr/bin/tee -a /sys/class/leds/smc::kbd_backlight/brightness
}

注释掉或删除 do_stop 和 do_reload 中的行

do_stop()
{
}
do_reload()
{
}

保存文件。

赋予文件执行权限:

sudo chmod 755 /etc/init.d/keyboard_backlight

测试您的服务:

sudo /etc/init.d/keyboard_backlight start

如果一切正常,加载服务以供启动

sudo update-rc.d keyboard_backlight defaults 99

此致。

答案2

也许,对于登录 shell,它们按以下顺序运行:

1./etc/profile
2./etc/profile.d/ files
3.$HOME/.bash_profile
4.$HOME/.bash_login

不过,我不确定 /etc/profile 是否在任何用户实际登录之前执行,但还是值得尝试一下,以防万一我是对的。

答案3

这还能用吗?

该脚本将在图形界面出现之前运行......

  1. 使用所需命令制作脚本。vi file.sh

  2. 将脚本复制到/etc/init.d cp file.sh /etc/init.d/file.sh

  3. 更改权限以允许执行 chmod +x /etc/init.d/file.sh

  4. 在 /etc/init.d 链接它! sudo update-rc.d file.sh start 99 2 . (不要忘记命令末尾的“。”)

如果您需要在不久的将来禁用此脚本:sudo update-rc.d -f file.sh remove

这种方式似乎很简单,你可以为不同的事情保留不同的脚本

答案4

假设您有一个工作脚本(具有正确的文件权限),名称为myscript.sh

cd到包含脚本的文件夹并执行以下操作:

sudo cp myscript.sh     /etc/profile.d/

这会将脚本复制到包含启动时执行的脚本的位置,以便下次启动时它就可以工作。

相关内容