시작시 기본 smb 설정을 변경하여 시간 초과를 제거하고 싶습니다. 다음 스크립트가 있습니다.
#!/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
이 스크립트를 실행 sudo
하면 관련 커널 옵션이 올바르게 설정됩니다. 그래서 나는이 명령이 올바른 명령이라는 것을 알고 있습니다.
시작시이 /Library/LaunchDaemons/
스크립트를 실행하기 위해 다음 LaunchDaemon을 만들었습니다 .
<?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>
plist를 plutil
확인하고 확인을 확인합니다. 쉘 스크립트에 대한 권한을 0755
설정하고 plist 파일의 소유권을로 설정했습니다 root:wheel
.
달리는
sudo launchctl load /Library/LaunchDaemons/com.jo.sysctl.plist
… 아무것도하지 않습니다. 기본값은 여전히 잘못 설정되어 있습니다. 내가 어디로 잘못 가고 있니?
감사
답변
스크립트 접근 방식을 버리고이 목적으로 설계된 설정 파일을 사용하는 것이 가장 좋습니다. sysctl.conf
이는 최대 macOS 10.12 Sierra에 적용됩니다.
@ klanomath가 주석에서 지적한 것처럼 : * * .deadtimer는 High Sierra 환경에서 모두 “sysctl : unknown oid * .deadtimer”입니다. IE는 존재하지 않습니다! ”
이제 sysctl 인터페이스의 일부가 완전히 사라진 것 같습니다.
sudo nano /private/etc/sysctl.conf
다음 변수를 추가하십시오.
net.smb.fs.kern_deadtimer=0
net.smb.fs.kern_hard_deadtimer=0
net.smb.fs.kern_soft_deadtimer=0
이후에 상세 모드 (부트 시 또는 재부팅 전에 cmd+ )로 부팅하면 사용자 정의 설정이 적용되는 것을 볼 수 있습니다.vsudo nvram boot-args="-v"
그러면 다음과 같은 부팅 메시지가 나타납니다.
net.smb.fs.kern_deadtimer: 60 -> 0
net.smb.fs.kern_hard_deadtimer: 600 -> 0
net.smb.fs.kern_soft_deadtimer: 30 -> 0
그렇지 않으면 확인
sysctl -a | grep smb
이 방법은 sysctl을 통해 액세스 할 수있는 대부분의 설정에서 작동하므로 질문 제목에서 알 수 있듯이 일반화됩니다.
답변
결국이 작업을 수행하는 다른 방법을 찾았습니다.
트릭은 다음과 같이 더 긴 기본 시간 초과 값을 설정하는 /etc/nsmb.conf
것입니다.
[default]
max_resp_timeout=1000 # default is 30 which way too low!
모든 도움에 감사드립니다 🙂