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