Всякие мелкие команды и скрипты

Тут описывается нелёгкий путь настройки ОС FreeBSD, начиная с установки дистрибутива и заканчивая настройкой каждого сервиса
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Всякие мелкие команды и скрипты

Сообщение RomA »

Решил скинуть с юниксового сервера архив доков - ходить миднайтом постоянно в сеть не хотелось, потому решил примонтировать шару

Код: Выделить всё

mount_smbfs -I 192.168.0.5 -E koi8-r:cp866 //roma@arhiv/roma /mnt/0_5
оно спросило пароль и ничего не сказало. ну нет ошибки, и на том спасибо - решил убедиться

Код: Выделить всё

files# df -m
Filesystem        1M-blocks    Used   Avail Capacity  Mounted on
/dev/ar0s1a             989     263     646    29%    /
devfs                     0       0       0   100%    /dev
/dev/ar0s1e             989     420     489    46%    /tmp
/dev/ar0s1f           77479   30346   40934    43%    /usr
/dev/ar0s1g          129973  117007    2568    98%    /usr/home
/dev/ar0s1d           19369    9877    7942    55%    /var
/dev/ar1s1d          230968  203874    8616    96%    /usr/home/samba
//ROMA@ARHIV/ROMA   2875536 1313210 1562326    46%    /mnt/0_5
Ну вот - папка примонтирована - теперь с ней можно работать почти как с локальной файловой системой. Буду на ней создавать архивы в реальном времиени

Код: Выделить всё

tar -czf /mnt/0_5/arhiv/1_8/21_12_09/users.tar.gz /usr/home/samba/users
Учитывая обьем - на ближайшие пару часов сервер призадумался :-)
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Проброска портов.

Сообщение RomA »

Прокидывает udp, например для сбербанка:

Код: Выделить всё

cd /usr/ports/net/3proxy
make install clean
ee /etc/rc.local
/usr/local/bin/udppm -ds -i192.168.1.1 87 94.230.35.32 87 &
Прокидывает tcp, например для Удаленого Рабочего Стола:

Код: Выделить всё

cd /usr/ports/net/redir
make install clean
ee /etc/rc.local
/usr/local/bin/redir --laddr=192.168.1.1 --lport=8033 --cport=3389 --caddr=192.168.0.3 &
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Узнаем размер директорий

Сообщение RomA »

посмотреть сколько места занята/осталось посмотреть сколько места занимает конкретная папка

Код: Выделить всё

du -sh /home/
найти 5 домашних каталогов пользователей, использующих больше всего дискового пространства

Код: Выделить всё

du sk /home/* | sort nr | head n5
Еше один способ узнать размер сразу нескольких папок (начинаем работу с текушего места, находим каталоги, узнаем их размер, сортируем по убыванию, записываем в файл 123)

Код: Выделить всё

find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn >> 123 
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Поиск

Сообщение RomA »

Ищем где у нас находится библиотечка

Код: Выделить всё

locate libperl.so
Ищем бинарник в системе или папку

Код: Выделить всё

whereis mc
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Получение разных параметров

Сообщение RomA »

Для получения значений температуры процессора:

Код: Выделить всё

stat# kldload coretemp

stat# sysctl -a | grep temperature
dev.cpu.0.temperature: 41.0C
dev.cpu.1.temperature: 25.0C
dev.cpu.2.temperature: 40.0C
dev.cpu.3.temperature: 43.0C
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Команды работы с ФС

Сообщение RomA »

Остановка системы
init 0
telinit 0
shutdown -h now
- остановить систему

shutdown -r now
reboot - перегрузить систему

shutdown -h hours:minutes & - запланировать остановку системы на указанное время
shutdown -c - отменить запланированную по расписанию остановку системы

logout - выйти из системы

Пользователи и группы
useradd -c "Revolution" -g admin -d /home/user -s /bin/bash user - создать пользователя user, назначить ему в качестве домашнего каталога /home/user, в качестве коммандной оболочки /bin/bash, включить его в группу admin и добавить комментарий Revolution
useradd user - создать пользователя user
userdel -r user - удалить пользователя user и его домашний каталог
usermod -c "FTP User" -g system -d /ftp/user -s /bin/nologin user - изменить атрибуты пользователя
groupadd group_name - создать новую группу с именем group_name
groupdel group_name - удалить группу group_name
groupmod -n new_group_name old_group_name -переименовать группу old_group_name в new_group_name
passwd - сменить свой пароль
passwd user - сменить пароль пользователя user1 (только root)
chage -E 2012-12-31 user - установить дату окончания действия учётной записи пользователя user
pwck - проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck - проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] group_name - изменяет первичную группу текущего пользователя. Если указать "-", ситуация будет идентичной той, в которой пользователь вышeл из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

Дисковое пространство
df -h - отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства.
ls -lSr - выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера.
du -sh dir - подсчитывает и выводит размер, занимаемый директорией 'dir'.
du -sk * | sort -rn - отображает размер и имена файлов и директорий, с сортировкой по размеру
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n - показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру.
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n - показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру

Монтирование файловых систем
mount /dev/sda1 /mnt - монтирует раздел 'sda1' в точку монтирования '/mnt'.
umount /dev/sda1 или umount /mnt - размонтирует раздел 'sda1'.
fuser -km /mnt/sda1 - принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n /mnt/sda1 - выполнить размонтитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты "только чтение" или недостаточно места на диске
mount /dev/fd0 /mnt/floppy - монтировать флоппи-диск
mount /dev/cdrom /mnt/cdrom - монтировать CD или DVD
mount -o loop file.iso /mnt - смонтировать ISO-образ
mount -t vfat /dev/sdb1 /mnt - монтировать файловую систему Windows FAT32
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share - монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind /home/user/dir /var/ftp/user - "монтирует" директорию в директорию (binding). Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в "песочнице" (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/dir в /var/ftp/user

Поиск файлов
find / -name file - найти файлы и директории с именем file. Поиск начать с корневой директории (/)
find / -user user - найти файл и директорию принадлежащие пользователю user. Поиск начать с корневой директории (/)
find /home/user -name "*.gz" - Найти все файлы и директории, имена которых оканчиваются на '. gz'. Поиск начать с '/ home/user'
find /usr -type f -atime +10 - найти все файлы в '/usr', время последнего обращения к которым более 10 дней
find /usr -type f -mtime -10 - найти все файлы в '/usr', созданные или изменённые в течении последних 10 дней
find / -name *.deb -exec chmod 755 '{}' \; - найти все фалы и директории, имена которых оканчиваются на '.deb', и изменить права доступа к ним
find / -xdev -name "*.deb" - найти все фалы и директории, имена которых оканчиваются на '.deb', игнорируя съёмные носители, такие как cdrom, floppy и т.п.
whereis top - показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу 'top'
which top - отображает полный путь к файлу 'top'
locate "shutdown" - найти все файлы, содержащие в имени 'shutdown'. База файлов создается командой 'updatedb'

Файлы и директории
cd /home - перейти в директорию '/home'
cd ~user - перейти в домашнюю директорию пользователя user
cd - - перейти в директорию, в которой находились до перехода в текущую директорию
cd .. - перейти в директорию уровнем выше
cd - перейти в домашнюю директорию
cp -a dir1 dir2 - копировать директорию dir1 в директорию dir2
cp -a /tmp/dir1 . - копировать директорию dir1 со всем содержимым в текущую директорию
cp dir/* . - копировать все файлы директории dir в текущую директорию
cp file1 file2 - скопировать файл file1 в файл file2
ln file1 lnk1 - создать "жёсткую" (физическую) ссылку на файл или директорию
ln -s file1 lnk1* - создать символическую ссылку на файл или директорию
ls *[0-9]* - показать файлы и директории содержащие в имени цифры
ls -a - показать скрытые файлы и директории в текущей директории
ls -F - отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
ls -l - показать детализированное представление файлов и директорий в текущей директории
lstree - показать дерево файлов и директорий, начиная от корня (/)
ls - отобразить содержимое текущей директории
mkdir dir1 dir2 - создать две директории одновременно
mkdir dir1 - создать директорию с именем 'dir1'
mkdir -p /tmp/dir1/dir2 - создать дерево директорий
mv dir1 new_dir - переименовать или переместить файл или директорию
pwd - показать текущую директорию
rmdir dir1 - удалить директорию с именем 'dir1'
rm -f file1 - удалить файл с именем 'file1'
rm -rf dir1 dir2 - удалить две директории и рекурсивно их содержимое
touch -t 0712250000 fileditest - модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Системная информация
uname -m - отобразить архитектуру компьютера
uname -r - отобразить используемую версию ядра
dmidecode -q - показать аппаратные системные компоненты - (SMBIOS / DMI)
hdparm -i /dev/hda - вывести характеристики жесткого диска
hdparm -tT /dev/sda - протестировать производительность чтения данных с жесткого диска
cat /proc/cpuinfo - отобразить информацию о процессоре
cat /proc/interrupts - показать прерывания
cat /proc/meminfo - проверить использование памяти
cat /proc/swaps - показать файл(ы) подкачки
cat /proc/version - вывести версию ядра
cat /proc/net/dev - показать сетевые интерфейсы и статистику по ним
cat /proc/mounts - отобразить смонтированные файловые системы
lspci -tv - показать в виде дерева PCI устройства
lsusb -tv - показать в виде дерева USB устройства
date - вывести системную дату
cal 2010 - вывести таблицу-календарь 2010-го года
date 031519002010.00 - установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
clock -w - сохранить системное время в BIOS
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Аналог Эвереста - или узнаём подробную информацию о сервере

Сообщение RomA »

На сервере надо было посмотреть версию BIOS но перегружать его совершенно не хотелось, и тогда на помощь пришло следующее решение

Код: Выделить всё

cd /usr/ports/sysutils/dmidecode
make install clean
rehash
теперь, запустив

Код: Выделить всё

dmidecode | less
я могу получить исчерпывающую информацию о компьюторе
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Пересборка пакета со всеми зависимостями

Сообщение RomA »

Иногда, чаще всего после обновлений, когда пакеты собираются скопом и один пакет уже обновился, а библиотека, с которой он собирается, ещё нет - мы получаем вроде как собранный и установленный пакет, но на практике нефига не рабочий. Ну вот, скажем вы собрали расширение к php, а потом решили обновить версию php самого - а расширения остались со старым php. Или, скажем, вы решили обновить перл, а перловые плагины остались старыми - в результате нефига не работает, хотя внешне всё нормально. В таких случаях следует заново пересобрать пакет со всеми зависимостями, а именно

Код: Выделить всё

portupgrade -frR p5-SOAP-Lite
где p5-SOAP-Lite - имя пакета
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Игнорируем сертификат

Сообщение RomA »

Иногда, при попытки скачать что-то можно заметить вот такую нехорошую ошибку

Код: Выделить всё

SSL certificate problem: unable to get local issuer certificate
Проблема с сертификатом... иногда, когда мы уверены в ресурсе, уверены что сертификат просто неверный, или просто имеем дикое желание скачать - можно игнорировать проверку сертификата - делается это так:

Код: Выделить всё

env GIT_SSL_NO_VERIFY=true
То есть если команда говорит так:

Код: Выделить всё

# git clone https://gitlab.com/kolab-roundcube-plugins/calendar.git
Cloning into 'calendar'...
fatal: unable to access 'https://gitlab.com/kolab-roundcube-plugins/libcalendaring.git/': SSL certificate problem: unable to get local issuer certificate
#
То делаем так:

Код: Выделить всё

# env GIT_SSL_NO_VERIFY=true git clone https://gitlab.com/kolab-roundcube-plugins/libcalendaring.git
Cloning into 'libcalendaring'...
remote: Counting objects: 182, done.
remote: Compressing objects: 100% (176/176), done.
remote: Total 182 (delta 85), reused 0 (delta 0)
Receiving objects: 100% (182/182), 272.04 KiB | 381.00 KiB/s, done.
Resolving deltas: 100% (85/85), done.
Checking connectivity... done.
#
Ответить