システム起動時にネットワークカードを1Gに設定するスクリプトを作成しました。このために新しいサービスを作成しましたが、うまくいきません。
起動を実行するとこのエラーが発生し、ネットワーク速度は変わりません。
$ systemctl start service activar_a_1G_enp3s0.service
Failed to start service.service: Unit service.service not found.
$
これは私の.serviceファイルです(聞いてから3つを使用しました)。
cat activar_a_1G_enp3s0.service
[Unit]
Description=Activa1GRed
#After=multi-user.target
#After=network.target
After=NetworkManager.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/activar_a_1G_enp3s0.sh
[Install]
WantedBy=default.target
shファイルは(手動で実行するとうまく動作します)
$ ls -la /usr/local/bin/activar_a_1G_enp3s0.sh
-rwxr-xr-x. 1 root root 433 nov 22 22:43 /usr/local/bin/activar_a_1G_enp3s0.sh
$ cat /usr/local/bin/activar_a_1G_enp3s0.sh
#!/bin/bash
# Cambiamos la velocidad de la tarjeta a 1Gb
/usr/sbin/ethtool -s enp3s0 autoneg on
編集する:
そしてsystemctl は activar_a_1G_enp3s0.service を起動します。サービスは手動で正しく機能しますが、コンピュータを再起動すると機能しなくなり、このエラーが発生します。
$ systemctl status activar_a_1G_enp3s0.service
● activar_a_1G_enp3s0.service - Activa1GRed
Loaded: loaded (/etc/systemd/system/activar_a_1G_enp3s0.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Mon 2020-11-23 02:34:11 CET; 3min 4s ago
Process: 1185 ExecStart=/usr/local/bin/activar_a_1G_enp3s0.sh (code=exited, status=0/SUCCESS)
Main PID: 1185 (code=exited, status=0/SUCCESS)
CPU: 11ms
nov 23 02:34:05 aqua systemd[1]: Starting Activa1GRed...
nov 23 02:34:06 aqua activar_a_1G_enp3s0.sh[1189]: netlink error: failed to retrieve link settings
nov 23 02:34:06 aqua activar_a_1G_enp3s0.sh[1189]: netlink error: No such device
nov 23 02:34:11 aqua systemd[1]: activar_a_1G_enp3s0.service: Succeeded.
nov 23 02:34:11 aqua systemd[1]: Finished Activa1GRed.
ネットワークが正常に戻るまでサービスの実行をどのように遅らせることができますか?
編集2:
あなたの指示に従い、開始が2分間ネットワーク待機を停止しました。その後、システムが起動しましたが、1G設定は機能しません。速度は100Mb/s起動後。
Settings for enp3s0:
...
Speed: 100Mb/s
Duplex: Half
...
Link detected: yes
enp3s0: 100 Mbit, half duplex, link ok
起動後にサービスの起動を手動で実行します。
$ systemctl start activar_a_1G_enp3s0.service
$ systemctl status activar_a_1G_enp3s0.service
● activar_a_1G_enp3s0.service - Activa1GRed
Loaded: loaded (/etc/systemd/system/activar_a_1G_enp3s0.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Mon 2020-11-23 23:06:53 CET; 3s ago
Process: 5891 ExecStart=/usr/local/bin/activar_a_1G_enp3s0.sh (code=exited, status=0/SUCCESS)
nov 23 23:06:48 aqua systemd[1]: Starting Activa1GRed...
nov 23 23:06:53 aqua systemd[1]: activar_a_1G_enp3s0.service: Succeeded.
nov 23 23:06:53 aqua systemd[1]: Finished Activa1GRed.
今、正しい速度を得ました。(1000Mb/秒)
Settings for enp3s0:
...
Speed: 1000Mb/s
Duplex: Full
...
Link detected: yes
enp3s0: negotiated 1000baseT-FD flow-control, link ok
Main PID: 5891 (code=exited, status=0/SUCCESS)
CPU: 11ms
これは enp3s0 の dmesg コマンドの出力です。
$ dmesg|grep enp3s0
[ 2.168785] r8169 0000:03:00.0 enp3s0: renamed from eth0
[ 4.401733] systemd[1]: Configuration file /etc/systemd/system/activar_a_1G_enp3s0.service is marked world-inaccessible. This has no effect as configuration data is accessible via APIs without restrictions. Proceeding anyway.
[ 9.127366] r8169 0000:03:00.0 enp3s0: Link is Down
[ 11.801640] r8169 0000:03:00.0 enp3s0: Link is Up - 1Gbps/Full - flow control off
[ 11.801647] IPv6: ADDRCONF(NETDEV_CHANGE): enp3s0: link becomes ready
[ 129.159287] r8169 0000:03:00.0 enp3s0: Link is Down
[ 131.368490] r8169 0000:03:00.0 enp3s0: Link is Up - 100Mbps/Half - flow control off
[ 414.549164] r8169 0000:03:00.0 enp3s0: Link is Down
[ 417.332359] r8169 0000:03:00.0 enp3s0: Link is Up - 1Gbps/Full - flow control off
ありがとう
ベストアンサー1
systemctl start service activar_a_1G_enp3s0.service
^^^^^^^
service
それがまさにあなたの問題です。解決してください。
編集1:変更された要件を助けてください。
以下を試してください。
systemctl enable systemd-networkd.service systemd-networkd-wait-online.service
ユニットファイルに以下を追加します。
After=systemd-networkd-wait-online.service
Wants=systemd-networkd-wait-online.service
もちろん、これが機能することを保証することはできません。 systemdのイベントシーケンスは少し気まぐれです。