Полезные однострочники для администратора веб-сервера
Команда или набор команд, умещающихся в одну строчку, может сделать жизнь пользователя и администратора веб-сервера удивительно комфортной. Однострочников много, а я — один, поэтому пока буду складывать всё то полезное, чем пользуюсь сам регулярно, в одну кучу (в это пост), а потом может быть это дело хоть как-то классифицирую.
Показать cron всех пользователей
Вывести cron-задания для всех пользователей в системе (и на этом же примере видно, как получить список всех пользователей в системе и что-либо выполнить для этих пользователей):
for USER in $(cut -f1 -d: /etc/passwd); do echo "$USER"; crontab -u $USER -l; done
Отправить из консоли письмо с вложением
В CentOS может не быть из коробки утилиты mail
, чтобы она появилась надо установить пакет mailx
. А теперь отправляем файл file.gz
:
echo "Текст письма" | mail -s "Тема письма" -a /root/file.gz vashapochta@mail.ru
Скажу ещё несколько слов про mail
, у неё есть ряд полезных параметров:
-c
— адрес для отправки копии (CC)-b
— адрес для отправки скрытой копии (BCC)-r
— установить адрес отправителя (From)
Если запустить mail
совсем без параметров, то попадёте в консольный почтовый клиент (т.е. сможете не писать, а читать локальные письма). По умолчанию вам будет показан список входящих писем, в начале каждой строки будет порядковый номер письма. Чтобы из клиента выйти, введите команду q
, а чтобы почитать какое-то из писем (если ваш ящик не пуст) введите в качестве команды номер письма, например, 1
Проверить и починить все таблицы во всех базах MySQL
mysqlcheck -u root -p --auto-repair --check --all-databases
Вывести список всех баз MySQL, кроме системных
Параметр -B
скрывает сетку псевдографической таблицы, а параметр -N
скрывает заголовок таблицы. Вместе эти два параметра позволяют получить чистенький текстовый список для использования в других скриптах.
mysql -p -B -N -e "SHOW DATABASES;" \ | grep -v '^mysql$' | grep -v '^information_schema$' | grep -v '^performance_schema$'
Вывести все таблицы MySQL с движком MyISAM
mysql -p -B -N -e "SELECT table_schema, table_name FROM information_schema.tables WHERE engine = 'InnoDB' AND table_schema NOT IN ('mysql', 'performance_schema', 'information_schema');"
service monit stop mysql -p`cat /root/.mysql-root-password` -B -N -e "SHOW DATABASES;" \ | grep -v '^mysql$' | grep -v '^information_schema$' | grep -v '^performance_schema$' \ | xargs mysqldump -p`cat /root/.mysql-root-password` --force --databases --no-data \ | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/' > /root/all-dbs-schema.sql mysql -p`cat /root/.mysql-root-password` -B -N -e "SHOW DATABASES;" \ | grep -v '^mysql$' | grep -v '^information_schema$' | grep -v '^performance_schema$' \ | xargs mysqldump -p`cat /root/.mysql-root-password` --force --databases --no-create-info > /root/all-dbs-data.sql mysqldump -p`cat /root/.mysql-root-password` --force mysql > /root/all-dbs-mysql.sql service mysql stop killall -9 mysqld rm -rf /var/lib/mysql/* /usr/bin/mysql_install_db --user=mysql service mysql start mysql < /root/all-dbs-schema.sql mysql < /root/all-dbs-data.sql mysql mysql < /root/all-dbs-mysql.sql mysql -B -N -e "FLUSH PRIVILEGES;" mysql -p`cat /root/.mysql-root-password` -B -N -e "DROP DATABASE test;"
Почистить всю историю шелла
history -c && history -w