Практические задания для линукс

Упражнения по работе с командной строкой linux

На этой странице собраны упражнения по основным командам для манипуляции с файлами и директориями из командной строки Linux. Каждая из этих команд выполняет одно простое действие, но в дальнейшем может быть использована для составления более сложных цепочек команд.

Перед тем как начать — первый простой вопрос:

Как получить справку по команде ssh? ответ

Основные команды для работы с файлами

Как посмотреть текущую рабочую директорию? ответ

Как сменить рабочую директорию? ответ

например, cd /var/www/

Как перейти в родительскую директорию? ответ

Как вернуться в домашнюю директорию? ответ

cd — вызов команды без аргументов приводит к переходу в директорию, указанную в переменной окружения $HOME.

Как вывести список файлов в директории? ответ

ls — вывести список файлов в текущей директории

ls /var/log/ — вывести список файлов в директории /var/log/

ls -l — вывести подробный список файлов

Как посмотреть вермя последнего изменения/доступа к файлу /tmp/test.txt? ответ

ls -l /tmp/test.txt — посмотреть время последнего изменения файла

ls -lu /tmp/test.txt — посмотреть время последнего доступа к файлу

stat /tmp/test.txt — показывает 3 временные метки:

  • Access — время последнего доступа к файлу (любое открытие файла для чтения: просмотр, поиск по файлу и т.п.)
  • Modify — время последнего изменения файла
  • Change — время изменения статуса файла (прав доступа, владельца, изменение файла).

Как создать новую директорию test? ответ

Как создать пустой файл? ответ

Существует множество способов создать пустой файл. Вот некоторые из них:

  • cp empty.txt empty1.txt — скопировать любой другой пустой файл
  • touch empty.txt — «потрогать» несуществующий файл
  • :> empty.txt — перенаправить в файл вывод команды, которая ничего не делает
  • vi empty.txt, затем сразу :wq — открыть файл и сохранить его пустым

Как создать файл /tmp/2mb.txt размером 2Mb? ответ

dd if=/dev/zero of=2mb.txt bs=1M count=2

если в предыдущей команде задать bs=1MB, то файл будет размером 2_000_000 байт.

в данном примере файл будет заполнен нулевыми байтами (0x00).

Как узнать тип файла? ответ

$ file empty.txt empty.txt: empty $ file /usr/bin/perl /usr/bin/perl: symbolic link to `perl5.16.3′ $ file /usr/bin/perl5.16.3 /usr/bin/perl5.16.3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, stripped $ file index.html index.html: HTML document, UTF-8 Unicode text, with very long lines

Как переименовать файл? ответ

mv имя_файла новое_имя_файла

Как удалить файл/директорию? ответ

rm имя_файла — удалить файл

rmdir имя_директории или rm -r имя_директории — удалить директорию

shred -uv имя_файла — удаление файла для параноиков (без опции -u просто перезаписывает содержимое файла мусором)

Как создать символическую/жесткую ссылку на файл/директорию? ответ

ln -s имя_файла имя_ссылки — создаём символическую ссылку на файл

ln -s имя_директории имя_ссылки — создаём символическую ссылку на директорию

ln имя_файла имя_жесткой_ссылки — создаём жесткую ссылку на файл

в обычных условиях создать жесткую ссылку на директорию невозможно

Как посмотреть размер файла? ответ

ls -l имя_файла — размер файла в байтах

ls -lh имя_файла — размер файла в более привычном формате

Как как узнать размер директории? ответ

du -s имя_директории — размер места в килобайтах (блоках по 1024 байт), которое директория со всем своим содержимым занимает на диске

du -sh имя_директории — в более привычном формате

Как узнать сколько свободного места осталось на разделе диска? ответ

при помощи команды df место_монтирования_раздела или просто df

df -h выведет размеры не в килобайтах, а в более удобном формате.

df -ih выведет информацию о количестве использованных и свободных инодов

Работа с текстовыми файлами

Как сравнить два текстовых файла? ответ

diff файл_1 файл_2 или diff -a файл_1 файл_2

Как посчитать количество строк в текстовом файле? ответ

или awk ‘END ’ имя_файла

а можно открыть файл в текстовом редакторе vi имя_файла и посмотреть кол-во строк CTRL+G

Как вывести на экран отсортированные строки текстового файла? ответ

Как удалить дубли строк из файла? ответ

sort -u имя_файла

или sort имя_файла | uniq

Как дописать содержимое одного текстового файла в конец второго? ответ

cat файл_1 >> файл_2

Как разбить текстовый файл на несколько по 100 строк в каждом? ответ

split -l 100 имя_файла 100-

в результате работы этой команды в директории появятся файлы 100-aa, 100-ab… содержащие по 100 строк из исходного файла. Если исходный файл содержал число строк не кратное 100, то в последнем файле будет меньше ста строк.

Как вывести на экран первые 30 строк файла? ответ

head -n30 имя_файла

Как вывести на экран последние 30 строк файла? ответ

tail -n30 имя_файла

Как посмотреть содержимое текстового файла? ответ

cat имя_файла — вывести файл на экран целиком

more имя_файла — выводить файл на экран постранично (пробел — перейти к следующей странице, enter — на строку вниз)

Читайте также:  Система лицензирования windows server 2019

less имя_файла — выводить файл на экран с возможностью перемещаться по нему вверх и вниз

vi имя_файла или nano имя_файла или emacs имя_файла — открыть файл в любимом текстовом редакторе

Как вывести на экран строки текстового файла /tmp/file.txt начинающиеся со слова ‘START’? ответ

*!G4;:%#`START/ p’ имя_файла

Как вывести на экран содержимое текстового файла без однострочных комментариев (строка комментария начинается с символа #)? ответ

Как среди нескольких файлов в директории найти те, которые содержат слово ‘test’? ответ

grep ‘test’ * — поиск во всех файлах в текущей директории

grep ‘test’ файл_1 файл_2 файл_3 — поиск только в указанных файлах

Источник

Лабораторная работа 1. Изучение базовых команд Linux.¶

Основные теоретические сведения¶

Цель: Первичное знакомство с командным интерпретатором. Изучение базовых команд операционной системы Linux.

Теоретическая часть:

Среди всех элементов операционной системы Linux самым важным, является командная строка (Терминал). Оболочка во многом определяет богатые возможности и гибкость операционной системы Linux. С помощью командной строки можно выполнять действия, которые были бы немыслимы при работе с графическим пользовательским интерфейсом. Независимо от того, KDE или GNOME, оказывается, что многие действия гораздо быстрее и эффективнее выполнить, пользуясь только командной строкой. Освоение Linux стоит начинать с изучения средств командной оболочки.

Файлы и ничего кроме файлов

Все, с чем Вы встретитесь в операционной системе Linux, — это файлы. Абсолютно все! Очевидно, что текстовый документ — это файл. Изображения, аудиоданные в формате МР3 и видеофрагменты — это несомненно файлы. Каталоги — это тоже файлы, содержащие информацию о других файлах. Дисковые устройства — это большие файлы. Сетевые соединения тоже файлы. Даже исполняемый процесс — это файл. С точки зрения операционной системы Linux файл представляет собой поток битов или байтов. Система не интересуется тем, что означает каждый байт. Это забота конкретных программ, выполняющихся в операционной системе Linux. Для операционной системы Linux и документ, и сетевое соединение всего лишь файлы. Как обрабатывать текстовый документ, знает редактор, а сетевое приложение умеет работать с сетевым соединением.

В отличие от Windows и МасOS в операционной системе Linux имена файлов чувствительны к регистру символов. В частности, Вы можете встретить в одном каталоге все три файла которые приведены ниже в качестве примера:

С точки зрения файловой операционной системы Linux — это различные имена файлов. Если вы попытаетесь создать файлы с этими же именами в Windows или МасOS, то вероятнее всего попытка увенчается провалом, и система предложит Вам выбрать другое имя для файла.

Чувствительность к регистру символов также означает, что при вводе команд они должны в точности совпадать с именами файлов, поддерживающих их. Так, например, удаляя файл с помощью команды rm, нельзя вводить RM, Rm или rM. Надо также следить за написанием имен, задаваемых в качестве параметров. Если вы захотите удалить файл «SIT.txt», а укажете имя Sit.txt, вы лишитесь совсем не того файла, с которым предполагали расстаться.

Список специальных символов которые не рекомендуется использовать в названиях файлов.

Групповые операции:

Предположим, что в одном из каталогов на вашем компьютере содержатся сто файлов с изображениями и два текстовых файла. Ваша задача удалить все файлы с изображениями за исключением двух текстовых файлов. Удалять файлы по одному — это утомительное занятие. В операционных системах Linux для автоматизации данного процесса можно применять символы групповых операций. Групповые операции задаются посредством звездочки (*), знака вопроса (?) и квадратных скобок ( [ ] ).

Пример использования групповых операций:

Групповая операция с применение » * » — отмечает любое (в том числе нулевое) количество любых символов.

Групповая операция с применение » ? «. Символ » ? » — соответствует одному произвольному символу.

Групповая операция с применение » [] «. Квадратные скобки позволяют задавать один символ из набора или символ, принадлежащий определенному диапазону.

Консольные команды:

  • $ pwd — определить текущий каталог.
  • $ cd [имя каталога] — осуществить переход в заданный каталог.
  • $ ls [имя каталога] — просмотреть список файлов и подкаталогов.
  • $ mkdir [имя каталога] — создать каталог с заданным именем.
  • $ cp — скопировать файл «имя файла 1» в файл «имя файла 2», например: cp first.txt copy1.txt.
  • $ mv — переименовать файл «имя файла 1» в файл «имя файла 2», например: mv first.txt orig.txt.
  • $ ln «имя файла» «имя ссылки» — создать жёсткую ссылку «имя ссылки» на файл «имя файла». Пример: ln orig.txt copy2.txt.
  • $ ln -s «имя файла» «имя ссылки» — создать символическую ссылку «имя ссылки» на файл «имя файла». Пример: ln -s orig.txt copy2.txt.
  • $ rm — удалить файл.
  • $ touch — создание файла.
  • $ man — получение справочной документации о выбранной команде.

Задания к лабораторной работе¶

  • Откройте терминал.
  • Ознакомьтесь с возможностями команды pwd c помощью команды man:
  • Определите текущий каталог, в котором вы находитесь командой pwd:
  • Ознакомьтесь с возможностями команды cd c помощью команды man:
  • Перейдите в корневой каталог командой cd
  • Ознакомьтесь с возможностями команды ls c помощью команды man:
  • Просмотрите содержимое корневого каталога командой ls:
  • Сделайте копию экрана для использования в отчете по лабораторной работе .
  • Вернитесь в домашний каталог, используя команду cd без параметров:
  • Ознакомьтесь с возможностями команды mkdir c помощью команды man:
  • Создайте каталог «test», используя команду mkdir:
  • Перейдите в каталог «test», используя команду cd:
  • Просмотрите содержимое каталога, используя команду ls:
  • Создайте каталог «test2», используя команду mkdir:
  • Ознакомьтесь с возможностями команды touch c помощью команды man:
  • Создайте файл «text» в каталоге «test2» используя команду touch:
  • Ознакомьтесь с возможностями команды mv c помощью команды man:
  • Переименуйте файл «text» в «textSIT» используя команду mv
  • Ознакомьтесь с возможностями команды cp c помощью команды man:
  • Скопируйте файл «textSIT» в каталог «test2» под именем «copy.txt», используя команду cp:
  • Ознакомьтесь с возможностями команды ln c помощью команды man:
  • Создайте жесткую ссылку «link» на файл «copy.txt» используя команду ln:
  • Создайте символическую ссылку «simlink» на файл «copy.txt» используя команду ln:
  • Просмотрите результаты в текущем каталоге при помощи команды ls с аргументами la:
  • Сделайте копию экрана для использования в отчете по лабораторной работе .
  • Удалите созданные вами файлы и ссылки в лабораторной работе используя команду rm
  • Сделайте копию экрана для использования в отчете по лабораторной работе .
Читайте также:  Half life linux русификатор

Вопросы к лабораторной работе¶

  1. Чем отличается вывод команд ls -F и ls -la?
  2. С помощью какой команды и как можно переместить файл в другой каталог?
  3. Какие действия вы совершаете, нажимая на кнопки «стрелка вверх» и «стрелка вниз»?
  4. Куда вы переходите, выполнив команду cd без параметров?
  5. Как посмотреть, какие еще параметры можно задать команде ls?
  6. Что такое «жесткая ссылка»?
  7. Что такое «символическая ссылка»?
  8. Как осуществить просмотр подкаталогов и их содержимого ?
  9. Как осуществить вывод содержимого каталога с запятыми в качестве разделителя?
  10. Как осуществить просмотр скрытых файлов в домашнем каталоге?
  11. Как осуществить создание нового каталога и необходимых подкаталогов рекурсивно?
  12. Как осуществить рекурсивное копирование всех файлов из одного каталога в другой?
  13. Как осуществить рекурсивное копирование всех файлов и подкаталогов из одного каталога в другой?
  14. Как рекурсивно удалить все файлы и подкаталоги в определенном каталоге?

Составьте отчет о выполнении лабораторной работы.

Включите в него копии экрана и ответы на вопросы лабораторной работы.

© Copyright 2016, Пантюхин Игорь Сергеевич, Университет ИТМО.

Источник

Отчёт с Олимпиады по Linux + задания с ответами

7 декабря прошел финальный тур Олимпиады по GNU/Linux среди студентов и молодых специалистов. Вот топик с анонсом: первый тур проводился дистанционно, второй — очно в Москве. Ниже отчёт и примеры заданий заочного и очного туров.


Геннадий Мазуров занял первое место.

Победители:

  • I место — Геннадий Мазуров
  • II место — Бова Боваев
  • III место — Вячеслав Карпухин

Отчёт

Мы уже далеко не первый год проводим Олимпиады по системному администрированию, но в этот раз события развивались несколько стремительнее, чем обычно. После топика с анонсом мы поймали хабраэффект, который, в частности, выразился в том, что формат из межвузовского очень быстро перерос в международный. Часть претендентов просилась участвовать вне конкурса – из интереса. Мы решили никого не ограничивать, и допустили к участию в первом туре всех желающих. По нашим подсчетам примерно 60% участников пришло с Хабра, остальные узнавали про олимпиаду в социальных сетях, а также из объявлений в университетах. Многие звали друзей.

Из-за того, что было много участников не из Москвы, нам пришлось на ходу менять даты второго тура (не все успевали приехать) и некоторые правила. Возникли также разночтения в трактовке, кто такие “молодые специалисты”. Мы ориентировались на людей, закончивших ВУЗы 1-3 года назад (то есть примерно до 25 лет), но нечетко это проговорили. Я прошу прощения у всех участников, которые из-за этого могли ощутить некоторую скомканность организации. Второй раз на эти грабли не наступим.

Мы намерено упростили задания первого тура, чтобы не возник отпугивающий эффект, как это было год назад, когда до финала добрались только 12 человек. В этом году на второй тур мы отобрали 30 лучших участников, из них к нам 7 декабря смогли приехать 22 человека. Зато, по мнению нашего победителя, Геннадия Мазурова, который уже принимал участие в нашей олимпиаде 2 года назад, на этот раз во втором туре задания были существенно сложнее, чем ранее.

Геннадий вышел вперёд с большим отрывом. В первом туре можно было набрать максимум 30 баллов, во втором – 70. Победитель набрал по итогам двух туров 80 баллов (в среднем у участников было по 45 баллов). Геннадий живет в Москве, он закончил МГТУ им Баумана и уже работает. Второе место завоевал Бова Боваев (66 баллов), который, можно сказать, пробился к нам на финал: его допустили участвовать в первом туре вне конкурса, а потом уже разобрались с наличием-отсутствием у него высшего образования. Бова родом из Элисты (Калмыкии), заканчивает университет и сейчас также живет в Москве. Третье место занял Вячеслав Карпухин из Уфы (63 балла).

О формате проведения второго тура участники могли догадаться: мы всячески давали понять, что наш финал будет похож на экзамены RedHat. Готовиться можно было по Exam Objectives на сайте RedHat. Но в отличие от экзаменов RedHat мы разрешали пользоваться интернетом. Во втором туре было 20 заданий с разными баллами, которые нужно было выполнить за 4 с половиной часа. После подведения итогов мы разослали всем финалистам правильные варианты решения для заданий второго тура.

Читайте также:  Windows 10 настройка вайфая

Всех приехавших к нам в гости во время проверки работ развлекли экскурсией по офису и одному из наших дата-центров. После олимпиады несколько участников выразили желание у нас работать, и сейчас мы рассматриваем их резюме. Но появления большого количества новых сотрудников после Олимпиады мы не ждем — высокие результаты, как правило, показывают те, кто уже где-то работает: понятно, что наличие практического опыта дает большое преимущество. Наша Олимпиада, скорее, ориентирована на других людей: на тех, кто пришел, попробовал и понял, что есть ещё чему учиться — и решил совершенствоваться. На одной из прошлых Олимпиад у нас был участник, студент Бауманки, занявший далеко не призовое место. Но в очередной год он снова участвовал и завоевал первое место – хорошо прокачался.

Кстати, всех, кто в первом туре набрал более 60%, мы готовы рассматривать как соискателей без входного технического собеседования.

Задания первого тура с ответами

Выборочные задания второго тура, вызвавшие наибольшие затруднения

Исходная ситуация: в вашем распоряжении находятся 2 виртуальные машины с установленной CentOS 6.3 x64, расположенные в одном VLAN. Имена машин — node1 и node2. SELinux на момент проверки выполнения заданий должен работать в режиме targeted enforcing. Перед проверкой заданий машины будут перезагружены.

7. Создайте на node1 каталог /pub. Корневая файловая система, которой принадлежит каталог /pub, должна быть смонтирована с опциями по умолчанию. Каталог /pub предназначен для совместной работы пользователей user1 и user2. Необходимо, чтобы каждый из них мог создавать в /pub файлы, а другой пользователь мог их редактировать. Остальные пользователи не должны иметь доступа в данный каталог.

Это задание про SETGID directory, которые используются для организации совместной работы пользователей. Правильно это задание выполнили только 2 участника.

mkdir /pub
chown root:grp1 /pub
chmod u=rwx,g=rws,o= /pub

SETGID (s) обеспечивает, что все файлы и каталоги, которые создаются внутри /pub, имеют ту же группу, что и /pub, т.е. grp1.
Далее надо было удостовериться, что для пользователей grp1 параметр umask=0002, чтобы по умолчанию вновь создаваемые объекты разрешали группе писать g=rwx.

11. На node1 предоставьте каталог /d01 и его подкаталоги в общий доступ по NFS только на чтение для всех адресов сети. Убедитесь, что содержимое всех каталогов доступно с узла node2.

С этим заданием никто из участников на 100% не справился.

Первая хитрость заключалась в том, что /d01 содержит точки монтирования других файловых систем, которые по умолчанию не экспортируются. Поэтому предпочтительный вариант решения – добавить в /etc/exports отдельные записи для /d01, /d01/public и /d01/private.

Еще один вариант – использовать при экспорте /d01 опцию nohide, однако в реальной жизни ее следует использовать с осторожностью (man 5 exports)

Вторая хитрость, которая поджидала на пути, это запись:

Также надо было не забыть включить автозапуск служб:

и открыть порты NFS в файрволле. В принципе, достаточно было разрешить все подключения, т.к. в других заданиях ограничения не накладываются:

iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state —state NEW -j ACCEPT

15. На node2 используйте часть неразмеченного пространства диска размером 2ГБ и подключите его по протоколу iSCSI к node1. На узле node1 это пространство должно быть доступно в виде блочного устройства.

С этим заданием справился только один участник.

Перезапустить службу tgtd и активировать ее автозагрузку:

service tgtd restart
chkconfig tgtd on

Открыть порт iscsi-target 3260/tcp с помощью iptables.
На node1 убедиться, что установлен пакет iscsi-initiator-utils, обнаружить target:

iscsiadm -m discovery -t st -p 10.1.x.2:3260
Starting iscsid: [ OK ]
10.1.x.2:3260,1 iqn.2012-12.com.example:server.target0

Проверить, что доступен новый диск:

17. На node2 установите и настройте web-сервер с двумя виртуальными сайтами — www.example.com и www.test.net. Сайт www.example.com должен быть доступен при обращении к серверу по 8088 порту, а www.test.net — по 8088 и 443. web-сервер должен автоматически запускаться при старте системы.

Это задание вызвало много затруднений, видимо, из-за зависимости от настроек SELinux. Про SSL в задании прямо не оговаривалось, но мы заложились на очевидность такого требования.

Конфигурация virtual hosts в минималистичном варианте может быть такой (можно там же в httpd.conf):

По SSL-части нужно было изменить в /etc/httpd/conf.d/ssl.conf:

Остальное по умолчанию.
Поскольку SELinux работает в режиме targeted enforcing, apache не может использовать порт 8088, этого порта нет среди разрешенных для него политикой:

semanage port -l | grep -w http_port_t
http_port_t tcp 8080, 80, 443, 488, 8008, 8009, 8443

добавляем для контекста http_port_t еще один разрешенный порт (утилита semanage входит в пакет policycoreutils-python, его нужно было установить):

semanage port -a -t http_port_t -p tcp 8088

После этих действий можно запустить apache и установить автозагрузку:

service httpd start
chkconfig httpd on

Также необходимо было открыть порты 8088 и 443 с помощью iptables.

Источник

Оцените статью