시스템 시작 시 네트워크 카드를 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의 이벤트 순서는 약간 변덕스러울 수 있습니다.