Mac OS X Заметки: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 393: Строка 393:
 
<PRE>
 
<PRE>
 
pfctl -sn
 
pfctl -sn
  +
</PRE>
  +
<PRE>
 
No ALTQ support in kernel
 
No ALTQ support in kernel
 
ALTQ related functions disabled
 
ALTQ related functions disabled

Версия 19:49, 24 апреля 2020

Заметки о проблемах, решениях и полезных утрилитах для Mac OS X

Не давть уснуть ноуту

Так как всю начальную работу я выполняю удаленно подключившись через ssh то важно что б ноут не засыпал

caffeinate

Сафари подтормаживает

Сложно пояснимые "замирания" в Сафари

defaults write com.apple.Safari WebKitInitialTimedLayoutDelay 0.1

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

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

sudo spctl --master-disable

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


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

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

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

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

Полезно: 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. Включить бесконечную историю.

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 \
    java \
    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


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

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

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

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

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

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

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>
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