Безопасность
Первая причина — это конечно же безопасность. Linux имеет тенденцию быть более безопасной системой и это факт, так что вам не понадобится устанавливать дополнительное антивирусное ПО и вообще в связи с тем, что Linux менее популярен среди общего количества пользователей компьютеров, соответственно он менее подвержен вирусным атакам.
Отсутствие необходимости установки антивируса значительно упрощает жизнь разработчикам. Вам не нужно платить за лицензию и антивирус не съедает системные ресурсы компьютера.
Причина безопасности Linux — это то что данная операционная система с открытым исходным кодом. Это означает, что любой желающий может посмотрите исходный код системы. Те кто не хорошо знаком с этой концепцией может подумать что, ну если исходный код системы доступен всем, то любой желающий сможет просмотреть его и найти уязвимости или баги которые приводит к уязвимостям и создадут для этого вирус. Это логично и отчасти они будут правы, однако на самом деле все происходит чуть иначе.
Поскольку Linux популярная открытая операционная система и наверное является одним из основоположников современной философии open source, то есть открытости, многие скажем «добрые» разработчики найдя уязвимость, обязательно дадут инициативу по его исправлению или как минимум сообщат разработчикам системы об этом. В итоги если определенно количество «плохих» людей ищут уязвимости из исходного кода Linux и захотят сделать вирус, найдутся ещё больше «хороших» людей которые захотят исправить данную уязвимость и помочь всем пользователям данной системы.
Из этого всего можно сделать вывод, что Linux действительно безопасная операционная система.
Как посмотреть количество файлов в папке Linux
Самый простой способ решить эту задачу — использовать утилиту ls вместе с утилитой wc. Они покажут сколько файлов находится в текущей папке:
В моем случае утилита выдала результат 21, но поскольку ls выводит размер всех файлов в папке строкой total, то у нас файлов на один меньше. Нужно учесть, что тут отображаются еще и директории. Каждая директория начинается с символа «d», а каждый файл с «-«. Для символических ссылок используется «l». Посмотрите внимательно на вывод ls:
Чтобы их отсеять используйте grep:
Эта конструкция выберет только те строки, которые начинаются на дефис. Если вас интересуют не только обычные файлы, но и скрытые, то можно использовать опцию -a:
Так можно подсчитать количество папок:
А так символических ссылок:
Если вам нужно подсчитать количество файлов во всех подпапках, то можно использовать опцию -R:
С фильтром только файлы нам уже не страшно, что команда будет выводить служебную информацию. Если вы не хотите использовать ls, можно воспользоваться утилитой find:
Если нужно смотреть не только количество файлов в папке, но и подпапок, просто не нужно использовать -type f:
Только папки отдельно:
А в случае, когда необходимо перебрать все файлы во всех подпапках, не устанавливайте параметр -maxdepth:
Все эти команды это очень хорошо, но есть еще одно, более удобное средство посчитать количество файлов linux, это утилита tree.
Что такое ядро Linux?
Ядро Linux – это часть операционной системы, которая позволяет программному обеспечению взаимодействовать с оборудованием. Без этого, на экране ничего не появляется, звук из динамиков вы не услышите, и ни одна из нажатых кнопок не сможет ничего сделать.
В начале 1990-х годов было почти достаточно свободных и открытых компонентов для обеспечения функциональности рабочего стола. Все, чего не хватало, было одной важной частью, ядром, которое фактически позволило бы всем этим программам работать. Когда Линус Торвальдс запустил ядро Linux, он предоставлял только один этот компонент. Тем не менее, люди начали называть весь опыт работы с прецизионными системами на базе ядра Linux, просто – Linux, а не GNU/Linux, что есть правильно. Эта практика продолжается и по сей день
Когда Линус Торвальдс запустил ядро Linux, он предоставлял только один этот компонент. Тем не менее, люди начали называть весь опыт работы с прецизионными системами на базе ядра Linux, просто – Linux, а не GNU/Linux, что есть правильно. Эта практика продолжается и по сей день.
Ядро Linux. Объясняем простыми словами
Нет надобности в перезагрузки
Отсутствие перезагрузки, это то, о чем я говорил в предыдущей главе, когда я объяснял, как устанавливаются программы на Windows. То есть в большинстве программ, после установки требуется перезагрузка для полноценной работы с программой.
Данный неудобный процесс не относится к операционной системе Linux и это я думаю действительно важно для разработчика из-за того, что программисты обычно устанавливают много разных программы во время процесса разработки. Перезагрузка системы сбрасывает оперативную память, поэтому все процессы и программы соответственно закрываются
Думаю это одна из многих причин почему Linux популярен и среди операционных систем используемых на серверах. Linux для серверов построены для стабильной и надежной работы и имеют тенденцию работать годами без сбоев или даже перезагрузок.
Предисловие
Об этом руководстве
Добро пожаловать в первую из четырех частей обучающего руководства по основам Linux, разработанного чтобы подготовить вас к сдаче экзамена Linux Professional Institute 101. В нем вы познакомитесь с bash (стандартной оболочкой командного интерпретатора в Linux), узнаете о большинстве возможностей таких стандартных команд Linux, как ls, cp и mv, разберетесь в инодах, жестких и символьных ссылках, и многом другом. К концу этого руководства у вас сформируется некий фундамент знаний, и вы будете готовы к изучению основ администрирования Linux. К концу всего курса (8 частей), у вас будет достаточно навыков, чтобы стать системным администратором Linux и пройти сертификацию LPIC Level 1 от Linux Professional Institute, если конечно захотите.
Данная первая часть руководства отлично подходит для новичков в Linux, а также для тех пользователей, кто хочет освежить или улучшить свое понимание фундаментальных концепций Linux, таких, как копирование и перемещение файлов, создание символических и жестких ссылок, а также стандартных команд обработки текста, включая конвейеры и перенаправления. По ходу мы также дадим множество советов, подсказок и трюков, что делает это руководство насыщенным и практичным, даже для тех, кто уже имеет солидный опыт работы с Linux. Для начинающих большая часть этого материала будет новой, но более продвинутые пользователи Linux найдут это руководство отличным средством, чтобы разложить свои фундаментальные навыки по полочкам у себя в голове.
Тем, кто изучал первую версию этого руководства с целью, отличной от подготовки к экзамену LPI, возможно, что вам не нужно его перечитывать. Однако, тем же, кто планирует сдавать экзамены, стоит обязательно просмотреть данную исправленную версию.
Для чего используется Linux?
Для всего! Многие люди используют Linux для разработки программного обеспечения, особенно для интернета. Все 500 суперкомпьютеров мира работают под управлением Linux. ОС хорошо адаптируется под всё: от Raspberry Pi и смартфонов до Международной космической станции и Большого адронного коллайдера.
Linux прекрасно подходит для внештатных писателей, в нём есть инструменты для фотографов, управления фотографиями и художников создающих цифровые картины. Если вам нужна машина, которую вы хотите использовать сидя на диване, для простого веб-сёрфинга, Linux достаточно прост для выполнения этих задач.
Какой дистрибутив Linux стоит использовать?
Первый вопрос, которым стоит задаться “что такое дистрибутив Linux?” Просто ядро Linux похоже на движок. Дистрибутив – это фактически транспортное средство, в котором находится двигатель.
Так какой дистрибутив Linux выбрать? Вот основные из них:
- Linux Mint: не требует продвинутого опыта работы с компьютером, прост в установке, прост в использовании и имеет знакомый рабочий стол для пользователей Windows 7
- Debian: если вы ищете действительно бесплатный дистрибутив Linux без проприетарных драйверов, прошивки или программного обеспечения, то Debian для вас. Старичок среди дистрибутивов.
- Ubuntu: современный дистрибутив Linux, который прост в установке и использовании
- openSUSE: стабильный и мощный дистрибутив Linux. Не так просто установить, как Mint и Ubuntu, но тем не менее является очень хорошей альтернативой
- Fedora: самый современный дистрибутив Linux со всеми новыми концепциями, включающимися при первой же возможности
- Mageia: восстал из пепла некогда великой Mandriva Linux. Прост в установке и использовании
- CentOS: как и в Fedora, CentOS основан на коммерческом дистрибутиве Linux, Red Hat Linux. В отличие от Fedora, он создан для стабильности
- Manjaro: основанный на Arch Linux, Manjaro обеспечивает отличный баланс между простотой использования и современным программным обеспечением
- LXLE: на основе легкого дистрибутива Lubuntu он представляет из себя полнофункциональный дистрибутив Linux для старого оборудования
- Arch: rolling release дистрибутив означает, что вы не должны устанавливать новые версии операционной системы, потому что оно самостоятельно обновляется. Сложнее для нового пользователя в освоении, но очень мощный
- Elementary: Linux для людей, которым нравится интерфейс в стиле Mac
Минусы Linux
1. Сложность освоения
Как бы там ни было, Linux очень сильно отличается от Windows, поэтому сначала будет сложно его осваивать и привыкать к новой концепции операционной системы. Это та же файловая система, репозитории пакетов, политика безопасности, где постоянно надо вводить пароль для административных действий. Некоторые вещи до сих пор лучше делать через терминал и так далее.
2. Отсутствие версий популярных программ
Это основной недостаток, из-за которого многие пользователи все ещё не могут полностью перейти на Linux. Для этой операционной системы Microsoft не выпустил свой офис, а Adobe свой Photoshop. Также нет других специфических программ, таких как Компас, AutoCAD, KeyCollector и других. Этот список можно ещё продолжить. Для многих программ есть аналоги и даже можно пытаться запускать их в прослойке совместимости с Windows, но это не заменит полноценный запуск программы.
По сути, мы работаем не с операционной системой, а с программами, которые в ней выполняются, и если бы были все необходимые программы, у Linux было бы намного больше пользователей.
3. Отсутствие поддержки некоторого оборудования
Драйверы оборудования для Linux разрабатываются либо производителем, либо энтузиастами. На протяжении всего развития Linux многие производители оборудования не хотели выпускать драйверы для этой операционной системы, а энтузиасты делали свои драйверы далеко не для всего оборудования.
В основном, это были сетевые адаптеры и принтеры. В последние годы ситуация улучшилась. Для принтеров есть унифицированный стандарт, но с выбором Wi-Fi-адаптеров все ещё надо быть осторожным и смотреть, поддерживаются ли они операционной системой.
4. Недостаточная поддержка игр
Многие годы у Linux была проблема с играми. Все самые интересные игры выпускались для Windows, а для Linux было только несколько свободных игр, плюс возможность запуска игр от Windows в прослойке совместимости. Но в последнее время всё изменилось. Появилась платформа Steam для Linux и тут начали появляться многие интересные и популярные игры, например Metro Exodus, XCOM, CS GO и многие другие.
Также прослойка совместимости начала работать намного лучше. Появилась поддержка Vulkan API, которая очень сильно ускорила работу игр через Wine, также была реализована поддержка DirectX 11 и теперь в Linux можно играть во многие из Windows-игр, хотя в некоторые всё ещё нельзя.
openRazer, polychromatic, RazerGenie
openRazer — проект по реализации открытых драйверов для устройств компании Razer на Linux. Стоит отметить, что в openRGB частично включён этот проект, однако при помощи графических утилит через openRazer можно настроить не только подсветку, но макросы клавиатуры, поведение кнопок мыши, выбрать наиболее подходящий профиль DPI.
Поддержка девайсов: https://github.com/openrazer/openrazer#device-support
polychromatic — графический интерфейс и апплет для openRazer. Позволяет создавать профили для конкретных игр и т.д. Github проекта: https://github.com/polychromatic/polychromatic
RazerGenie — ещё один графический интерфейс, в отличие от предыдущего позволяет лучше управлять настройками мыши. Написан на С++ и фреймворке Qt Github проекта: https://github.com/z3ntu/RazerGenie
Где взять дистрибутив Linux?
Переход на Linux.com не приведет к большой кнопке загрузки. Вместо этого вам нужно знать, какую именно систему вы ищете. Хотите Ubuntu? Отправляйтесь на ubuntu.com. Слышали про Linux Mint? Проверьте linuxmint.com, elementary OS – elementary.io, Fedora – fedoraproject.org, openSUSE – opensuse.org. Все эти решения хороши для начала.
Процесс установки любого из вышеперечисленных вариантов не сильно отличается от шагов, описанных выше. История с другими дистрибутивами, такими как Arch Linux – archlinux.org и Gentoo – gentoo.org, отличается. Если вы хотите получить полный список из сотен различных вариантов дистрибутивов, посетите сайт distrowatch.com.
Главные особенности операционной системы Linux
Программное обеспечение Linux — это продукт, обладающий множеством особенностей. Вот некоторые из них:
- Многие пользователи операционной системы Linux — это программисты и системные администраторы, то есть опытные специалисты. Естественно, им совершенно не страшно, что многие действия надо выполнять через консоль, то есть терминал. Мало того, привыкнув к такому управлению операционной системой, вы очень скоро станете его поклонником. Да, для новичков и любителей Windows поначалу это кажется сложным, но это только до тех пор, пока не втянешься. )))
- Многие серверы (хранилища, хостинги) используют операционную систему Linux в виде основной операционной системы. И это не только потому, что она является бесплатной, но и потому, что Linux OS более стабильна и удобнее настраивается. Что касается домашнего пользования, то тут пальма первенства у Виндовс, т. к. лишь около пяти процентов людей используют OC Linux в виде домашней операционной системы.
- ОС Linux считается многозадачной и многопользовательской. Да, «Винда» тоже не стоит на месте, но все же она не настолько удобна, если говорить о работе нескольких пользователей.
- В OC Linux отсутствуют жесткие диски, как это сделано в Windows. В операционной системе Linux всё хранится в одном каталоге, название которого начинается с «/». Подробнее про структуру читайте здесь.
- Операционная система Linux имеет программные оболочки bash либо tcsh. Используя их, система выполняет пользовательские команды.
- Файловые системы OS Linux отличаются от привычных для нас Windows-систем и включают в себя ext4, btrfs, xfs. Вообще, операционная система Linux поддерживает много файловых систем, включая виндовские NTFS и FAT32.
- Выделяют 2 вида Linux-дистрибутивов. Они различаются по принципу организации и управления ПО: DEB — применяется в Debian и в основанных на нём дистрибутивах; RPM — этот менеджер пакетов применяется в дистрибутиве Red Hat и во множестве других известных дистрибутивах (Fedora).
- Все процессы разделяются по ресурсам. Для добавления нового устройства потребуется драйвер, который можно написать самому и запустить в ядре. Драйверы или интегрируются в ядро, или добавляются как модули, загружаемые в процессе функционирования операционной системы.
- В ОС Linux действует концепция «всё есть файл» — это и жёсткие диски, и папки, и разделы и приводы оптодисков, и съёмные носители.
find — синтаксис и зачем оно нужно
find — утилита поиска файлов по имени и другим свойствам, используемая в UNIX‐подобных операционных системах. С лохматых тысячелетий есть и поддерживаться почти всеми из них.
Базовый синтаксис ключей (забран с Вики):
-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки
Опция `-name’ различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией `-iname’;
-type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет;
-user — владелец: имя пользователя или UID;
-group — владелец: группа пользователя или GID;
-perm — указываются права доступа;
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом);
-atime — время последнего обращения к файлу (в днях);
-amin — время последнего обращения к файлу (в минутах);
-ctime — время последнего изменения владельца или прав доступа к файлу (в днях);
-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах);
-mtime — время последнего изменения файла (в днях);
-mmin — время последнего изменения файла (в минутах);
-newer другой_файл — искать файлы созданные позже, чем другой_файл;
-delete — удалять найденные файлы;
-ls — генерирует вывод как команда ls -dgils;
-print — показывает на экране найденные файлы;
-print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0);
-exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис;
-ok — перед выполнением команды указанной в -exec, выдаёт запрос;
-depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога;
-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом;
-prune — используется, когда вы хотите исключить из поиска определённые каталоги;
-mount или -xdev — не переходить на другие файловые системы;
-regex — искать по имени файла используя регулярные выражения;
-regextype тип — указание типа используемых регулярных выражений;
-P — не разворачивать символические ссылки (поведение по умолчанию);
-L — разворачивать символические ссылки;
-empty — только пустые каталоги.
Примерно тоже самое, только больше и в не самом удобочитаемом виде, т.к надо делать запрос по каждому ключу отдельно, можно получить по
Результатам будет нечто такое из чего можно вычленять справку по отдельному ключу или команде (кликабельно):
В качестве развлечения можно использовать:
Дабы получить мануал из самой системы по базису и ключам (тоже кликабельно);
Немного о примерах использования. Точно так же, оттуда же и тп. Просто для понимания как оно работает вообще. Наиболее просто, конечно, осознать это потренировавшись в той же консоли на реальной системе.
Только для специалистов
Самым большим заблуждением про Linux является то, что он создан для специалистов и программистов, которые понимают как писать код и так далее. Вот почему в течение многих лет так много людей держались в стороне от Linux. Кое-что меняется, но многие все еще боятся экспериментировать, потому что считают, что Linux одержит над ними победу.
Хотя это и было правдой десять или более назад, за последние несколько лет появилось много дистрибутивов, которые сделали Linux доступным для рядового пользователя. В наши дни даже дети могут его использовать. Разработчики создают привлекательные графические интерфейсы и делают другие улучшения, которые сделали Linux намного удобнее для людей по всему земному шару.
Серверное использование, как и для Windows, намного сложнее. Но в качестве рядового пользователя вы можете использовать Linux также легко, как Windows или Mac OS X.
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name «file.txt»
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня .
2. Поиск файла по части имени:
find / -name «*.tmp»
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Несколько условий.
а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:
find . -name «sess_*» -a -name «*cd»
б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:
find . -name «sess_*» -o -name «*cd»
в) Более компактный вид имеют регулярные выражения, например:
find . -regex ‘.*/\(sess_.*cd\)’
find . -regex ‘.*/\(sess_.*\|.*cd\)’
* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).
4. Найти все файлы, кроме .log:
find . ! -name «*.log»
* в данном примере мы воспользовались логическим оператором !.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).
а) дате изменения:
find . -type f -newermt «2019-11-02 00:00»
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
* все файлы, созданные с 07 сентября 2019 года.
find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»
* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50
Искать в текущей директории и всех ее подпапках только файлы:
find . -type f
* f — искать только файлы.
Поиск по правам доступа
1. Ищем все справами на чтение и запись:
find / -perm 0666
2. Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
Поиск файла по содержимому
find / -type f -exec grep -i -H «content» {} \;
* в данном примере выполнен рекурсивный поиск всех файлов в директории и выведен список тех, в которых содержится строка content.
С сортировкой по дате модификации
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r
* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.
Лимит на количество выводимых результатов
Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1
Поиск с действием (exec)
1. Найти только файлы, которые начинаются на sess_ и удалить их:
find . -name «sess_*» -type f -print -exec rm {} \;
* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.
2. Переименовать найденные файлы:
find . -name «sess_*» -type f -exec mv {} new_name \;
или:
find . -name «sess_*» -type f | xargs -I ‘{}’ mv {} new_name
3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name «*.tmp» | wc -l
4. Изменить права:
find /home/user/* -type d -exec chmod 2700 {} \;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
5. Передать найденные файлы конвееру (pipe):
find /etc -name ‘*.conf’ -follow -type f -exec cat {} \; | grep ‘test’
* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.
6. Произвести замену в файлах с помощью команды sed:
find /opt/project -type f -exec sed -i -e «s/test/production/g» {} \;
* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.
Менеджер пакетов
Вторая причина в том, что Linux намного улучшает рабочий процесс для программистов с помощью менеджера пакетов встроенный в почти каждый дистрибутив. Это полезно для программистов с точки зрения эффективность, то есть если вы хотите установить новую программу или обновить уже имеющуюся, просто введите (если у вас например ubuntu или linux mint) и напишите соответствующую команду. И всё это происходит буквально за пару минут.
Например на Windows данный процесс является относительно кропотливым, так-как все это вам нужно будет делать вручную.
Конечно можно будет установить менеджер пакетов chocolatey, однако новичку данный процесс покажется сложным.
С дистрибутивами Linux вы получаете менеджер пакетов прямо из коробки, то есть после установки менеджер пакетов уже установлен и настроен.
Теперь допустим, что ты хотите сделать то же самое, но в Linux. Все, что вам нужно сделать, это открыть окно терминала и ввести и нажать на Enter. И все после ожидания установки вы можете полноценно ей пользоваться. При этом вы уверены что скачали программу из надежного источника.
Данный фактор очень важен для программиста, так-как сегодня разработка лишь одного проекта требует скачивания нескольких программ.