Mac OS X Заметки
Заметки о проблемах, решениях и полезных утрилитах для Mac OS X
отключить IPv6
sudo networksetup -listallnetworkservices
sudo networksetup -setv6off Ethernet sudo networksetup -setv6off Wi-Fi
sudo networksetup -setv6automatic Wi-Fi sudo networksetup -setv6automatic Ethernet
Не давть уснуть ноуту
Так как всю начальную работу я выполняю удаленно подключившись через ssh то важно что б ноут не засыпал
caffeinate
Отключить скачку апдейтов
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -boolean FALSE
Сафари подтормаживает
Сложно пояснимые "замирания" в Сафари
defaults write com.apple.Safari WebKitInitialTimedLayoutDelay 0.1
Еще хинты (не проверено)
- https://yablyk.com/155554-kak-uskorit-mac-10-komand-terminala-uvelichivayushhix-skorost-os-x/
- https://ddr5.ru/kak-ya-sdelal-rabotu-s-el-capitan-priyatnee/
- https://ddr5.ru/kak-uskorit-animaciyu-i-nastroit-int/
Разрешить установку приложений "откуда угодно"
sudo spctl --master-disable
Отключить авто-коррекцию
См. настройки клавиатуры
Отключить закрытие терминала по command-w
Что б случайно не закрыть себе консоль вместо удаления слова по ctr-w "навесить" на закрытие другую комбинацию
Второй вариант - использовать настройку iTerm
(в некоторых случаях не работает предыдущий вариант, но я не сталкивался - предположительно когда установлен русский язык)
Night Shift
Автоподстройка тепловой температуры - настройки дисплея, выключена по умолчанию
Перенос данных
Прописать ключ на новом ноуте в ${HOME}/.ssh/authorized_keys и скопировать rsync (для того что б можно было докачать если что-то идет не так)
rsync \ -avz \ -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \ --progress \ ${HOME} \ username@<New Mac IP>:path_to_data
bash
Сменить шелл на bash
chsh -s /bin/bash
Если использовать новый bash из brew то нужно добавить в /etc/shells
cat /etc/shells /usr/local/bin/bash
An exception to the terminal window guidelines is Mac OS X’s Terminal.app, which runs a login shell by default for each new terminal window, calling .bash_profile instead of .bashrc. Other GUI terminal emulators may do the same, but most tend not to.
export LANG="ru_RU.UTF-8" export LC_COLLATE="ru_RU.UTF-8" export LC_CTYPE="ru_RU.UTF-8" export LC_MESSAGES="ru_RU.UTF-8" export LC_MONETARY="ru_RU.UTF-8" export LC_NUMERIC="ru_RU.UTF-8" export LC_TIME="ru_RU.UTF-8" export LC_ALL= # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) export HISTSIZE=1000000 export HISTFILESIZE=1000000 export HISTTIMEFORMAT="%d/%m/%y %T " PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]Mac15:\[\033[33;1m\]\w\[\033[m\]$ "
Мне больше нравится такой вариант:
export LANG="ru_RU.UTF-8" export LC_COLLATE=C export LC_CTYPE="ru_RU.UTF-8" export LC_MESSAGES=C export LC_MONETARY=C export LC_NUMERIC=C export LC_TIME=C export LC_ALL=
Полезный софт
iTerm2
Использую не самую последнюю версию так как с последней были сложно диагностируемые проблемы с производительностью.
https://iterm2.com/downloads/stable/iTerm2-3_1_7.zip
Настройка. iTerm
- настроить безконечное логирование profile -- terminal -- unlimited scrollback
- настроить логгирование в файл - profile-- session -- automatically log session input to files in:
Полезно:
1 - для того что бы all-delete работал "как в линуксе", т.е. удалял по словам, но при этом разделителем слов считаются не только пробелы, нужно изменить поведение левого alt:
2. для более удобной навигации по длинным командам добавить 2 сочетания клавиш:
- Keyboard Shortcut: ⌥←
- Action: Send Escape Sequence
- Esc+: b
- Keyboard Shortcut: ⌥→
- Action: Send Escape Sequence
- Esc+: f
3. Включить бесконечную историю.
4. Всегда использовать F1..F10 в iTerm2
Шрифты
2 неплохих шрифта - Source Code (Adobe) и Hack
(открыть в Finder из folder ttf и добавить в систему)
Brew
По возможности стараюсь ставить из brew то что там есть
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Это заметки об установке любимого софта после переезда
tap
brew tap brona/iproute2mac brew tap homebrew/boneyard brew tap homebrew/services
cask
brew \ cask \ install \ clipy \ docker \ firefox \ google-chrome \ minikube \ skype \ slack \ sublime-text \ teamviewer \ telegram \ tunnelblick \ viber \ virtualbox \ virtualbox-extension-pack
iTerm2 по желанию - у меня были проблемы с последней версией и я поставил более старую.
brew \ cask \ install \ iterm2
brew formulas
cat list.txt | xargs brew install
list.txt
yq coconutBattery transmission htop ant apr apr-util archey atk bash beecrypt berkeley-db boost cairo check cloog consul consul-template coreutils corkscrew curl dante dbus dos2unix dpkg fontconfig freetype gcc gd gdbm gdk-pixbuf gettext git git-review git-ssh gnu-sed gnu-tar gnuplot gnutls go harfbuzz icu4c intltool ipcalc iperf iproute2mac isl mc jpeg jq lynx maven minicom mpfr mpg123 mtr mysql neon nettle nginx nmap nspr nss numpy oniguruma openconnect ossp-uuid packer pango pcre pcre2 pixman pkg-config popt proxychains-ng pstree pwgen py2cairo pygobject3 python readline rpm rpm2cpio s-lang sdl shared-mime-info shellcheck smartmontools sqlite squid https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb telnet tcpflow tfenv tinyproxy trafshow tree unrar vault vim watch wget xz yajl yaz zlib
virtualbox coconutBattery transmission docker-machine
Еще полезный консольный и не только софт
brew install ijq
- интерактивный jq удобен если часто приходится смотреть в jsonbrew install difftastic
(утилита называется difft) - удобный diff для человека, с поддержкой разных языков (минус - не умеет делать patch файлы, те утилита только для просмотра результата глазом)
brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt grep watch mc htop iproute2mac ipcalc kubectl kubectx sshuttle mdless wget vnc-viewer speedtest-cli yt-dlp spotdl difftastic ijq yq gdb krew ipmitool nano container-diff
Other Soft
google cloud
pip2 install gsutil gcloud
iStat
Для жадных https://bjango.com/mac/istatmenus/
SN for V6, block internet connection. 982092332@qq.com GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH3S-8SGA
coconutBattary
Просмотр стстуса батареи - https://www.coconut-flavour.com/coconutbattery/
Словари лингво
- Скачать (можно со старого ноута или из торрентов)
- Ставить так: https://sshaman.ru/osx-dict-leo/
Коротко - то просто положить в домашний каталог в папку со словарями и перезапустить приложение словаря. Путь к папке со словарями завист от системы и можно посмотреть в самом приложении словаря.
Статическое имя
sudo scutil --set HostName mmazur-macbook-14 sudo scutil --set LocalHostName mmazur-macbook-14 sudo scutil --set ComputerName "Max' Mazur MacBook"
Изменение лимитов
https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Просмотр лимитов
launchctl limit maxfiles
Изменение лимитов
/Library/LaunchDaemons/limit.maxfiles.plist
<?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>limit.maxfiles</string> <key>ProgramArguments</key> <array> <string>launchctl</string> <string>limit</string> <string>maxfiles</string> <string>524288</string> <string>524288</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
/Library/LaunchDaemons/limit.maxproc.plist
<?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>limit.maxproc</string> <key>ProgramArguments</key> <array> <string>launchctl</string> <string>limit</string> <string>maxproc</string> <string>2048</string> <string>2048</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
sudo cp limit.maxfiles.plist /Library/LaunchDaemons sudo cp limit.maxproc.plist /Library/LaunchDaemons sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist sudo chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist sudo launchctl load -w /Library/LaunchDaemons/limit.maxproc.plist
Проброс внешних соединений на виртуальные машины
Задача: есть виртуальная машина, на ней сервис. Задача - дать доступ снаружи.
- 192.168.56.101 - адрес виртуальной машины
- 19091 7474 7687 - список портов которые должны быть видны внешним пользователям
Включить форвардинг
sysctl net.inet.ip.forwarding=1
Настройка Nat
/etc/pf.conf
scrub-anchor "com.apple/*" nat-anchor "com.apple/*" rdr-anchor "com.apple/*" rdr pass log on { en0 utun5 utun4 } proto tcp from any to any port 7474 -> 192.168.56.101 port 7474 rdr pass log on { en0 utun5 utun4 } proto tcp from any to any port 7687 -> 192.168.56.101 port 7687 rdr pass log on { en0 utun5 utun4 } proto tcp from any to any port 19091 -> 192.168.56.101 port 19091 nat on { vboxnet0 } proto tcp from any to 192.168.56.101 port 7474 -> vboxnet0 nat on { vboxnet0 } proto tcp from any to 192.168.56.101 port 7687 -> vboxnet0 nat on { vboxnet0 } proto tcp from any to 192.168.56.101 port 19091 -> vboxnet0 dummynet-anchor "com.apple/*" anchor "com.apple/*" load anchor "com.apple" from "/etc/pf.anchors/com.apple"
Правила nat не являются обязательными в общем случае.
В моем случай у виртуалки default смотрит в другой интерфейс потому мне надо что б она видела траффик от внешних клиентов как будто он пришел от хостовой системы.
Загрузить правила
pfctl -f /etc/pf.conf
Просмотреть загруженные
pfctl -sn
No ALTQ support in kernel ALTQ related functions disabled nat-anchor "com.apple/*" all nat on vboxnet0 inet proto tcp from any to 192.168.56.101 port = 7474 -> 192.168.56.1 nat on vboxnet0 inet proto tcp from any to 192.168.56.101 port = 7687 -> 192.168.56.1 nat on vboxnet0 inet proto tcp from any to 192.168.56.101 port = 19091 -> 192.168.56.1 rdr-anchor "com.apple/*" all rdr pass log on en0 inet proto tcp from any to any port = 7474 -> 192.168.56.101 port 7474 rdr pass log on utun5 inet proto tcp from any to any port = 7474 -> 192.168.56.101 port 7474 rdr pass log on utun4 inet proto tcp from any to any port = 7474 -> 192.168.56.101 port 7474 rdr pass log on en0 inet proto tcp from any to any port = 7687 -> 192.168.56.101 port 7687 rdr pass log on utun5 inet proto tcp from any to any port = 7687 -> 192.168.56.101 port 7687 rdr pass log on utun4 inet proto tcp from any to any port = 7687 -> 192.168.56.101 port 7687 rdr pass log on en0 inet proto tcp from any to any port = 19091 -> 192.168.56.101 port 19091 rdr pass log on utun5 inet proto tcp from any to any port = 19091 -> 192.168.56.101 port 19091 rdr pass log on utun4 inet proto tcp from any to any port = 19091 -> 192.168.56.101 port 19091
Мониторинг
Так как в правила дописано log то траффик можно увидеть на pflog0
Видны только первые пакеты каждой сесиии
ifconfig pflog0 create
tcpdump -n -i pflog0
ifconfig pflog0 destroy
- Манул по pf: https://www.opennet.ru/base/net/pf_faq.txt.html
Locate
Andrey Svartsov 17:59 чтобы заработал locate на макос (он изначально предустановлен уже и его не надо ставить отдельно) нужно запустить скрипт updatedb: sudo /usr/libexec/locate.updatedb внутри запускается команда от юзера nobody и НЕ наглядно иногда может просить ввести пароль для nobody (который уже давно мог поекспайриться) asvartsov-mbp13:~ root# bash -x /usr/libexec/locate.updatedb ++ id -u + '[' 0 = 0 ']' + rc=0 ++ sudo -u nobody mktemp -t updatedb + export FCODES=/var/folders/zz/zyxvpxvq6csfxvn_ngzzzzzvzzzzzy/T/updatedb.yvvhHTOa + FCODES=/var/folders/zz/zyxvpxvq6csfxvn_ngzzzzzvzzzzzy/T/updatedb.yvvhHTOa + chown nobody /var/folders/zz/zyxvpxvq6csfxvn_ngzzzzzvzzzzzy/T/updatedb.yvvhHTOa ++ su -fm nobody -c /usr/libexec/locate.updatedb su: Sorry + tmpdb='Old Password: New Password: Retype New Password:' + rc=1 + '[' 1 = 0 ']' + rm /var/folders/zz/zyxvpxvq6csfxvn_ngzzzzzvzzzzzy/T/updatedb.yvvhHTOa + exit 1 asvartsov-mbp13:~ root# выход - изменить пароль для nobody вот так asvartsov@asvartsov-mbp13:~/$ pwpolicy -u nobody -setpassword Setting password for nobody Enter new password for nobody: Verify new password: Password for authenticator asvartsov: asvartsov@asvartsov-mbp13:~/$ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ https://www.unix.com/man-page/osx/8/pwpolicy/
Какой еще софт надо попробовать
TotalFinder
Проверить тут
https://habr.com/ru/post/573630/comments/
Еща проблемы и решения
Eще полезные утилиты
container-diff
container-diff diff daemon://test123:latest daemon://javafox:latest --type apt --type node --type pip --type aptlayer
ijq
ijq
- интерктивный jq
difft
tftp
Есть готовый из-коробки
Для начала проверим что в tftp.plist определен корневой каталог tftp-сервера (по умолчанию это /private/tftpboot):
nano /System/Library/LaunchDaemons/tftp.plist
<key>ProgramArguments</key> <array> <string>/usr/libexec/tftpd</string> <string>-i</string> <string>/private/tftpboot</string> </array>
Подгружаем tftp.plist
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
Запускаем tftp-сервер:
sudo launchctl start com.apple.tftpd
Остановка tftp-сервера:
sudo launchctl stop com.apple.tftpd