시작시 sysctl 변경 있습니다. 시작시이 /Library/LaunchDaemons/스크립트를 실행하기 위해

시작시 기본 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!

모든 도움에 감사드립니다 🙂