编辑
我所做的是以下(希望它不会咬我的底部):
restart_network.sh
在我的目录中创建了一个/root
。在里面:
#!/bin/bash
while ! (grep -q "ttl" <<< "$(ping -c2 192.168.1.150)")
do
ifup enx207bd2248c85
done
- 创建
/etc/systemd/system/fixlan.service
于:
[Unit]
Description=Fix network incase the USB-NIC does not start.
#because I want it to first try to activate the USB-NIC alone
After=networking.service
#If didn't succeed, at least wait for network before starting all
#Nextcloud services (because it's the designation of the server)
Before=snap.nextcloud.mdns-publisher.service snap.nextcloud.redis-server.service snap.nextcloud.mysql.service snap.nextcloud.renew-certs.service snap.nextcloud.apache.service snap.nextcloud.logrotate.service snap.nextcloud.nextcloud-fixer.service snap.nextcloud.php-fpm.service
[Service]
ExecStart=/root/restart_network.sh
我从未尝试过创建 systemd 服务,而且我不知道我做得是否正确。
编辑
我有一个无头 Debian 11 服务器。网卡坏了所以我安装了USB网卡。有时(例如每五次启动或其他情况)网卡无法启动。如果我登录并
ifup enx207bd2248c85
网卡获得其IP地址,然后我可以重新启动所有相关服务。
所以我们的想法是做类似的事情:
if (grep -q "ttl" <<< "$(ping -q -c2 192.168.1.151)"); then
reboot now;
fi
作为启动脚本,我不太确定该怎么做(添加启动脚本)。现在这可能会起作用,但是机器很有可能会进入重新启动循环。那么,您认为还有更好的方法吗?也许只是
if (grep -q "ttl" <<< "$(ping -q -c2 192.168.1.151)"); then
# restart all services
fi
所以我确信我不知道该怎么做......
请帮忙。
答案1
所以,我最终使用crontab
并添加了一条@reboot
运行/root/restart_network.sh
.如前所述,脚本是:
#!/bin/bash
while ! (grep -q "ttl" <<< "$(ping -c2 192.168.1.150)")
do
ifup enx207bd2248c85
systemctl restart snap.nextcloud.* #added just in case...
done