Skip to content

Latest commit

 

History

History
102 lines (53 loc) · 7.45 KB

File metadata and controls

102 lines (53 loc) · 7.45 KB

Домашнее задание к занятию "3.2. Работа в терминале, лекция 2"

1.Какого типа команда cd? Попробуйте объяснить, почему она именно такого типа; опишите ход своих мыслей, если считаете что она могла бы быть другого типа.

Встроенная команда Сhange Directory для смены директории. Это не внешняя программа и не системный вызов. Хотя могла бы быть.

Если бы был системный вызов, тогда команда обращалась бы к ядру. Если бы внешней программой, тогда для вызова надо было бы менять директорию вызова. Самый оптимальный вариан встороенная команда bash.

  1. Какая альтернатива без pipe команде grep <some_string> <some_file> | wc -l? man grep поможет в ответе на этот вопрос. Ознакомьтесь с документом о других подобных некорректных вариантах использования pipe.

grep -c image

  1. Какой процесс с PID 1 является родителем для всех процессов в вашей виртуальной машине Ubuntu 20.04?

image процесс 993

  1. Как будет выглядеть команда, которая перенаправит вывод stderr ls на другую сессию терминала? 1 терминал image

2 терминал image

  1. Получится ли одновременно передать команде файл на stdin и вывести ее stdout в другой файл? Приведите работающий пример.

image cat<file.log | tee>file.log3 cat<file.log > file.log3

  1. Получится ли находясь в графическом режиме, вывести данные из PTY в какой-либо из эмуляторов TTY? Сможете ли вы наблюдать выводимые данные? получится

image image

  1. Выполните команду bash 5>&1. К чему она приведет? Что будет, если вы выполните echo netology > /proc/$$/fd/5? Почему так происходит?

bash 5>&1 - Создаст дескриптор с 5 и перенатправит его в stdout echo netology > /proc/$$/fd/5 - выведет в дескриптор 5

  1. Получится ли в качестве входного потока для pipe использовать только stderr команды, не потеряв при этом отображение stdout на pty? Напоминаем: по умолчанию через pipe передается только stdout команды слева от | на stdin команды справа. Это можно сделать, поменяв стандартные потоки местами через промежуточный новый дескриптор, который вы научились создавать в предыдущем вопросе. image

  2. Что выведет команда cat /proc/$$/environ? Как еще можно получить аналогичный по содержанию вывод? Переменные окружения команда printenv

10.Используя man, опишите что доступно по адресам /proc//cmdline, /proc//exe.

image Путь до файла процесса,содержимое командной строки, которой был запущен процесс

image Символическая ссылка на выполнимый файл запущенной программы

11 Узнайте, какую наиболее старшую версию набора инструкций SSE поддерживает ваш процессор с помощью /proc/cpuinfo. image sse4 image sse 4.2

12 При открытии нового окна терминала и vagrant ssh создается новая сессия и выделяется pty. Это можно подтвердить командой tty, которая упоминалась в лекции 3.2. Однако:

vagrant@netology1:~$ ssh localhost 'tty' not a tty

image

Почитайте, почему так происходит, и как изменить поведение.

13 Бывает, что есть необходимость переместить запущенный процесс из одной сессии в другую. Попробуйте сделать это, воспользовавшись reptyr. Например, так можно перенести в screen процесс, который вы запустили по ошибке в обычной SSH-сессии.

image image

14 sudo echo string > /root/new_file не даст выполнить перенаправление под обычным пользователем, так как перенаправлением занимается процесс shell'а, который запущен без sudo под вашим пользователем. Для решения данной проблемы можно использовать конструкцию echo string | sudo tee /root/new_file. Узнайте что делает команда tee и почему в отличие от sudo echo команда с sudo tee будет работать.

image

tee в сочетании с sudo записывать в файлы, принадлежащие другим пользователям