创建脚本

Ven*_*nem 3 battery scripts laptop power-management

我正在遵循 LessWatts 的建议,使用以下命令降低电池消耗:

mount -o remount,noatime /
hdparm -B 1 -S 12 /dev/sda
echo 3000 > /proc/sys/vm/dirty_writeback_centisecs
iwconfig wlan0 power on
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
Run Code Online (Sandbox Code Playgroud)

问题是,如何将它们设置为在系统启动时自动启动?

Mat*_*att 7

我相信您可以使用 /etc/rc.local 作为根引导脚本。

首先将所有命令复制到一个文本文件中,然后在文件顶部附加以下行:

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

然后将其保存在某个地方,也许是您的家庭目录。( /home/user/battery-script.sh )

然后在终端中使其可执行:

$ chmod +x /home/user/battery-script.sh
Run Code Online (Sandbox Code Playgroud)

现在在终端:

$ gksudo gedit /etc/rc.local
Run Code Online (Sandbox Code Playgroud)

现在在该行之前exit 0写入脚本的路径。( /home/user/battery-script.sh ) 确保exit 0在其他一切之后,否则它会在执行命令之前退出。

现在只是为了确定脚本何时运行,您可能需要添加一个 xmessage 命令,以便在运行时弹出一条消息。

xmessage -center "Battery script run in /etc/rc.local"
Run Code Online (Sandbox Code Playgroud)

确保它在exit 0.

现在,重新启动以测试以确保它在启动时运行,如果满意,则可以删除 xmessage 行。

如果由于某种原因这不起作用,您可以回退到 GNOME 的自动启动管理器。它涉及编辑 sudoers 文件以允许 root 访问您的脚本而无需密码。我们将编辑文件的权限和所有权,以免造成安全漏洞。

首先,将整个脚本移动到 /bin/ 文件夹中:

$ sudo mv battery-script.sh /bin/
Run Code Online (Sandbox Code Playgroud)

设置 root 所有权和权限,防止普通用户插入以 root 身份运行的恶意代码:

$ sudo chown root /bin/battery-script.sh
$ sudo chgrp root /bin/battery-script.sh
$ sudo chmod 555 /bin/battery-script.sh
Run Code Online (Sandbox Code Playgroud)

现在已经设置好了,是时候编辑 sudoers 文件了:

$ gksudo gedit /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

转到底部并添加此行。将$USER替换您的用户名

$USER    ALL = NOPASSWD:/bin/battery-script.sh
Run Code Online (Sandbox Code Playgroud)

现在,您可以在使用 sudo 时无需密码即可运行脚本。

接下来,打开启动应用程序,单击添加。将任何内容放在名称下,然后在命令下放置:

sudo /bin/battery-script.sh
Run Code Online (Sandbox Code Playgroud)

就是这样!启动时,您的脚本将以 root 身份运行,您可以在 battery-script.sh 中添加一行echo > /home/user/it_works.txt(替换为用户名),该文件将在下次启动时创建,因此您可以确保它正常工作,或者如前所述,你可以使用xmessage。