Я хотел бы изменить настройки 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
корректно устанавливает соответствующие параметры ядра. Так что я знаю, что эти команды правильные.
Я создал следующий LaunchDaemon, /Library/LaunchDaemons/
чтобы попытаться запустить этот скрипт при запуске;
<?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
...ничего не делает. Значения по умолчанию все еще установлены неправильно. Куда я иду не так?
Спасибо
high-sierra
launchd
startup
daemons
Джек Уэстмор
источник
источник
sysctl
.man sysctl.conf
)/Users/admin/scripts/sysctl.sh
весь путь?sysctl
команде.2>&1 >> /Users/admin/myscript.log
Таким образом, ваша команда должна выглядеть следующим/usr/bin/sysctl net.smb.fs.kern_deadtimer=0 2>&1 >> /Users/admin/myscript.log
образом: вы можете увидеть, какие сообщения и сообщения об ошибках генерируются, если таковые имеются.Ответы:
Вероятно, лучше отказаться от сценария и использовать файл настроек, разработанный для этой цели: sysctl.conf
Это относится к macOS 10.12 Sierra.
как отметил @klanomath в комментариях: "* .deadtimer - это все" sysctl: unknown oid * .deadtimer "в моей среде High Sierra. То есть они не существуют!"
Похоже, что эта часть интерфейса sysctl полностью исчезла.
добавьте следующие переменные:
Если после этого вы загрузитесь в подробном режиме ( cmd+ vпри запуске или
sudo nvram boot-args="-v"
перед перезагрузкой), вы должны увидеть применение пользовательских настроек.После этого вы должны увидеть такие сообщения при загрузке:
В противном случае проверьте с
Этот подход должен работать для большинства настроек, доступных через sysctl, и поэтому должен быть настолько обобщенным, насколько предполагает заголовок вопроса.
источник
sysctl -a | grep smb
возвращает тот же результат. Так что я не уверен, что правильно утверждать, что «интерфейс sysctl полностью исчез». В моем тестировании я заметил, что все ссылки на smb * исчезли ПОСЛЕ того, как я начал вносить изменения в /etc/sysctl.conf и перезагрузился. Однако те же настройки появятся снова, как только я открою соединение smb .../etc/private/sysctl.conf
вовсе не работают, потому что служба СМБ не запускается , пока не инициировать соединение с кем - л (я полагаю ...).Я нашел другой способ сделать это в конце концов.
Хитрость заключалась в том, чтобы установить более длительное значение времени ожидания по умолчанию
/etc/nsmb.conf
следующим образом:Спасибо всем за вашу помощь :-)
источник