From 29babcee44ad55b50b9bf749e3b9b8092068d869 Mon Sep 17 00:00:00 2001 From: dannc Date: Thu, 10 Feb 2022 19:14:23 +0700 Subject: [PATCH] homework 3.2 add answers 12-14 --- src/homework/3.2/readme.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/homework/3.2/readme.md b/src/homework/3.2/readme.md index b32d60c..be9298b 100644 --- a/src/homework/3.2/readme.md +++ b/src/homework/3.2/readme.md @@ -77,4 +77,34 @@ ls -la /tmp/wrong_dir 2>&1 1>&5 | less 11. Узнайте, какую наиболее старшую версию набора инструкций SSE поддерживает ваш процессор с помощью `/proc/cpuinfo` -Выполним команду `cat /proc/cpuinfo | grep sse`. В выводе можно найти такие версии, как `sse`, `sse2`, `ssse3`, `sse4_1`, `sse4_2`. \ No newline at end of file +Выполним команду `cat /proc/cpuinfo | grep sse`. В выводе можно найти такие версии, как `sse`, `sse2`, `ssse3`, `sse4_1`, `sse4_2`. +Таким образом, ответом на вопрос будет `sse4_2`. + +12. Почему команда `ssh localhost 'tty'` внутри виртуальной машины выдаёт ошибку `not a tty` + +Изначально, нужно понять, что происходит при выполнении исходной команды. Судя по мануалу команды `ssh`, +`localhost` является пунктом назначения, куда будет произведено подключение, +а `tty` - это команда, которая будет выполнена на удалённом сервере. Из того же мануала следует, +что при указании команды будет произведено выполнение команды, а не логин пользователя. То есть, +команда будет выполнена без выделения отдельной сессии для пользователя, +а значит команда `tty` в данном случае действительно не сможет найти запущенный экземпляр терминала. + +Изменить поведение можно принудительно заставив `ssh` создать новую сессию, для этого нужно добавить ключ `-t`, +то есть выполнить команду `ssh -t localhost 'tty'`. + +13. Необходимо переместить запущенный процесс из одной сессии в другую с использованием утилиты `reptyr` + +На виртуальной машине утилита не установлена, поэтому установим её `sudo apt install reptyr`. +В качестве примера запустим утилиту `screen`, которая запустит новую сессию внутри себя. +В другом подключении через ssh к виртуальной машине запустим "долгий" процесс, например, `less .bash_history`. +Внутри сессии `screen` найдём PID процесса `less`, для этого выполним команду `lsof | grep less`. +Затем выполним команду `reptyr `. + +К сожалению, полностью перенести процесс не получилось, есть какие-то странные ошибки по типу `Operation not permitted` +или "зависания" второго терминала, если выполнить команду от администратора. + +14. Узнайте что делает команда `tee` и почему в отличие от `sudo echo` команда с `sudo tee` будет работать. + +Команда `tee` читает стандартный поток ввода и пишет его в стандартный поток вывода и файлы. +В отличие от `echo` перенаправление идёт в рамках одного процесса, именно поэтому `sudo tee` будет работать, +так как процесс берёт стандартный поток ввода от текущего пользователя, затем начинает запись с повышенными привилегиями. \ No newline at end of file