Mac OS X Заметки

Материал из noname.com.ua
Версия от 19:47, 19 июня 2024; Sirmax (обсуждение | вклад) (→‎tftp)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигацииПерейти к поиску

Заметки о проблемах, решениях и полезных утрилитах для 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

Еще хинты (не проверено)

Разрешить установку приложений "откуда угодно"

sudo spctl --master-disable

Gatekeeper-allow-apps-anywhere-macos-2.jpg


Отключить авто-коррекцию

См. настройки клавиатуры

Отключить закрытие терминала по command-w

Что б случайно не закрыть себе консоль вместо удаления слова по ctr-w "навесить" на закрытие другую комбинацию
Screenshot 2020-07-04 at 18.01.57.png



Второй вариант - использовать настройку iTerm (в некоторых случаях не работает предыдущий вариант, но я не сталкивался - предположительно когда установлен русский язык)

Screenshot 2023-01-17 at 10.43.00.png

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:
ITerm Setup.png
2. для более удобной навигации по длинным командам добавить 2 сочетания клавиш:

  • Keyboard Shortcut: ⌥←
  • Action: Send Escape Sequence
  • Esc+: b


  • Keyboard Shortcut: ⌥→
  • Action: Send Escape Sequence
  • Esc+: f


3. Включить бесконечную историю.

4. Всегда использовать F1..F10 в iTerm2

Always-use-fn-keys-in-iterm.png

Шрифты

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 удобен если часто приходится смотреть в json
  • brew 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/

Словари лингво

Коротко - то просто положить в домашний каталог в папку со словарями и перезапустить приложение словаря. Путь к папке со словарями завист от системы и можно посмотреть в самом приложении словаря.

Статическое имя

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


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