bash

Сброс 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)
# Градация коэфициентов скорости относительно процентов загруженности каналв

.bash_profile vs .bashrc

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

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.

скрипт определяющий какие 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

Скрипт переименовывает файлы с любым расширением добавляет в их имя нужное число

#!/bin/bash 
 
src_dir=/home/images
dst_dir=/home/new_images
count=100
step=1
ras=jpg
 
if [ ! -d $dst_dir ]; then
  mkdir -p $dst_dir
fi
for i in $src_dir/*.$ras
do
  name=`echo $i | sed 's/^.*\///;s/\..*$//'`
  cp $i $dst_dir/$name$[$count+$step].$ras
  count=$[$count+$step]
done

Что делает именно этот скрипт:
берет все файлы с расширением $ras(jpg) из каталога $src_dir и копирует их в каталог $dst_dir, добавляя к имени каждого файла число, начиная с $count(100) и увеличивая это число у каждого последующего файла на число указаное в переменной $step(1)

Перебрать список файлов в каталоге

переберет в текущем каталоге

#!/bin/bash 
for i in *
do
  echo $i
done

так же вместо * можно указать *.jpg и прочее

Шпаргалка по 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 существует и второй промежуточный бит округления установлен.