在 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
这还能用吗?
该脚本将在图形界面出现之前运行......
使用所需命令制作脚本。vi file.sh
将脚本复制到/etc/init.d cp file.sh /etc/init.d/file.sh
更改权限以允许执行 chmod +x /etc/init.d/file.sh
在 /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/
这会将脚本复制到包含启动时执行的脚本的位置,以便下次启动时它就可以工作。