А АTuesday 8 October 2019

Пилотаж в командной строке Linux.

Всем привет.

Конечно, конечно, мы любим Linux, мы без него жить не можем. Как на нем не работают все подряд - непонятно, ну темнота необразованная.

Константин Кондаков решил показать высший пилотаж в командной строке Linux-а. Это не Windows, все кто себя уважают работают исключительно в строке. Вы верите что такое можно набрать без единой подсказки?!

Копирование файлов на другой сервер
for i in `seq 5 9`; do scp -pr -i ~/.ssh/id_dsa user@10.89.18.${i}:/data02/tomcatlogs/test.log.2012-02-21 ./10.89.18.${i}.test-ws.log.2012-02-21; done

Обработчик ошибки выполнения команды
mv -f ${TMP_BUILD}/testApp/App/web.xml ${TMP_BUILD}/coldfusion/WEB-INF || mail -s " Unable to move web.xml from App/WEB-INF to WEB-INF: `date +%D-time:%H:%M` ${TMP_BUILD} " ${EMAIL}

Синхронизация и копирование rsync,scp,tra,cpio,ssh
rsync -CHSalvz --progress --numeric-ids -e  ssh" /sata/vm5GOLD/ root@192.168.20.30:/backup/

Быстрый поиск
find /data/logs/httpd/vlogs/ -name "*.gz" -ctime +180 -exec rm -f {} \;

Конвейер
find . -type f | xargs ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s\n", size,$2);}' | head

История часто используемых команд
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Поиск и замена
A=`ifconfig -a | grep -2 'eth0:0' | grep inet | awk '{print $2'} | awk -F: '{print $2'}` && sed -i "s/Port 80/Listen $A:80/g" /usr/local/apache/conf/httpd.conf

Права доступа в цифре
ls -l | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'



Форматирование строки поиска
args="$(echo $URL | cut -d\? -f2 | tr '&' '\n' | grep -E '(^q=|^sid=|^p=|query=|item=|ask=|name=| topic=)' | sed -e 's/+/ /g' -e 's/%20/ /g' -e 's/"//g' | cut -d= -f2)"

Агрегация запросов сервера
dssh "grep -c '20/Apr/2012:06' /data/logs/httpd/vlogs/*/2012/04/20/*.log    " | awk ' BEGIN {FS = ":"  } { sum +=$2 } END { print sum }'

Количество http-соединений
watch "netstat -plan|grep :80|awk {'print \$5'} | cut -d: -f 1 | sort | uniq -c | sort -nk 1"

Неткат в качестве web-сервера
nc -w 5 -v -l -p 80 < file.ext

Маршрутизация
# route del -net default gw 192.168.40.1 dev eth1
# route add  -net default gw 192.168.20.1 dev eth0

Качаем файл
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com

Рулим в dns
dig -t NS redhat.com +noall +answer

Создаем ключи и передаем на сервер
ssh-keygen -t dsa -N ''
# cat ~/.ssh/id_dsa.pub | ssh you@host-server "cat - >> ~/.ssh/authorized_keys2"

Отпечаток сервера
# ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub
# For DSA key (default)

Проверка соединения
# ssh linda

Передача файла
rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/

Строим туннель
# ssh -L localport:desthost:destport user@gate
// localhost – это локальный компьютер, а gate – компьютер «посередине», в роли посредника
# ssh -R destport:desthost:localport user@gate
// реверс-туннель
# ssh -N -L2001:localhost:80 somemachine
// простейший «прокси сервер»


// Статистика процессов
# top
// Показ статистики по процессору
# mpstat 1
// Показ статистики по виртуальной памяти
# vmstat 2
// Показ статистики по I/O (системе ввода-вывода)
# iostat 2

а также следующее:
useradd, chown, chmod, passwd, rmuser, ln -s, chkconfig, update-rc.d, ulimit.

Установка софта
tar xzvf && ./configure &&make && make install

Передача параметра
./configure –with-prefix=/usr/local

Вам нравится?)

1 comment:

Anonymous said...

find abc/ | xargs -I{} sh -c "nl city.txt | grep -E '^ *1?[02468]' | grep -o '[A-Z].*' > {}/1.txt"
find abc/ - шукає всі підкаталоги з абц (насправді всі файли, але файлів там ще нема)

xargs -I{} - кожен аргумент записує в змінну {}. Тобто в команді, де написано {} буде підставлено значення поточного каталогу.

sh -c - запускає баш-скрипт із наступного рядка. Ага, ми пишемо скрипт у скрипті.

nl city.txt - виводить вміст файлу з нумерацією рядків

grep -E - розширена версія ґрепу (аналогічно egrep)

^ *1?[02468] - вибирає з рядків лише ті, які починаються на пробіл + парне число від 0 до 18. Неідеально насправді, можна оптимізувати, але це вже сам.

grep -o - вивести лише ту частину рядка, яка підпадає під умову

[A-Z].* - рядок, що містить велику букву і будь-які символи після цього.

> {}/1.txt - записати результат всіх цих операцій у файл.

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное