UNIX и Linux и разница между ними — Характеристики Linux — Что такое LILO — Shell — Swap — Процессы в Linux — Как их посмотреть — Как завершить процесс — Команда ps — Демоны — man — Текущий каталог — Создать каталог с правами — Удалить каталог — Навигация по каталогам — Корневой — Абсолютный и относительный путь — su — Права — Просмотр каталога — Расширения файлов — file — touch — cp и mv — head и tail — sed — awk — wc — cat и tac — more и less — du — Алиасы — shred — find и locate — Ожидания — zip и unzip — Расшифровка разрешений — chmod — chown — sort — Дубликаты — Мягкие и жесткие ссылки
Что такое UNIX?
UNIX — это многопользовательская многозадачная компьютерная операционная система, разработанная в Bell Laboratories Кеном Томпсоном и Деннисом Ритчи. Это проприетарное коммерческое программное обеспечение, код которого недоступен. Различными вариантами UNIX являются HP Unix, Solaris Unix, IBM AIX и BSD.
Unix-подобными операционными системами являются Apple macOS и iOS.
Что такое Linux?
Linux — операционная система с открытым исходным кодом, относится к типу UNIX-подобных ОС. Разработана Линусом Торвальдсом, в честь которого названа. Хотя Linux является отдельной операционной системой со своими особенностями, в целом, поскольку она создана на основе UNIX — команды и синтаксис программ UNIX и Linux в основном схожи.
Среди дистрибутивов Linux можно назвать Ubuntu, RedHat, Fedora и многие другие, около шестисот.
Опишите базовые характеристики Linux
Linux можно охарактеризовать следующим образом:
- Многопользовательская — Linux позволяет нескольким пользователям одновременно обращаться к одним и тем же ресурсам компьютера, таким как память, рабочие программы, жесткий диск и т.д.
- Многозадачность — Многозадачность позволяет одновременно работать нескольким (многим) приложениям или программам.
- Безопасность — Linux обеспечивает безопасность путем аутентификации (имя пользователя-пароль), авторизации (путем предоставления прав на чтение-запись-выполнение различных файлов), шифрования (путем шифрования файлов таким образом что например только законный владелец файла может видеть его содержимое).
- Переносимость — Linux поддерживает переносимость (портабельность), позволяя устанавливать эту ОС на различные аппаратные платформы.
- Открытый исходный код — и последняя, немаловажная характеристика: эта ОС (в отличие например от Windows и macOS) имеет открытый исходный код, доступный каждому желающему его улучшить/исправить/усовершенствовать.
В чем разница между UNIX и Linux?
UNIX | Linux |
---|---|
UNIX является проприетарной операционной системой. | Linux — операционная система с открытым исходным кодом. |
Вендоры (владельцы) различных вариантов UNIX предлагают свои дистрибутивы по разным ценам. | Большинство дистрибутивов Linux распространяются абсолютно бесплатно (а есть и платные дистрибутивы специфической направленности, особенно для юрлиц). |
Дистрибутивы — HP Unix, Solaris Unix, IBM AIX, BSD и много других | Дистрибутивы — Fedora, Ubuntu, Debian, Linux Mint, RedHat и др. |
В основном используется хардкорный CLI — интерфейс командной строки. | Есть как GUI, графический интерфейс пользователя, так и интерфейс с командной строки. |
Что такое загрузчик Linux (LILO)?
Linux-загрузчик (Linux loader = LILO) — загрузчик Linux, который при запуске компьютера загружает операционную систему в память. В настоящее время он считается, наверное, устаревшим, вытесняется загрузчиками GRUB (Grand Unified Boot loader) и GRUB2.
Что такое Shell?
Оболочка (шелл, Shell) — программа, выполняющая роль интерфейса между пользователем и операционной системой, позволяющая пользователю выполнять команды, например, Bourne shell (sh), bash (Bourne Again Shell) и т.д.
Что такое своп-область, для чего предназначена?
Своп-область (или пространство подкачки) — это часть жесткого диска, которая задействуется, когда системе требуется больше памяти, а оперативная память уже заполнена. В таких случаях неактивные в данный момент страницы памяти перемещаются в пространство подкачки, чтобы освободить оперативку.
Что такое процесс в Linux?
Процесс — это экземпляр (instance) выполняемой программы. Существует два вида процессов в Linux:
- Процессы переднего плана (также “интерактивные” или foreground-процессы) — процесс переднего плана, запущенный пользователем, он выполняется “на переднем плане” — то есть пользователь видит его, и пользователь должен дождаться его завершения, прежде чем выполнить любую другую команду (например запустить команду в терминале).
- Фоновые процессы — фоновый процесс выполняется в фоновом режиме, поэтому пользователь может выполнять другие команды до того, как фоновый процесс будет завершен. Добавление
'&'
после любой команды превращает ее в фоновый процесс. Также, фоновый процесс может быть “выведен на передний план”, то есть сделан интерактивным с помощью команды'fg'
с указанием идентификатора задания.
Как посмотреть все процессы, выполняющиеся на компьютере под Linux?
При помощи утилиты Top можем вывести все запущенные процессы. Также, запуская утилиту top
, получаем список важных атрибутов процессов, типа PID (идентификатор процесса), идентификатор пользователя (UID), идентификатор родительского процесса, используемая виртуальная и физическая память, статус процесса, загрузка процессора, время запуска процесса, и т.д.
Как завершить запущенный процесс в Linux?
Команда kill
предназначена для завершения запущенного процесса в Linux. Существует два варианта завершения процесса —
Kill PId
— генерируется сигнал SIGTERM, задающий плавное завершение процесса с его id — PIdKill -9 PId
— генерируется сигнал SIGKILL, задающий принудительное завершение процесса с указанным PId.
Для чего предназначена команда ‘ps’? Чем она отличается от команды top?
Ps расшифровывается как статус процесса (Process Status). Она предоставляет информацию о запущенных процессах.
#Вывод данных о процессе с PId - 12 ps -p 12 #Показать все процессы ps -ef
Она отличается от команды top
тем, что top показывает непрерывное интерактивное использование процессов в реальном времени. А ps
выводит “снимок”-снепшот процессов и чаще используется для неинтерактивного использования в скриптах.
Что такое демон в Linux?
Демонами принято называть процессы, запускаемые в фоновом режиме либо в заданное время, либо в случае срабатывания триггера. По традиции имена демонов в Linux заканчиваются буквой 'd'
.
Для чего нужна команда man?
Команда man
предназначена для получения данных об использовании команды, конфигурационного файла или демона с помощью страниц man (так называемый пейджер справочных страниц) или руководства пользователя. Пример —
man ls
Выводом этого будет страница мануала по команде ls.
Как вывести на печать текущий рабочий каталог в Linux?
Команда pwd используется для отображения текущего каталога (Print Working Directory) —
$ pwd /c/Users/Testengineer
Как создать каталог в Linux и дать ему полный доступ?
С помощью mkdir
создаем каталог, а с помощью chmod
— задаем права доступа.
mkdir directoryName chmod 777 directoryName
Или же, используем опцию —m
(режима) команды mkdir
и выполняем эту операцию в одной команде —
mkdir -m 777 directoryName
Как удалить каталог, в котором есть файлы?
Как известно, при попытке удалить не пустой каталог командой rmdir directoryName
увидим сообщение о невозможности удалить — «rmdir: failed to remove ‘newFolder’: Directory not empty».
Для удаления такого каталога необходимо использовать опцию -r
команды rm
, которая рекурсивно удаляет каталог и его содержимое (рекурсивно означает, что действие удаления будет произведено над самим каталогом, его подкаталогами, подкаталогами его подкаталогов и т. д).
rm -r directoryName
Как изменить текущий каталог в Linux? Как перейти в родительский каталог, корневой каталог и предыдущий каталог?
Используя команду cd
, можем изменить текущий каталог в Linux. Пример —
cd directoryName
Переход в родительский каталог, то есть на один уровень выше —
cd ..
Переход в домашний каталог пользователя —
cd
Или так —
cd ~
Переход к предыдущему каталогу —
cd -
Что такое корневой каталог?
В Linux используется иерархическая, или древовидная файловая система. Рут-каталог, или корневой, является родительским каталогом иерархии файловой системы, в которую входят все остальные каталоги. Он обозначается прямой косой чертой (слэшем) ‘/’.
Что такое абсолютный и относительный путь?
- Абсолютный путь — это путь к файлу или каталогу из корневого каталога, т.е. от ‘/’.
- Относительный путь — это путь к файлу или каталогу из текущего рабочего каталога.
Как войти в систему под другим пользователем в Linux?
Команда su
предназначена для входа в систему под другим пользователем. Название расшифровывается как «подменить» или «переключить пользователя».
#Переключиться на пользователя user2 su user2 Password: #Переключиться на root su root Password:
Что такое учетная запись root?
Учетная запись root (рута) — это учетная запись пользователя, который имеет доступ к каждому файлу и каталогу в Linux. Учетная запись root также известна как суперпользователь. Пользователь root может выполнять любые команды, в том числе добавлять пользователей, предоставлять и отзывать разрешения и т.д.
Какие формы владения файлами в Linux?
Каждый файл и каталог в Linux может иметь следующих владельцев —
- User — Класс прав пользователя или владельца принадлежит пользователю, создавшему файл.
- Group — Класс групповых прав принадлежит членам группы (владельцев) файла.
- Other — Класс прав Other относится к каждому пользователю, которому разрешен доступ к файлу.
Объясните суть команды ‘ls -ltr’.
Команда ls
используется для вывода списка содержимого каталога. Опции -ltr
означают —
- ‘l’ — Использовать длинный формат списка
- ‘t’ — Сортировать по времени изменения, сначала самые новые
- ‘r’ — Обратный порядок при сортировке
Таким образом, ls -ltr
выведет содержимое каталога в формате длинного списка, отсортированного по времени модификации.
$ ls ebooks.zip imp.txt Linux.png
$ ls -ltr total 5072 -rw-r--r-- 1 Testengineer 197121 5170843 Jul 30 2023 ebooks.zip -rw-r--r-- 1 Testengineer 197121 8695 Aug 28 14:06 Linux.png -rw-r--r-- 1 Testengineer 197121 6883 Aug 28 19:37 imp.txt
Какая роль у расширений файлов типа .txt, .png и т.д. в Linux?
В отличие от Windows, в Linux расширения файлов не имеют значения. Linux не работает через расширения файлов, вместо этого тип файла определяется по содержимому в заголовке файла.
Объясните использование утилиты ‘file’.
Утилита file используется для определения типа файла (с характеристикой):
$ file imp.txt imp.txt: ASCII text, with very long lines, with CRLF line terminator
$ file Linux.png Linux.png: PNG image data, 521 x 177, 8-bit colormap, non-interlaced
Для чего предназначена команда ‘touch’?
Команда Touch имеет два предназначения в Linux —
- Для присвоения имени файла —
touch
используется для создания (пустого) файла:.touch newFile
- Для существующих файлов или каталогов
touch
изменит время последнего доступа на текущее.
В чем разница между командами ‘cp’ и ‘mv’?
Команда cp
используется для копирования содержимого одного файла в другой. А команда mv
перемещает файл из одного места в другое, удаляя исходный файл. Команда mv
также используется для переименования файлов. Пример —
#Копирует содержимое file1 в file2 cp file1 file2 #Перемещает/переименовывает file1 в file2 mv file1 file2
Покажите использование команд ‘head’ и ‘tail’.
Команда head
используется для отображения первых нескольких строк (по умолчанию 10) файла. Команда tail
используется для отображения нескольких последних строк (по умолчанию 10) файла. Пример —
#Отображение первых 10 строк файла head fileA #Отображение первых 5 строк файла head -5 fileA #Показать последние 10 строк файла tail fileA #Отобразить последние 5 строк файла tail -5 fileA
Что такое ‘sed’ в Linux?
sed
расшифровывается как Stream Editor. Он используется для редактирования файлов или входных данных из конвейера (пайплайна). Пример —
#Выводит первые 5 строк sed -n 1,5p fileA.txt
Как вывести содержимое строк с 5 по 10 из одного файла в другой?
Командой ‘sed’ —
#'p' печатать и '-n' не печатать sed -n 5,10p fileA.txt > fileB.txt
Что такое ‘awk’?
Скриптовый язык AWK назван по инициалам его авторов «Aho, Weinberger, Kernighan» — интерпретируемый язык программирования для обработки текстов. Использование —
#Показать содержимое файла с помощью awk awk '{print}' fileA.txt
Как подсчитать количество слов, строк и символов в файле?
Использование команды wc (word count) —
#Количество символов wc -m fileA.txt #Слов wc -w fileA.txt #Строк wc -l fileA.txt
Как объединить содержимое нескольких файлов в один файл?
Команда ‘cat’ —
#Объединение содержимого fileA и fileB в mergedFile cat file1 file2 > mergedFile
Как используется команда ‘tac’?
Команда tac
, как можно догадаться по её названию, является обратной команде cat
. Она выводит содержимое файла в обратном порядке — построчно, отображая сначала последнюю строку и двигаясь вверх до первой строки.
#Отображает содержимое fileА от нижней строки к верхней tac file!
В чем разница между командами ‘more’ и ‘less’?
Команды more
и less
используются для постраничного просмотра больших файлов. В отличие от редакторов типа vi, использование этих команд для открытия файла не приводит к загрузке всего файла в память. Одним из ограничений команды more
является возможность прокрутки только вниз, но не вверх. В то время как с помощью команды less
можно прокручивать файл как вверх, так и вниз.
Как найти 3 самых маленьких файла в каталоге (занимающих меньше всего места на диске)?
Используя команду du
(disk usage), мы можем узнать использование диска всеми каталогами и подкаталогами. Если дать команду du
с опцией -a
, то будет выведен список использования диска для всех файлов вместе с каталогами. Опция -h
отображает размер в удобочитаемом виде. В дальнейшем можем использовать эту команду вместе с командами sort
и head
, чтобы сначала отсортировать файлы/каталоги по размеру, а затем получить нужное количество файлов.
#Сортирует файлы и каталоги в каталоге TestEngineer по размеру du -h -a TestEngineer/ | sort -n -r | head -n 3
Как создать алиасы в Linux?
Алиасы (или псевдонимы, alias) используются для создания сокращенных коротких имен команды или группы команд.
#Алиас для каталога в логе alias logs="cd /user/application/logs"
Для чего нужна утилита shred? Чем она отличается от команды rm?
Утилита shred
используется для удаления содержимого файла таким образом, что его будет невозможно восстановить с помощью средств восстановления данных. В то время как при удалении файла командой rm
место, занимаемое файлом, просто помечается как выделенное для других файлов, поэтому сохраняется возможность восстановления содержимого файла. Таким образом, для удаления файлов с конфиденциальными данными лучше команда shred
.
#Перезаписывает содержимое файла c невозможностью восстановления shred file1
В чем разница между командами find и locate?
Команды find
и locate
используются для поиска файлов в Linux. Команда find
ищет файл в реальном времени и, соответственно, требует больше времени для вывода результата поиска, если файлов слишком много. В то время как команда locate
работает гораздо быстрее, поскольку вместо поиска в реальном времени она ищет в базе данных updatedb
. Поскольку updatedb
делает снимок файловой системы только раз в сутки, результаты поиска по команде locate
не всегда точны и актуальны.
#Найти все текстовые файлы find / *.txt
#Найти все текстовые файлы locate "*.txt"
Как задать ожидания в скриптах?
Например команда sleep
может применяться для задания времени ожидания в скриптах. Можно задать время ожидания в секундах, минутах, часах и днях.
#Ожидание в течение 5 секунд sleep 5s #Ожидание в течение 5 минут sleep 5m #Ожидание в течение 5 часов sleep 5h #5 дней sleep 5d
Как сжимать и распаковывать файлы в Linux?
Командами zip
и unzip
можно сжимать и распаковывать файлы в Linux.
#Создает файл zipFile.zip со сжатыми файлами fileA и fileB zip zipFile fileA fileB
#Распаковывает файл zipFile.zip unzip zipFile.zip
Какие существуют разрешения и режимы доступа к файлам в Linux?
Каждый файл и каталог в Linux может иметь следующие 3 разрешения, представленные трехзначным восьмеричным числом —
- Чтение — Разрешает чтение содержимого файла (обозначается символом
r
в первой позиции —r
-) - Запись — Разрешает изменение или удаление содержимого файла (обозначается
r
во второй позиции — —w
-). - Выполнение — Обеспечивает возможность выполнения (запуска) файла (обозначается символом ‘x’ в третьей позиции — —
x
)
Объясните смысл такого режима разрешений для файла: «drwxr-x-x».
Эти 10 символов дают информацию о разрешениях пользователю, группе и другим пользователям.
- Первый символ указывает, является ли данный объект файлом или каталогом: ‘-‘ это файл, ‘d’ это каталог.
- Следующие 3 символа описывают права чтения-записи-исполнения для пользователя или владельца файла.
- Следующие 3 символа описывают права чтения-записи-исполнения для группы, принадлежащей файлу.
- Последние три символа описывают права чтения-записи-исполнения для всех остальных пользователей.
Таким образом, данное разрешение drwxr-xr-x
означает каталог, для которого пользователь имеет все права чтения-записи-исполнения, группа имеет права чтения и исполнения, а остальные пользователи могут только исполнять файл.
Как предоставить или запретить доступ к файлу в Linux?
Команда chmod
используется для предоставления прав на файл или каталог в Linux. Существует два режима предоставления или удаления прав с помощью команды chmod
—
- Символьный режим — В символьном режиме мы можем предоставить права на файл с помощью оператора ‘+’, снять права с помощью оператора ‘-‘ и установить требуемые права с помощью оператора ‘=’.
#Добавить права на чтение и выполнение для группы chmod g+rx fileA #Убрать права на выполнение для владельца chmod u-x fileA #Установить права на запись и выполнение для других пользователей chmod o = wx fileA
- Абсолютный режим — В абсолютном режиме для указания различных разрешений используется восьмеричное число.
#751 - предоставить разрешение 7 владельцу, 5 группе и 1 другим пользователям chmod 751 fileA
Объясните восьмеричное представление чисел для различных типов разрешений в Linux.
Абсолютное разрешение chmod
использует восьмеричное число. Для различных типов разрешений используются следующие восьмеричные числа:
Восьмеричное число | Разрешение |
---|---|
0 | Нет разрешения (-), 0+0+0=0 |
1 | Выполнение (-x), 0+0+1=1 |
2 | Запись (-w-), 0+2+0=2 |
3 | Запись и выполнение (-wx), 0+2+1=3 |
4 | Чтение (r-), 4+0+0=4 |
5 | Чтение и выполнение (r-x), 4+0+1=5 |
6 | Чтение и запись (rw-) т.е. 4+2+0=6 |
7 | Чтение, запись и выполнение (rwx) т.е. 4+2+1=7 |
Как изменить собственника и групповое право собственности на файл в Linux?
Команда chown
(change owner) используется для изменения владельца файла.
chown userK fileA
Команда chgrp
используется для изменения группового владения файлом.
chgrp group fileA
Как отсортировать содержимое файла?
Команда sort
может использоваться для построчной сортировки элементов файла.
#Содержание файла - Testengineer, abc, Russia, numbers каждый в отдельной строке sort file
Вывод:
abc numbers Russia Testengineer
Как удалить дубликаты в файле?
Утилитой uniq
с командой sort
.
#Содержимое файла: bat, all, cat, cat, all, cat - каждый в отдельной строке sort fileWithDuplicateContent | uniq
Вывод:
all bat cat
Что такое soft-ссылки в Linux? В чем их преимущество перед командой cp?
Софт-ссылки также известны как символические/символьные, мягкие ссылки или симлинки. Они используются для создания символических указателей на файл. В Linux софт-ссылки создаются с помощью команды ln
с опцией -s
.
#Создает софт-ссылку 'fileA' на файл 'fileA.txt' # -s опция создания мягкой ссылки ln -s fileA.txt fileA
Она имеет преимущество перед командой cp
(которая создает новую копию файла) в том смысле, что для изменения прав доступа к файлам с помощью ссылок необходимо изменить права доступа только к исходному файлу. В то время как при использовании команды cp
необходимо изменить права на все копии файла.
Что такое жесткие ссылки в Linux? Чем они отличаются от символических?
Жесткие ссылки — это как еще одно имя существующего файла. Вместо того чтобы указывать на имя (как мягкие ссылки), жесткие ссылки указывают непосредственно на содержимое файла (указывают на inode
— таблицу, содержащую метаданные о файле).
#Создает жесткую ссылку 'fileA' на файл 'fileA.txt' ln fileA.txt fileA
Жесткая отличается от символической ссылки тем, что в случае удаления исходных файлов ее символическая ссылка не будет ни на что указывать, что приведет к ошибке «Нет такого файла или каталога». В то время как жесткая ссылка будет по-прежнему указывать на содержимое исходного файла, даже если он будет удален.
#Создать жесткую ссылку на file1 ln file1 hardF1 #Создать мягкую ссылку на file1 ln file1 softF1 #Удаление исходного файла rm file1 #Проверить содержимое жесткой ссылки - hardF1 cat hardF1 #output -> valid content #Проверка содержимого мягкой ссылки - softF1 cat softF1 #output -> "No such file or directory"