ssh на каждый день

Права на файлы и папки

Удобно использовать рекурсивное применение.

chown -R bitrix:bitrix .	# смена владельца:группы
find ./ -type d -exec chmod 755 {} \;	# 755 для директорий
find ./ -type f -exec chmod 644 {} \;	# 644 для файлов
Перекодировать все файлы сайта в UTF-8
find ./ -type f -name '*.php' -exec iconv -fcp1251 -tutf8 -o /tmp/tmp_file {} \; -exec mv /tmp/tmp_file {} \;

Поиск файла по дате изменения

find /home/bitrix/www/bitrix/modules -newermt '2013-06-20 10:35'

Количество файлов в директории

find . -type f | grep -c ''

Убить всё на 80м порту

fuser -k 80/tcp 

Место на диске.

df -h # на всём диске
du -sh # в текущей папке
du -sh -- * | sort -h -r # во всех папках текущего раздела отсортированный по размеру

Архивация ядра 1С-Битрикс

tar me

tar -zcvf core.tgz ./bitrix/* --exclude="*.tar" --exclude="*.gz" --exclude="*.tgz" --exclude="*.gz.[0-9]*" --exclude="*.sql" --exclude="*.xml" --exclude="*.zip" --exclude="*.rar" --exclude="*.exe" --exclude="*.csv" --exclude="*.mp3" --exclude="*.db" --exclude="./bitrix/cache/*" --exclude="./bitrix/managed_cache/*" --exclude="./bitrix/stack_cache/*" --exclude="./bitrix/html_pages/*" --exclude="./bitrix/backup/*";
#
tar -zcvf ../../modules.tgz . --exclude="*lang*" --exclude="*.jpg" --exclude="*.png" --exclude="*.gif" --exclude="*.bmp" --exclude="*.xml" --exclude="*.mp3" --exclude="*.sql" --exclude="*.csv" --exclude="*install*" --exclude="*.css" --exclude="*.js" --exclude="*.map" --exclude="*.xsd" --exclude="*.ttf" --exclude="*.eot" --exclude="*.woff" --exclude="*.idx" --exclude="*.db" --exclude="*.log" --exclude="*.md" --exclude="*.gitignore" --exclude="*.ht*" --exclude="*.afm" --exclude="*.ufm" --exclude="*.payment" --exclude="*.agents" --exclude="*.test" --exclude="*.default" --exclude="*.webrtc" --exclude="*.autoposting" --exclude="*.pem" --exclude="*.json" --exclude="*.docx" --exclude="*.xlsx" --exclude="*.pptx" --exclude="*.bonuses" --exclude="*.gz" --exclude="*.liveapi" --exclude="*.buildpath" --exclude="*.project" --exclude="*.settings" --exclude="*.prefs" --exclude="*.old" --exclude="*.txt" --exclude="*.vks" --exclude="*.mail" --exclude="*.php_back" --exclude="*.mobileconfig" --exclude="*.dict" --exclude="*.optimizer" --exclude="*.TXT" --exclude="*.menu" --exclude="*.payinvoice" --exclude="*.bpt" --exclude="*.ace" --exclude="*.options" --exclude="*.0" --exclude="*.mailinfo" --exclude="*.messageindicator" --exclude="*.mailtpl" --exclude="*.phpt" --exclude="*.idea" --exclude="*.tilda" --exclude="*.sed" --exclude="*.dist" --exclude="*.yml" --exclude="*.gitattributes" --exclude="*.ser" --exclude="*.LGPL" --exclude="*.en" --exclude="*.DS_Store" --exclude="*.de" --exclude="*.zip" --exclude="*.keyrights" --exclude="*.orig" --exclude="*.doc";

Копирование данных

С опцией -P для wget можно задавать куда копировать данные.

wget -P /home/bitrix/www/ http://example.com/dump.tgz

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

scp -r root@151.248.125.124:/home/bitrix/www/bitrix/backup/2013-06-19_12-38_full_d9753eb0.tar.gz /home/bitrix/www

Лучшая утилита копирования. Скопирует только отсутствующие на удалённом сервере файлы.

rsync -vrtplze ssh /home/bitrix/www/upload/iblock/* root@213.136.83.249:/home/bitrix/www/upload/iblock/*

Большие проекты могут иметь более ста или даже тысячи файлов битриксовской резервной копии, такой архив надёжнее скачать wget'ом и уже потом установить с restore.php, но копировать такое число файлов запаришься. php-скрипт ниже сгенерирует bash-скрипт для копирования больших архивов.

echo "#!/bin/bash\n";
echo 'wget -P /home/bitrix/www/ http://site.ru/bitrix/backup/20161025.enc.gz; ';
for ($i=1;$i<678;$i++) { echo 'wget -P /home/bitrix/www/ http://site.ru/bitrix/backup/20161025.enc.gz.'. $i .'; ';
}
/*
php wget_backup_generator.php > download.sh
chmod +x download.sh
*/

Работа с пользователем

Вся информация о пользователях и группах храниться в файлах /etc/passwd, /etc/shadow и /etc/group

Сменить пароль

passwd [username]

Добавить нового пользователя с автоматическим созданием папки

adduser [username]

Сменить пользователю группу

usermod -g [groupname] [username]

Добавить пользователю группу

usermod -a -G [groupname] [username]

Список групп пользователя

groups [username]

:/sbin/nologin для ftp-пользователей
Подробный мануал: http://help.ubuntu.ru/wiki/пользователи_и_группы

Процессы

Просмотр, удаление процессов. Результаты можно grep'ить.

ps ax	# Просмотр текущик процессов
ps axf	# Просмотр текущик процессов с родителями
ps axfu	# Просмотр текущик процессов с родителями расширенно
kill PID # Мягко убиваем
kill -9 PID	# Жесткое убивание
# Сколько потребляем памяти один httpd процесс
ps -ylC httpd | awk '{x += $8;y += 1} END {print "Average Proccess Size (MB): "x/((y-1)*1024)}'

MySQL

Дамп MySQL.

mysqldump -Q -c -e -u root -p DBNAME > ./dump.sql
mysql -u root -p DBNAME < ./dump.sql

Бекап базы на крон без блокировки таблиц.

mysqldump --single-transaction sitemanager0 > /backup/db_sql/site_ru_mysql_`date +%Y.%m.%d_%H_%M`.sql

Показать все базы данных.

show databases;

Удалить базу данных.

drop database DBNAME;

Создать базу данных.

CREATE DATABASE `DB_NAME` CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Создание пользователя базы данных.

CREATE USER 'USERNAME'@'localhost' IDENTIFIED BY 'password';

Смена кодировки базы данных.

alter database DB_NAME default character set utf8

Просмотр переменных.

SHOW VARIABLES;

Установка нового значения для переменной.

SET GLOBAL sort_buffer_size=1000000

Lock wait timeout exceeded


Настройка безпаролевого доступа

Данная настойка сделает возможным заходить или копировать данные без ввода пароля.
На сервере с которого собираемся подключаться к другому серверу сгенерировать ключи.

ssh-keygen

Создастся два ключа.

~/.ssh/id_rsa
~/.ssh/id_rsa.bup

Передаем открытый ключ второму компьютеру, к которому собираемся соединяться.

ssh-copy-id -i ~/.ssh/id_rsa.pub name@192.168.0.2

И ещё пару статей на тему: https://habrahabr.ru/post/122445/, https://habrahabr.ru/post/39116/


Краткая выжимка статьи на хабре

https://habrahabr.ru/company/ruvds/blog/323330/
Каждая команда в этой и других статьях мной осмыслены и проверены, поэтому я делаю краткие выжимки без подробного описания, так как здесь всё является моей шпаргалкой.

# Вывод результатов работы команд в виде таблицы
mount | column -t
ls -l | column -t
cat /etc/passwd | column -t -s: # разделитель «:»
# вывести сведения об архитектуре
getconf LONG_BIT
# одновременный просмотр нескольких лог-файлов
multitail /var/log/httpd/access_log /var/log/httpd/error_log
yum install multitail # установка на Red Hat
apt-get install multitail # установка на Debian
# возврат к предыдущей директории
cd -
# мониторинг с регулярными интервалами
watch df
# продолжение выполнения программы после окончания сессии
nohup wget site.com/file.zip
# автоматический ответ yes или no
yes | apt-get update
# выполнение последней команды
!!
# создание протокола терминальной сессии
# для того, чтобы записать в файл всё, что было выведено в окне терминала, можно воспользоваться командой script.
# после выхода из сессии протокол будет записан в файл typescript.
# Замена пробелов на знаки табуляции
cat geeks.txt | tr ':[space]:' '\t' > out.txt
# Замена строчных букв на прописные
cat myfile | tr a-z A-Z > output.txt
# Автоматическое формирование списка аргументов
find. -name *.png -type f -print | xargs tar -cvzf images.tar.gz
cat urls.txt | xargs wget
# вывод первой команды передаётся в качестве аргумента в конце команды xargs
# следующая команда подставит вывод на место {}, при этом добавлен аргумент -i
ls /etc/*.conf | xargs -i cp {} /home/likegeeks/Desktop/out

Теги: ssh, bitrix, mysql, linux, centos