bash

multithreaded parallel rsync

find -type d | xargs -I '{}' -P 10 -n1 rsync -a --no-r remote:path/'{}'/ '{}'/

rsync args:
--no-r No recursive

xargs args:
-P 10 Run up to 10 processes at a time.
-n 1 Use 1 argument per command line.

Шпаргалка по bash

[ -a FILE ] Правда елси FILE существует.
[ -b FILE ] Правда елси FILE существует и это специальный блоковый файл.
[ -c FILE ] Правда елси FILE существует и это специальный знаковый файл.
[ -d FILE ] Правда елси FILE существует и это директория.
[ -e FILE ] Правда елси FILE существует.
[ -f FILE ] Правда елси FILE существует и это регулярный файл.
[ -g FILE ] Правда елси FILE существует и установлен SGID бит.
[ -h FILE ] Правда елси FILE существует и это символический ссылка.
[ -k FILE ] Правда елси FILE существует и второй промежуточный бит округления установлен.

операторы сравнения в bash

операторы сравнения в bash
-lt (<)
-gt (>)
-le (<=)
-ge (>=)
-eq (==)
-ne (!=)

прочитать построчно файл и вывести в STDOUT

прочитать построчно файл и вывести в STDOUT

#!/bin/bash
while read LINE
do
  echo $LINE
done < $FILE

Сброс memcache из шелла

echo "flush_all" | /bin/netcat -q 2 127.0.0.1 11211

Скрипт вычисляющий коэфициент в зависимости от загрузки каналов

#!/bin/bash
 
# Этим скриптом узнаем скорость на интерфейсах аплинков
 
# Имя временного файла при перегрузке канала
FILE_TMP=/tmp/reconocer_velocidad.tmp
# Имя файла для отправки по ftp
FILE=/srv/ftp_backup/coeficiente_de_velocidad
# Имя файла для отправки по ftp
FTP_HOST=lt2.lan
# Массив с интерфейсами аплинков
interfazes=(vlan950 vlan429)
# Массив с предельными скоростями аплинков
velocidades_maximas=(850 600)
# Градация процентов загруженности канала
porcentajes=(0 40 50 65 73 80 105)
# Градация коэфициентов скорости относительно процентов загруженности каналв

poweroff if idle

while : ; do if [[ `vmstat 60 2 | tail -n 1 | awk '{print $15}'` > 90 ]]; then poweroff; fi ; done

удалить файлы, старше 30 дней

find /var/www/file_exchange/uploads/ -type f -mtime +30 -delete

Найти файлы редактированный за последние сутки

find /var/www/abc_dev/ -type f -mtime -1 -print

скрипт определяющий какие AS-ки входят в as-set

#!/bin/bash
 
tmpfile=/tmp/as-set.tmp
asfile=/tmp/as-set
asset=$1
 
if [ "$asset" != "" ];then
 
  if [ -e $asfile ];then
    rm $asfile
  fi
  touch $asfile
  touch $tmpfile
 
  ar()
  {
    arr=(` whois $asset | grep members | awk '{print $2}'`)
    if [ "$arr" != "" ];then
      for i in "${arr[@]}"
        do
          if [ "`echo $i | grep AS-`" = "" ];then
            echo "$i" >> $tmpfile
          else
            asset=$i
            ar
          fi
        done
    else
      echo "AS-SET not exist"
    fi
  }
  ar
 
  while read LINE
  do