Example Bash
Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
example:example_bash [02.12.2018 13:23] admin Approved(admin 2018/12/02 13:23) |
example:example_bash [30.08.2019 11:12] (текущий) admin Approved(admin 2019/08/30 11:12) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ==== grub ==== | + | ==== help ==== |
| <code bash> | <code bash> | ||
| - | # grub запустить ядро 1 раз ###savedefault ##default=0 ##once | + | # как узнать версию linux ###version ###linux ###redhat-release ###lsb_release ###uname ### |
| - | grub> savedefault --default=0 --once | + | cat /etc/issue |
| - | grub> quit | + | cat /etc/*-release |
| </code> | </code> | ||
| - | + | ==== syntax ==== | |
| - | ==== perf ==== | + | |
| <code bash> | <code bash> | ||
| - | # профилирование ###perf ###oprofile ###nmi | + | # bash case ###bash ###case ###select |
| - | yum --enablerepo='base-debuginfo' install kernel-debuginfo-`uname -r` kernel-devel perf oprofile gdb kexec-tools crash | + | case "$VM_TMPLT_OS" in |
| - | perf top -d 5 -U | + | centos-6*|centos6*) |
| - | perf top -d 5 -g -U | + | compat_centos6 |
| - | perf stat -e task-clock,cycles,instructions,cache-references,cache-misses sleep 5 | + | ;; |
| - | perf record -a sleep 5 и потом perf report | + | *) |
| + | echo "TODO not support $VM_TMPLT_OS - skip" | ||
| + | ;; | ||
| + | esac | ||
| - | # профилирование ###perf ###oprofile ###nmi | ||
| - | echo 0 > /proc/sys/kernel/nmi_watchdog | ||
| - | opcontrol --deinit | ||
| - | opcontrol --init | ||
| - | opcontrol --reset | ||
| - | opcontrol --start --vmlinux=/usr/lib/debug/lib/modules/2.6.32-642.el6.x86_64/vmlinux | ||
| - | # но иногда можно и --no-vmlinux если нам не важно про ядро, а только про юспейс | ||
| - | # если баг Failed to open profile device: Device or resource busy, то стопаем все виртуалки KVM, одна из них залочила nmi | ||
| - | sleep 10 # ждем сбора статистики | ||
| - | opcontrol --stop | ||
| - | # включаем watchdog обратно | ||
| - | echo 1 > /proc/sys/kernel/nmi_watchdog | ||
| </code> | </code> | ||
| + | |||
| + | |||
| ==== find ==== | ==== find ==== | ||
| <code bash> | <code bash> | ||
| + | # Найти все файлы исключая скрытые файлы и скрытые каталоги ###find ###exclude ###hidden | ||
| + | find $SRC -type f -not -path '*/\.*' | ||
| + | find . -name 'objects' -not -path '*.trash*' | ||
| + | |||
| # Найти и обработать файлы с пробелами ###find ###xargs | # Найти и обработать файлы с пробелами ###find ###xargs | ||
| find . -print0 | xargs -0 -n10 echo | find . -print0 | xargs -0 -n10 echo | ||
| # заменить во всех файлах по маске шаблону текст ###find ###sed | # заменить во всех файлах по маске шаблону текст ###find ###sed | ||
| - | find . -type f -name '*.css' -exec sed -i 's/http:/https:/g' {} \; | + | find . -type f -name '*.css' ! -path '*/.git/*' -exec sed -i 's/http:/https:/g' {} \; |
| или find . -type f | xargs -n 1 sed -i 's/fox-vz/fox_vz/' | или find . -type f | xargs -n 1 sed -i 's/fox-vz/fox_vz/' | ||
| # Поиск файлов ###find | # Поиск файлов ###find | ||
| - | find /var/www/ -name "*.conf" | + | find /var/www/ -name "*.conf" -maxdepth 10 |
| # Поиск без учёта регистра: ###find ###case | # Поиск без учёта регистра: ###find ###case | ||
| Строка 138: | Строка 134: | ||
| exit 0 | exit 0 | ||
| </code> | </code> | ||
| - | ==== Статистика и диагностика ==== | ||
| - | <code bash> | ||
| - | # Кто использует swap ###swap | ||
| - | smem -kts swap | ||
| - | # Насколько используется диск ###disk ###io ###iostat | ||
| - | iostat -kt 1 | ||
| - | # Кто использует диск ###iotop ###disk ###io | ||
| - | iotop -kPd 5 | ||
| - | #Разовый top по всем процессам ###top | ||
| - | top -n 1 -b | ||
| - | # Кто использует swap ###swap | ||
| - | smem -kts swap | ||
| - | # Просмотр swap активности за дату 21 число в 16 часов ###sar ###stat ###loadavg | ||
| - | LANG=C sar -q -f /var/log/sa/sa21 | grep 16: | ||
| - | # Просмотр swap активности за дату 21 число в 16 часов ###sar ###stat ###loadavg | ||
| - | LANG=C sar -q -f /var/log/sa/sa21 | grep 16: | ||
| - | </code> | ||
| ==== Прочее ==== | ==== Прочее ==== | ||
| <code bash> | <code bash> | ||
| + | # запрет на подстановку * {} asterisk Disable pathname expansion. ###bash ###asterisk ###expansion | ||
| + | set -f | ||
| + | echo * | ||
| + | |||
| # перевод из unixtime в стандартную дату ###bash ###unixtime ###date | # перевод из unixtime в стандартную дату ###bash ###unixtime ###date | ||
| date -d @1458515485 | date -d @1458515485 | ||
| Строка 178: | Строка 161: | ||
| # перебрать все переменные начинающиеся с NET_IF ###bash ###string ###eval ###iterate ###foreach | # перебрать все переменные начинающиеся с NET_IF ###bash ###string ###eval ###iterate ###foreach | ||
| for i in ${!NET_IF@}; do echo $i; done | for i in ${!NET_IF@}; do echo $i; done | ||
| + | |||
| + | # безопасный eval ###bash ###string ###eval | ||
| + | eval declare '"$VAR_NAME"="$VAR_VAL"' | ||
| + | но declare не работает для глобальных переменных в функциях там можно делать хак | ||
| + | eval export -n '"$VAR_NAME"="$VAR_VAL"' | ||
| # взять слева с нулевого символа 3 символа ###substring ###bash ###string | # взять слева с нулевого символа 3 символа ###substring ###bash ###string | ||
| Строка 228: | Строка 216: | ||
| # Заменить во всех файлах слова ###sed | # Заменить во всех файлах слова ###sed | ||
| sed -i 's/что_менять/на_что_менять/' /path/to/files/* | sed -i 's/что_менять/на_что_менять/' /path/to/files/* | ||
| + | |||
| + | # Удалить строки, содержащие слова ###sed | ||
| + | sed -i '/что_искать/d' /path/to/files/* | ||
| # напечатать, то что находится в скобке ###sed | # напечатать, то что находится в скобке ###sed | ||
| Строка 267: | Строка 258: | ||
| </code> | </code> | ||
| - | ==== ssh back-connect ==== | ||
| - | <code bash> | + | |
| - | # В данной заметке пойдёт речь про более хитрое использование SSH для оказания удалённой помощи серверу, находящемуся за NAT. | + | |
| - | # Заходим на машину клиента: | + | |
| - | ssh root@10.90.10.150 | + | |
| - | # На машине клиента выполняем команду | + | |
| - | ssh -R 1522:localhost:22 root@gate.carbonsoft.ru -p 22 | + | |
| - | # Вводим пароль и установливаем соединение. | + | |
| - | # Далее на gate.carbonsoft.ru выполняем вход к клиенту. | + | |
| - | ssh root@localhost -p 1522 | + | |
| - | </code> | + | |
| ~~OWNERAPPROVE~~ | ~~OWNERAPPROVE~~ | ||