Операционные системы/*nix
Материал из База знаний QPAM
Версия от 23:56, 27 октября 2015; 213.24.135.85 (обсуждение) (некоторые советы с минимальным оформлением)
- очень простой способ передать файлы с машины на машину —
tar cz. | nc -l -p 2214(на передающей стороне) иnc адрес 2214 | tar xz(на принимающей). 2214 — номер порта, выбирается по желанию. в разных версиях nc нужно писатьnc -l -pилиnc -l - в локальной сети из дефолтно-настроенных убунт, можно обращаться к машинам по имени, а не по айпи: username-desktop.local отрезольвится в ip машины, которую назвали username-desktop. это магия mdns, спасибо apple
- avahi-browse -a быстро покажет список имен машин с в локальной сети, а ключ -r покажет сразу и их ip. как и в предыдущем хинте, требуется avahi, он есть в дефолтной убунте. сама команда — в пакете avahi-utils
- пользуйтесь ctrl-R в консоли, чтобы не жать «вверх» по сто раз
- history не резиновый. если что-то было забито в историю интерпретатора, рано или поздно оттуда может исчезнуть, не полагайтесь на него, как на справочник
- используйте set -e в скриптах. неотработавший «cd» во временный каталог может надолго испортить настроение содержимое /home
- проверяйте код возврата
- чтобы вернуться в предыдущий каталог, есть команда cd -. в zsh еще есть команда d еще есть команда dirs -v, показывающая историю переходов. еще в zsh можно делать вот так: cd -2
- пишите в скриптах длинные --варианты параметров
- не пишите в скриптах
rm -rf $VAR/ - используйте visudo для редактирования sudoers
- потеряли пароль рута? при загрузке укажите ядру параметр init=/bin/bash и сбростье пароль через passwd
- у грепа есть полезный параметр --color
- команда, чтобы перечитать отредактированный файл с переменными окружения: source /etc/environment .
- пользуйтесь bash -x для отладки скриптов
- пользуйтесь strace для отладки всего остального. от лишнего выхлопа спасет параметр -e имявызова
- не путайте
/bin/shи/bin/bash, это не всегда одно и то же. особенно в дебиане, особенно в убунте - настройте алиасы
- если на команду повешен алиас, то запустить ее «настоящую» можно, добавив в начале бэкслеш например: \ls
- если терминал переклинило после некорректного выхода из псевдографической программы иили вырвашегося на просторы stdout мусора, есть волшебная команда reset
- exec >file в скрипте перенаправит его вывод в файл и не перезапустит скрипт
- уже написали вагон скриптов? забекапьте
- не храните все в / или /home
- lvm уже придумали
- используйте в скриптах mktemp для создания временных файлов и каталогов
- пишите переменные вот так: ${VAR}
-
VAR=Xиexport VAR=X— разные вещи - dd может показывать, сколько он уже скопировал, если пнуть его черз kill -USR1
- kill может принимать аргументом номер задачи, а не только идентификатор процесса: kill %1
- jobs, bg, fg, disown — тоже так умеют
- если «вышли» из программы через ctrl-Z, вернуться можно командой fg
- rsync нужен не только для сетевых операций
-
rm somethingиrm something/— это разные вещи. и не только в rm, cp, ls и rsync — тоже - watch и repeat уже написаны, не надо велосипедить их через while true
- at тоже уже написан, а sleep понимает время не только в секундах
-
sudo echo > fileоткрывает файл на запись не с правами рута. это делается так:sudo sh -c 'echo > file' - если скрипт запускается в линуксе, это не значит, что он так же хорошо отработает в bsd или макоси
- пишите --параметры перед аргументами, иначе ls file -l в bsd вас удивит
- грепаете вывод ifconfig? ifconfig тоже бывает разный
- нормально работающие версии утилит в bsd и макоси имеют приставку g: gsed, gmake
- Работать с HTTPS как в netcat можно с помощью OpenSSL:
openssl s_client -connect <someserver>:443