2016-05-31 7 views
0

ich dieses einfache kleine Skript gemacht haben, um zu versuchen und alle Dienste in einem Verzeichnis neu starten:Der Versuch, ein Bash-Skript zu machen, der alle Dienste in einem bestimmten Verzeichnis startet

 
    #!/bin/bash 
    systemctl daemon-reload 
    for service in /etc/systemd/system/multi-user.target.wants/* 
    do 
     systemctl restart $service 
    done; 

Wenn ich versuche, das ich das bekommen laufen folgende Fehlermeldung:

 
    Failed to restart etc-systemd-system-multi\x2duser.target.wants-openvswitch.service.mount: Unit etc-systemd-system-multi\x2duser.target.wants-openvswitch.service.mount failed to load: No such file or directory 

Antwort

1

Sie müssen die basename aus der $service Variable

systemctl restart "$(basename "$service")" 
extrahieren

Oder Sie können ${service##*/} verwenden, die bis und dem letzten Schrägstrich einschließlich entfernen up wird:

systemctl restart "${service##*/}" 
+0

Danke für die schnelle Antwort! –

1

können Sie alternativ Arbeitsverzeichnis ändern Basisnamen oder Parameter Erweiterungen zu vermeiden:

#!/bin/bash 
systemctl daemon-reload 
cd /etc/systemd/system/multi-user.target.wants 

for service in *; do 
    systemctl restart "$service" 
done 
Verwandte Themen