В результате выполнения задания вы:
- познакомитесь с возможностями некоторых команд (grep, wc), чтобы в дальнейшем обращать внимание на схожие особенности команд;
- попрактикуетесь с перенаправлением потоков ввода, вывода, ошибок, что поможет грамотно использовать функционал в скриптах;
- поработаете с файловой системой /proc как примером размещения информации о процессах.
- Создайте .md-файл для ответов на вопросы задания в своём репозитории, после выполнения прикрепите ссылку на него в личном кабинете.
- Любые вопросы по решению задач задавайте в чате учебной группы.
Ответьте на вопросы:
-
Какого типа команда
cd
? Попробуйте объяснить, почему она именно такого типа: опишите ход своих мыслей и поясните, если считаете, что она могла бы быть другого типа. -
Какая альтернатива без pipe для команды
grep <some_string> <some_file> | wc -l
?Подсказка.
man grep
поможет в ответе на этот вопрос.Изучите документ о других подобных некорректных вариантах использования pipe.
-
Какой процесс с PID
1
является родителем для всех процессов в вашей виртуальной машине Ubuntu 20.04? -
Как будет выглядеть команда, которая перенаправит вывод stderr
ls
на другую сессию терминала? -
Получится ли одновременно передать команде файл на stdin и вывести её stdout в другой файл? Приведите работающий пример.
-
Получится ли, находясь в графическом режиме, вывести данные из PTY в какой-либо из эмуляторов TTY? Сможете ли вы наблюдать выводимые данные?
-
Выполните команду
bash 5>&1
. К чему она приведёт? Что будет, если вы выполнитеecho netology > /proc/$$/fd/5
? Почему так происходит? -
Получится ли в качестве входного потока для pipe использовать только stderr команды, не потеряв отображение stdout на pty?
Напоминаем: по умолчанию через pipe передаётся только stdout команды слева от|
на stdin команды справа. Это можно сделать, поменяв стандартные потоки местами через промежуточный новый дескриптор, который вы научились создавать в предыдущем вопросе. -
Что выведет команда
cat /proc/$$/environ
? Как ещё можно получить аналогичный по содержанию вывод? -
Используя
man
, опишите, что доступно по адресам/proc/<PID>/cmdline
,/proc/<PID>/exe
. -
Узнайте, какую наиболее старшую версию набора инструкций SSE поддерживает ваш процессор с помощью
/proc/cpuinfo
. -
При открытии нового окна терминала и
vagrant ssh
создаётся новая сессия и выделяется pty.
Это можно подтвердить командойtty
, которая упоминалась в лекции 3.2.Однако:
vagrant@netology1:~$ ssh localhost 'tty' not a tty
Почитайте, почему так происходит и как изменить поведение.
-
Бывает, что есть необходимость переместить запущенный процесс из одной сессии в другую. Попробуйте сделать это, воспользовавшись
reptyr
. Например, так можно перенести вscreen
процесс, который вы запустили по ошибке в обычной SSH-сессии. -
sudo echo string > /root/new_file
не даст выполнить перенаправление под обычным пользователем, так как перенаправлением занимается процесс shell, который запущен безsudo
под вашим пользователем. Для решения этой проблемы можно использовать конструкциюecho string | sudo tee /root/new_file
. Узнайте, что делает командаtee
и почему в отличие отsudo echo
команда сsudo tee
будет работать.
В личном кабинете отправлена ссылка на .md файл в вашем репозитории.
Зачёт:
- выполнены все задания;
- ответы даны в развёрнутой форме;
- приложены соответствующие скриншоты и файлы проекта;
- в выполненных заданиях нет противоречий и нарушения логики.
На доработку:
- задание выполнено частично или не выполнено вообще;
- в логике выполнения заданий есть противоречия и существенные недостатки.