Systemd 无法运行我的启动脚本

Systemd 无法运行我的启动脚本

我在这里查看了有关 systemd 的每个问题,但似乎找不到答案,所以如果我以某种方式错过了它,我深表歉意。

我只想在启动时运行以下脚本,但似乎必须在 systemd 完成之后运行,因为它依赖于网络和 gui 的启动。我正在尝试设置鼠标垫以允许点击,并尝试运行将我连接到 VPN 的 connect.sh 脚本。下面的脚本完成了我手动运行它时应该做的所有事情,但我一生都无法弄清楚为什么它不会在启动时运行。

启动.sh:

#! /bin/sh
# /root/Scripts/startup.sh

synclient tapbutton1=1 clickfinger2=3 tapbutton2=3
sleep 2
sh /root/Scripts/connect.sh
sleep 10

connect.sh 的内容:

#! /bin/sh
# /root/Scripts/connect.sh


echo "disabling wifi adapter..\n"
ifconfig wlan0 down
sleep 3
macchanger -r wlan0
echo "enabling wifi adapter..\n"
ifconfig wlan0 up
sleep 3
echo "connecting to VPN..\n"
nmcli con up id vpnconnection1
sleep 3
ifconfig
echo "finished\n"

/etc/systemd/system/mystartup.service:

[Unit]
After=network.target

[Service]
ExecStart=/root/Scripts/startup.sh

[Install]
WantedBy=default.target

我运行systemctl enable mystartup.service并重新启动,但脚本显然尚未运行,因为更改尚未生效。

我究竟做错了什么?

编辑:我更新了脚本以反映脚本位置的绝对路径。运行systemctl并重新启动,但仍然无法工作。

为了获得更多说明,我只想在启动时运行这两个脚本。将它们注册为服务对我来说没有意义,但我研究的所有内容都将我带到了这里。也就是说,systemctl --state=failed没有显示 mystartup.service 列出,并service mystartup.service statusUnit mystartup.service.service could not be found.

答案1

这些并不真正属于系统服务......

设置鼠标垫取决于 X 的运行,并且需要在该会话中完成。

设置它的正确方法是将其配置为 X 配置的一部分。

这里一种配置方法。

关于连接到 VPN,您可能应该在 NetworkManager 中进行配置,它控制您的连接并知道您的网络何时启动。

这里了解一种将调度程序脚本连接到 NetworkManager 的方法,该脚本可以在网络启动时启动 VPN。

相关内容