Ich möchte die Standard-SMB-Einstellungen beim Start ändern, um Zeitüberschreitungen zu entfernen. Ich habe das folgende Skript;
#!/bin/sh
sysctl net.smb.fs.kern_deadtimer=0
sysctl net.smb.fs.kern_hard_deadtimer=0
sysctl net.smb.fs.kern_soft_deadtimer=0
Das Ausführen dieses Skripts mit sudo
setzt die relevanten Kernel-Optionen korrekt. Ich weiß also, dass diese Befehle die richtigen sind.
Ich habe den folgenden LaunchDaemon erstellt, um /Library/LaunchDaemons/
zu versuchen, dieses Skript beim Start auszuführen.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jo.sysctl</string>
<key>Disabled</key>
<false/>
<key>UserName</key>
<string>admin</string>
<key>GroupName</key>
<string>staff</string>
<key>ProgramArguments</key>
<array>
<string>/Users/admin/scripts/sysctl.sh</string>
</array>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Ich habe die Plist mit überprüft plutil
und sie ist in Ordnung. Ich habe die Berechtigungen für das Shell-Skript auf 0755
und den Besitz der Plist-Datei auf festgelegt root:wheel
.
Betrieb
sudo launchctl load /Library/LaunchDaemons/com.jo.sysctl.plist
...tut nichts. Die Standardwerte sind immer noch falsch eingestellt. Wo gehe ich falsch?
Danke
Es ist wahrscheinlich am besten, den Skriptansatz aufzugeben und die für diesen Zweck vorgesehene Einstellungsdatei zu verwenden: sysctl.conf
Dies gilt bis macOS 10.12 Sierra.
wie @klanomath in Kommentaren betonte: " *.deadtimer sind alle "sysctl: unknown oid *.deadtimer" in meiner High Sierra-Umgebung. IE sie existieren nicht!"
Es sieht also so aus, als ob dieser Teil der sysctl-Schnittstelle jetzt vollständig verschwunden ist.
sudo nano /private/etc/sysctl.conf
fügen Sie die folgenden Variablen hinzu:
net.smb.fs.kern_deadtimer=0
net.smb.fs.kern_hard_deadtimer=0
net.smb.fs.kern_soft_deadtimer=0
Wenn Sie danach im ausführlichen Modus booten ( cmd+ vbeim Start oder sudo nvram boot-args="-v"
vor einem Neustart), sollten Sie sehen, dass die benutzerdefinierten Einstellungen angewendet werden.
Sie sollten dann beim Booten Meldungen wie diese sehen:
net.smb.fs.kern_deadtimer: 60 -> 0
net.smb.fs.kern_hard_deadtimer: 600 -> 0
net.smb.fs.kern_soft_deadtimer: 30 -> 0
Ansonsten erkundigen Sie sich bei
sysctl -a | grep smb
Dieser Ansatz sollte für die meisten Einstellungen funktionieren, auf die über sysctl zugegriffen werden kann, und daher so allgemein sein, wie der Titel der Frage impliziert.
sysctl -a | grep smb
gibt die gleiche Ausgabe zurück. Ich bin mir also nicht sicher, ob es richtig ist zu behaupten, dass "die sysctl-Schnittstelle jetzt vollständig weg ist". Bei meinen Tests bemerkte ich, dass alle Verweise auf smb* verschwanden, nachdem ich begonnen hatte, Änderungen an /etc/sysctl.conf vorzunehmen und neu zu starten. Die gleichen Einstellungen würden jedoch wieder angezeigt, sobald ich eine SMB-Verbindung geöffnet habe .../etc/private/sysctl.conf
nicht funktioniert, darin besteht, dass der smb-Dienst nicht gestartet wird, bis Sie eine smb-Verbindung initiieren (glaube ich ...)
.Ich habe am Ende einen anderen Weg gefunden, dies zu tun.
Der Trick bestand darin, einen längeren Standard-Timeout-Wert wie folgt festzulegen /etc/nsmb.conf
:
[default]
max_resp_timeout=1000 # default is 30 which way too low!
Danke an alle für eure Hilfe :-)
Allan
sysctl
.klanomath
man sysctl.conf
)Jack Westmore
/Users/admin/scripts/sysctl.sh
ist der ganze Pfad?Jack Westmore
Allan
sysctl
-/usr/bin/sysctl
Jack Westmore
Allan
sysctl
Befehl an -2>&1 >> /Users/admin/myscript.log
Ihr Befehl sollte also lauten/usr/bin/sysctl net.smb.fs.kern_deadtimer=0 2>&1 >> /Users/admin/myscript.log
. Auf diese Weise können Sie sehen, welche Meldung und Fehlermeldung ggf. generiert werden.klanomath