
編集する
私がすることは次のとおりです(私の底まで噛まないでください):
restart_network.sh
私のディレクトリに1つを作成しました/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
私は体系化されたサービスを作ったことがなく、私が正しくやっているのかわかりません。
編集する
ヘッドレスDebian 11サーバーがあります。ネットワークカードが故障してUSBネットワークカードを取り付けました。時々(5回目の起動ごとに)ネットワークカードが起動しないことがあります。ログインして
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
だから私はrunを使用し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