Example Bash

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
example:example_bash [25.11.2018 07:50]
admin Approved(admin 2018/11/25 07:50)
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 ​ # Поиск файлов ###​find ​
-find /var/www/ -name "​*.conf"​+find /var/www/ -name "​*.conf" ​-maxdepth 10
  
 # Поиск без учёта регистра:​ ###find ###case # Поиск без учёта регистра:​ ###find ###case
Строка 85: Строка 82:
 set -eu set -eu
 # __SILENT=1 чтобы не выводить START и SUCCESS # __SILENT=1 чтобы не выводить START и SUCCESS
-. /​opt/​crab/​crab_utils/​bin/​::carbon.sys+. /​opt/​crab/​crab_utils/​bin/​crab_sys.sh
 sys::usage "​$@"​ sys::usage "​$@"​
 ### --help Info: Автоматически создавать и коммитить все файлы в каталоге ### --help Info: Автоматически создавать и коммитить все файлы в каталоге
Строка 91: Строка 88:
 ### --help Example: auto_git.sh /​var/​www/​html ### --help Example: auto_git.sh /​var/​www/​html
 sys::​arg_parse "​$@"​ sys::​arg_parse "​$@"​
-### sys::​arg_parse ​"txt1" "txt2" "--named1=a1" "--named2=a2" "--forced"​ +### sys::​arg_parse txt1 txt2 --name=a1 --dst=a2 --forced ​-t1 -y txt3 
-echo "​${ARGV[1]}==txt1 ${ARGV[2]}==txt2 ${ARG_NAMED1}==a1 ${ARGV_NAMED2}==a2 ${ARG_FORCED}==TRUE"​+echo "​$ARG_1==txt1 $ARG_2==txt2 $ARG_NAME==a1 $ARGV_DST==a2 $ARG_FORCED==TRUE $ARG_T==1 $ARG_Y=TRUE $ARG_3==txt3
 +echo "​${ARGV[1]}=txt1 ${ARGV[2]}==txt3 ${ARGV[3]}==txt3 ARGC=3"​ 
 +for var in ${!ARG_@}; do echo $var ${!var}; done  
 exit 0 exit 0
  
Строка 109: Строка 109:
 exit 0 exit 0
  
-# создание скрипта без ​::carbon.sys для strongbash в котором много exit 0 ###bash ###init+# создание скрипта без ​crab_sys.sh для strongbash в котором много exit 0 ###bash ###init
 #!/bin/bash #!/bin/bash
 set -eu set -eu
Строка 134: Строка 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
Строка 173: Строка 160:
  
 # перебрать все переменные начинающиеся с NET_IF ###bash ###string ###eval ###iterate ###foreach # перебрать все переменные начинающиеся с NET_IF ###bash ###string ###eval ###iterate ###foreach
-for i in ${!NET_IF@};​ 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 ​
Строка 224: Строка 216:
 # Заменить во всех файлах слова ###sed # Заменить во всех файлах слова ###sed
 sed -i '​s/​что_менять/​на_что_менять/'​ /​path/​to/​files/​* sed -i '​s/​что_менять/​на_что_менять/'​ /​path/​to/​files/​*
 +
 +# Удалить строки,​ содержащие слова ###sed
 +sed -i '/​что_искать/​d'​ /​path/​to/​files/​*
  
 # напечатать,​ то что находится в скобке ###sed # напечатать,​ то что находится в скобке ###sed
Строка 263: Строка 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~~