启动时运行 shell 脚本 (Kali Linux)

启动时运行 shell 脚本 (Kali Linux)

这似乎是一件非常基本的事情,我什至遵循了一些教程来获得一个在启动时运行的简单脚本,但没有成功。

这是我的脚本(位于根目录中)的样子:

#! /bin/bash
xmodmap ~/.xmodmaprc
echo 0 | sudo tee /sys/module/hid_apple/parameters/iso_layout

该脚本基本上通过切换控制键和命令键来更改我的键盘映射(就像我在 MacBook 上一样)。它已被chmod编辑为可执行,因此当我执行./keymap_fix.sh或我执行时它会成功执行/root/keymap_fix.sh

我已经遵循了这些简单的教程 https://www.cyberciti.biz/tips/linux-how-to-run-a-command-when-boots-up.htmlhttps://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/

所以,我已经将 shell 脚本复制到/etc/init.d并执行了此操作update-rc.d keymap_fix.sh defaults 100

我什至尝试以类似的方式设置 crontab,通过添加@reboot /root/keymap_fix.sh,但没有任何效果!每当我重新启动时,我的键盘映射都保持不变。 :/

如果有人能在这里帮助我,我将不胜感激,谢谢!

答案1

像这样的命令xmodmap只能在 X 窗口中运行,

您应该dot.desktop在 xdg autostart 文件夹中创建一个文件,例如创建一个文件~/.config/autostart/startup.desktop并将这些行放入其中:

Exec=~/bin/startup.sh

这个链接欲了解详情

答案2

这个问题是重复的kali linux 启动时启动脚本

我通过以下步骤回答了这个问题:

sudo vim /etc/systemd/system/rc-local.service

然后添加以下内容。

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

注意:从 16.10 开始,Ubuntu 不再附带 /etc/rc.local 文件。对于 Kali 等其他发行版也是如此。您可以通过执行此命令来创建该文件。

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local

然后给/etc/rc.local文件添加执行权限。

sudo chmod +x /etc/rc.local

之后,在系统启动时启用该服务:

sudo systemctl enable rc-local

最后,启动服务并检查其状态:

sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

完整的帖子:如何使用 Systemd 启用 /etc/rc.local

相关内容