- •Объектно-ориентированное программирование Лабораторный практикум
- •1. Задания к лабораторным работам
- •1.1. Разработка отказоустойчивого программного обеспечения Лабораторная работа №1. Использование «утверждений» при разработке устойчивых программных систем.
- •Рекомендации по организации кода проекта
- •Использование профилировщика gprof для выявления «узких мест» в программах и повышения быстродействия кода. Лабораторная работа №3 Программирование с использованием шаблонов
- •Список индивидуальных заданий к лабораторным работам
- •Разработка объектно-ориентированного по
- •Паттерны проектирования
- •Многопоточное проектирование
- •Полезные и часто используемые команды ос gnu/Linux
Разработка объектно-ориентированного по
Задание.
ЛАБОРАТОРНАЯ РАБОТА №6
Паттерны проектирования
Задание.
ЛАБОРАТОРНАЯ РАБОТА №7
Многопоточное проектирование
Задание.
Полезные и часто используемые команды ос gnu/Linux
Команда |
Описание |
Получение информации о системе. | |
uname -a |
Выводит информацию о загруженой системе. |
uptime |
Выводит информацию о времени прошедшем с момента загрузки системы |
dmidecode -q |
Выводит информацию об аппаратной части ПК основываясь на данных BIOS. |
hwinfo |
Выводит информацию об аппаратной части ПК. |
lscpu -a |
Выводит информацию об установленном процессоре. |
lspci -tv |
Выводит информацию о PCI устройствах. |
lsusb -tv |
Выводит информацию о USB устройствах. |
lsscsi -tv |
Выводит информацию о SCSI устройствах. |
lsblk -a |
Выводит информацию о всех блочных устройствах найденных в системе. |
lsmod |
Выводит информацию о том какие модули загружены в ядро. |
cat /proc/cpuinfo |
Отобразить информацию о процессоре. |
cat /proc/interrupts |
Отобразить информацию о прерываниях |
cat /proc/meminfo |
Отобразить информацию об использовании памяти. |
cat /proc/swaps |
Отобразить информацию о файлах подкачки. |
cat /proc/mounts |
Отобразить информацию о смонтированных файловых системах. |
cat /proc/version |
Отобразить информацию о версии ядра. |
cat /proc/net/dev |
Отобразить информацию о сетевых интерфейсах и статистику по ним. |
Управление файловой системой. | |
ls |
Выводит список файлов и директорий. |
ls -al |
Выводит подробный список всех файлов и директорий в табличном виде. |
cd /home/user |
Перейти в директорию "/home/user". |
cd ~ |
Перейти в домашнюю директорию текущего пользователя. |
cd .. |
Перейти в директорию на уровень выше текущей директории. |
cd - |
Перейти в директорию в которой находились до перехода в текущую директорию. |
mkdir dir1 |
Создать директорию "dir1". |
mkdir dir1 dir2 |
Создать директорию "dir1", "dir2". |
mkdir -p /dir1/dir2/dir3 |
Создать каталог "dir3" и все родительские подкаталоги если они не существуют. |
rm file1 |
Удалить файл "file1". |
rm -f file1 |
Удалить файл "file1" не выдавая дополнительных сообщений. |
rm -rf dir1 |
Удалить каталог "dir1" и все его содержимое. |
rmdir |
Удалить каталог "dir1" и все его содержимое. |
mv dir1 dir2 |
Переименовать директорию из "dir1" в "dir2". |
mv dir1 ../ |
Перенести директорию на уровень выше. |
cp file1 file2 |
Скопировать "file1" в "file2". |
cp -a dir1 dir2 |
Скопировать директорию "dir1" в директорию "dir2". |
ln file1 link1 |
Создать жесткую ссылку на файл. |
ln -s file1 link1 |
Создать символическую ссылку на файл. |
touch file1 |
Создать пустой файл с именем "file1". |
: > file1 |
Создать пустой файл с именем "file1". |
chmod 777 file1 |
Полные права на файл для всех пользователей. |
chmod 755 file1 |
Полные права на файл для его владельца, всем остальным только чтение и исполнение. |
chmod -R 755 dir1 |
Установить права для папки и всех ее подпапок и файлов. |
chown user:group file1 |
Сменить владельца файла. |
chown -R user:group dir1 |
Сменить владельца для папки и всех ее подпапок и файлов. |
Специализированные атрибуты файлов. | |
lsattr |
Показать атрибуты файлов. |
chattr +a file1 |
Позволить открывать файл на запись только в режиме добавления. |
chattr +c file1 |
Позволяет ядру автоматически сжимать/разжимать содержимое файла. |
chattr +d file1 |
Указывает утилите dump игнорировать данный файл во время выполнения резервного копирования. |
chattr +i file1 |
Делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него. |
chattr +s file1 |
Позволяет сделать удаление файла безопасным, т.е. выставленный атрибут "s" говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращает возможность восстановления данных. |
chattr +S file1 |
Указывает, что при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync. |
chattr +u file1 |
Данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить. |
Информация о дисковом пространстве. | |
df -h |
Отображает в табличном виде все смонтированные файловые системы с указанием информации по используемому и свободному дисковому пространству. |
du -sh dir1 |
Подсчитать размер директории и вывести результат в удобных для восприятия человека единицах измерения (Gb, Mb, Kb). |
du -sh * |
Подсчитать размер всех директорий текущей директории и вывести результат в удобных для восприятия человека единицах измерения (Gb, Mb, Kb). |
fdisk -l |
Показать все доступные дисковые устройства. |
Монтирование файловых систем. | |
mount |
Выводит информацию о смонтированных файловых системах. |
mount /dev/sda1 /mnt/sda1 |
Смонтировать файловую систему /dev/sda1 в директорию /mnt/sda1 при этом директория должна существовать на момент монтирования. |
mount /dev/fd0 /mnt/floppy |
Смонтировать дисковод 3.5". |
mount /dev/cdrom /mnt/cdrom |
Смонтировать CDROM. |
mount -o loop file1.iso /mnt/cdrom |
Смонтировать iso-образ. |
Поиск файлов и папок. | |
find / -name file1 |
Найти файлы и директории с именем file1. Поиск начинать с корня "/". |
find / -user user1 |
Найти файлы и директории принадлежащие пользователю user1. Поиск начинать с корня "/". |
find / -name "*.bin" |
Найти файлы и директории, имена которых оканчиваются на ".bin". Поиск начинать с корня "/". |
find /usr/bin -type f -atime +100 |
Найти все файлы в каталоге "/usr/bin", время последнего обращения к которым более 100 дней. |
find /usr/bin -type f -mtime -10 |
Найти все файлы в "/usr/bin", созданные или изменённые в течении последних 10 дней. |
find / -name *.sh -exec chmod 644 '{}' \; |
Найти все фалы и директории, имена которых оканчиваются на ".sh", и изменить права доступа к ним. |
find / -xdev -name "*.sh" |
Найти все фалы и директории, имена которых оканчиваются на '.sh', игнорируя съёмные носители, такие как CDROM, дисковод 3.5" и т.п. |
whereis halt |
Показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу "halt". |
which halt |
Отображает полный путь к файлу "halt". |
apropos keyword1 |
Поиск ключевого слова "keyword1" ;в именах справочных страниц и кратких описаниях. |
Управление пользователями и группами. | |
passwd |
Сменить пароль текущего пользователя. |
passwd user1 |
Сменить пароль пользователя "user1" при условии, текущий пользователь "root". |
useradd -c "New User" -g user -d /home/user1 -s /bin/bash user1 |
Создать пользователя "user1", назначить ему в качестве домашнего каталога "/home/user1", в качестве оболочки "/bin/bash", включить его в группу "user" и добавить комментарий "New User". |
userdel -r user1 |
Удалить пользователя "user1" и его домашний каталог со всем его содержимым. |
usermod -c "Old User" -s /bin/false user1 |
Изменить атрибуты пользователя "user1". |
groupadd group1 |
Создать новую группу с именем "group1". |
groupdel group1 |
Удалить группу "group1". |
groupmod -n group2 group1 |
Переименовать группу "group1" в "group2". |
chage -E 2013-12-31 user1 |
Установить дату окончания действия учётной записи пользователя "user1". |
chage -l user1 |
Просмотреть параметры отключения и смены пароля для учетной записи "user1". |
pwck |
Проверить корректность системных файлов учётных записей. Проверяются файлы "/etc/passwd" и "/etc/shadow". |
grpck |
Проверить корректность системных файлов учётных записей. Проверяется файл "/etc/group". |
Управление архивами и сжатыми файлами. | |
unrar x file1.rar |
Распаковать rar-архив. |
zip file1.zip file1 |
Создать сжатый zip-архив. |
zip -r file1.zip file1 file2 dir1 |
Создать сжатый zip-архив со включением в него нескольких файлов и директорий. |
unzip file1.zip |
Распаковать zip-архив. |
tar -cvf archive1.tar file1 |
Создать tar-архив "archive1.tar", содержащий файл "file1". |
tar -cvf archive1.tar file1 file2 dir1 |
Создать tar-архив "archive1.tar", содержащий файл "file1", "file2" и директорию "dir1". |
tar -tf archive1.tar |
Показать содержимое архива " archive1.tar ". |
tar -xvf archive1.tar |
Распаковать архив "archive1.tar". |
tar -xvf archive1.tar -C /tmp |
Распаковать архив "archive1.tar " в директорию "/tmp". |
tar -cvfj archive1.tar.bz2 dir1 |
Создать архив и сжать его с помощью bzip2. |
tar -xvfj archive1.tar.bz2 |
Разжать архив и распаковать его. |
tar -cvfz archive1.tar.gz dir1 |
Создать архив и сжать его с помощью gzip. |
tar -xvfz archive1.tar.gz |
Разжать архив и распаковать его. |
gzip file1 |
Сжимает файл "file1". |
bzip2 file1 |
Сжимает файл "file1". |
gunzip file1.gz |
Разжимает файл "file1.gz". |
bunzip2 file1.bz2 |
Разжимает файл "file1.bz2". |
Просмотр содержимого файлов. | |
cat file1 |
Вывести содержимое файла "file1" на стандартное устройство вывода. |
tac file1 |
Вывести содержимое файла "file1" на стандартное устройство вывода в обратном порядке. |
more file1 |
Постраничный вывод содержимого файла "file1" на стандартное устройство вывода. |
less file1 |
Постраничный вывод содержимого файла "file1" на стандартное устройство вывода, но с возможностью пролистывания в обе стороны, поиска по содержимому. |
head -2 file1 |
Вывести первые две строки файла "file1" на стандартное устройство вывода. По-умолчанию выводится десять строк. |
tail -2 file1 |
Вывести последние две строки файла "file1" на стандартное устройство вывода. По-умолчанию выводится десять строк. |
tail -f /var/log/messages |
Выводить содержимое файла "/var/log/messages" на стандартное устройство вывода по мере появления в нём текста. |
Манипуляции с текстом. | |
cat file1.txt | [sed, grep, awk] > result1.txt |
Общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый файл. |
cat file1.txt | [sed, grep, awk] >> result1.txt |
Общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан. |
grep Aug /var/log/messages |
Из файла "/var/log/messages" отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug". |
grep ^Aug /var/log/messages |
Из файла "/var/log/messages" отобрать и вывести на стандартное устройство вывода строки, начинающиеся на "Aug". |
grep [0-9] /var/log/messages |
Из файла "/var/log/messages" отобрать и вывести на стандартное устройство вывода строки, содержащие цифры. |
grep Aug -R /var/log/ |
Отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug", во всех файлах, находящихся в директории "/var/log" и ниже. |
sed 's/string1/string2/g' file1.txt |
В файле "file1.txt" заменить "string1" на "string2", результат вывести на стандартное устройство вывода. |
sed '/^$/d' file1.txt |
Удалить пустые строки из файла "file1.txt". |
sed '/ *#/d; /^$/d' file1.txt |
Удалить пустые строки и комментарии из файла "file1.txt". |
sed -e '1d' file1.txt |
Удалить первую строку из файла "file1.txt". |
sed -n '/string1/p' |
Отобразить только строки содержащие "string1". |
sed -e 's/ *$//' file1.txt |
Удалить пустые символы в конце каждой строки файла "file1.txt". |
sed -e 's/string1//g' file1.txt |
Удалить строку "string1" из текста не изменяя всего остального. |
sed -n '1,8p;5q' file1.txt |
Взять из файла с первой по восьмую строки и из них вывести первые пять. |
sed -n '5p;5q' file1.txt |
Вывести пятую строку. |
sed -e 's/0*/0/g' file1.txt |
Заменить последовательность из любого количества нулей одним нулём. |
cat -n file1.txt |
Пронумеровать строки при выводе содержимого файла. |
cat file1.txt | awk 'NR%2==1' |
При выводе содержимого файла, не выводить чётные строки файла. |
echo a b c | awk '{print $1}' |
Вывести первую колонку. Разделение, по-умолчанию, по пробелу или табуляции. |
echo a b c | awk '{print $1,$3}' |
Вывести первую и третью колонки. Разделение, по-умолчанию, по пробелу или табуляции. |
echo 'esempio' | tr '[:lower:]' '[:upper:]' |
Преобразовать символы из нижнего регистра в верхний. |
paste file1.txt file2.txt |
Объединить содержимое "file1.txt" и "file2.txt" в виде таблицы: строка 1 из "file1.txt" = строка 1 колонка 1-n, строка 1 из "file2.txt" = строка 1 колонка n+1-m. |
paste -d '+' file1.txt file2.txt |
Объединить содержимое "file1.txt" и "file2.txt" в виде таблицы с разделителем "+". |
sort file1.txt file2.txt |
Отсортировать содержимое двух файлов. |
sort file1.txt file2.txt | uniq |
Отсортировать содержимое двух файлов, не отображая повторов. |
sort file1.txt file2.txt | uniq -u |
Отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода). |
sort file1.txt file2.txt | uniq -d |
Отсортировать содержимое двух файлов, отображая только повторяющиеся строки. |
comm -1 file1.txt file2.txt |
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу "file1.txt". |
comm -2 file1.txt file2.txt |
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу "file2.txt". |
comm -3 file1.txt file2.txt |
Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах. |
DEB пакеты (Дистрибутивы базирующиеся на Debian, Ubuntu). | |
dpkg -i package.deb |
Установить или обновить пакет. |
dpkg -r package_name |
Удалить пакет из системы. |
dpkg -l |
Показать все пакеты, установленные в системе. |
dpkg -l | grep httpd |
Среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени "httpd". |
dpkg -s package_name |
Отобразить инфрмацию о конкретном пакете. |
dpkg -L package_name |
Вывести список файлов, входящих в пакет, установленный в системе. |
dpkg --contents package_name |
Отобразить список файлов, входящих в пакет, который ещё не установлен в системе. |
dpkg -S /bin/ping |
Найти пакет, в который входит указанный файл. |
RPM пакеты (Дистрибутивы базирующиеся на RedHat, Fedora). | |
rpm -ivh package.rpm |
Установить пакет с выводом сообщений и прогресс-бара. |
rpm -ivh --nodeps package.rpm |
Установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей. |
rpm -U package.rpm |
Обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен. |
rpm -F package.rpm |
Обновить пакет только если он установлен. |
rpm -e package_name |
Удалить пакет. |
rpm -qa |
Отобразить список всех пакетов, установленных в системе. |
rpm -qa | grep httpd |
Среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени "httpd". |
rpm -qi package_name |
Вывести информацию о конкрентном пакете. |
rpm -qg "System Environment/Daemons" |
Отобразить пакеты входящие в группу пакетов. |
rpm -ql package_name |
Вывести список файлов, входящих в пакет. |
rpm -qc package_name |
Вывести список конфигурационных файлов, входящих в пакет. |
rpm -q package_name --whatrequires |
Вывести список пакетов, необходимых для установки конкретного пакета по зависимостям. |
rpm -q package_name --scripts |
Отобразит скрипты, запускаемые при установке или удалении пакета. |
rpm -q package_name --changelog |
Вывести историю ревизий пакета. |
rpm -qf /etc/httpd/conf/httpd.conf |
Проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла. |
rpm -qp package.rpm -l |
Отображает список файлов, входящих в пакет, но ещё не установленных в систему. |
rpm --import /media/cdrom/RPM-GPG-KEY |
Ипортировать публичный ключ цифровой подписи. |
rpm --checksig package.rpm |
Проверит подпись пакета. |
rpm -qa gpg-pubkey |
Проверить целостность установленного содержимого пакета. |
rpm -V package_name |
Проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета. |
rpm -Va |
Проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью! |
rpm -Vp package.rpm |
Проверить пакет, который ещё не установлен в систему. |
rpm2cpio package.rpm | cpio --extract --make-directories *bin* |
Извлечь из пакета файлы содержащие в своём имени "bin". |
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm |
Установить пакет, собранный из исходных кодов. |
rpmbuild --rebuild package_name.src.rpm |
Собрать пакет из исходных кодов. |
APT - пакетный менеджер (Дистрибутивы базирующиеся на Debian, Ubuntu). | |
apt-get install package_name |
Установить или обновить пакет. |
apt-cdrom install package_name |
Установить или обновить пакет с CDROM. |
apt-get update |
Получить обновлённые списки пакетов. |
apt-get upgrade |
Обновить пакеты, установленные в систему. |
apt-get remove package_name |
Удалить пакет, установленный в систему с сохранением файлов конфигурации. |
apt-get purge package_name |
Удалить пакет, установленный в систему с удалением файлов конфигурации. |
apt-get check |
Проверить целостность зависимостей. |
apt-get clean |
Удалить загруженные архивные файлы пакетов. |
apt-get autoclean |
Удалить старые загруженные архивные файлы пакетов. |
YUM - пакетный менеджер (Дистрибутивы базирующиеся на RedHat, Fedora). | |
yum install package_name |
Установать пакет. |
yum update |
Обновить все пакеты, установленные в систему. |
yum update package_name |
Обновить пакет. |
yum remove package_name |
Удалить пакет. |
yum list |
Вывести список всех пакетов, установленных в систему. |
yum search package_name |
Найти пакет в репозитории. |
yum clean packages |
Очисть rpm-кэш, удалив закачанные пакеты. |
yum clean headers |
Удалить все заголовки файлов, которые система использует для разрешения зависимостей. |
yum clean all |
Очисть rpm-кэш, удалив закачанные пакеты и заголовки. |