Основные linux-команды для новичка

    Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!

    Правда, разобраться в нем немного посложнее… Потому что большинство операций выполняется в командной строке. И если вы видите в вакансии «знание linux» — от вас ожидают как раз умение выполнять простейшие операции — перейти в другую директорию, скопировать файл, создать папочку… В этой статье я расскажу про типовые операции, которые стоит уметь делать новичку. Ну и плюс пара полезняшек для тестировщиков.

    Я дам кратенькое описание основных команд с примерами (примеры я все проверяла на cent os, red hat based системе) + ссылки на статьи, где можно почитать подробнее. Если же хочется копнуть еще глубже, то см раздел «Книги и видео по теме». А еще комментарии к статье, там много полезного написали)

    Содержание






    Где я? Как понять, где находишься


    Команда pwd:

    pwd   --- мы ввели команду
    /home/test   --- ответ системы, мы находимся в домашней директории пользователя test

    Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как Print Working Directory. Запомните ее, пригодится.



    Как понять, что находится в папке


    Команда ls позволяет просмотреть содержимое каталога:



    Хотя лучше использовать команду сразу с флагом «l»:

    ls -l

    Такая команда выведет более читабельный список, где можно будет сразу увидеть дату создания файла, его размер, автора и выданные файлу права.



    У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».

    См также:
    Команда ls Linux — подробнее о команде и всех ее флагах
    Команда ls – просмотр каталога — о команде для новичков (без перечисления всех флагов)



    Как перейти в другую директорию


    С помощью команды cd:
    cd <путь к директории>

    Путь может быть абсолютным или относительным.


    По абсолютному пути


    Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе (например, в WinSCP).

    Вставляем путь в командную строку после «cd»

    cd /home/student/log

    Ну вот, мы переместились из домашней директории (обозначается как ~) в /home/student/log.




    По относительному пути


    Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /home/student, а мне надо в /home/student/log, команда будут такой:

    cd log  --- перейди в папку log из той директории, где ты сейчас находишься

    Если мне из надо из /home/student/photo в /home/student/photo/city/msk/2017/cat_1, команда будет такой:

    cd city/msk/2017/cat_1

    Я не пишу /home/student/photo, так как я уже там.



    В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки:

    cd  ~/log

    Эта команда будет работать отовсюду. И переместит нас в /home/user/log.

    Вот пример, где я вошла под пользователем students. Исходно была в директории /var, а попала в /home/students/log:




    С автодополнением


    Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:

    (cd tab) Может, ты имел в виду папку 1?
    (tab) Нет? Может, папку 2?
    (tab) Снова нет? Может, папку 3?
    (tab) Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
    (tab) У меня кончились варианты, поехали сначала. Папка 1?



    cd lon(Tab) → cd long-long-long-long-name-folder — начали вводить название папки и система сама подставила имя (из тех, что есть в директории, где мы находимся).

    cd (Tab)(Tab)(Tab) — система перебирает все файлы / папки в текущей директории.

    Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.



    Подняться наверх


    Подняться на уровень выше:

    cd ..

    Если нужно поднять на два уровня выше, то

    cd ../..

    И так до бесконечности =) Можно использовать файл, лежащий на уровне выше или просто сменить директорию.

    Обратите внимание, что команда для линукса отличается от команды для винды — слеш другой. В винде это «cd ..\..», а в линуксе именно «cd ../..».

    См также:
    Путь к файлу в linux



    Как создать директорию


    Используйте команду mkdir:

    mkdir test  --- создает папку с названием «test» там, где вы находитесь

    Можно и в другом месте создать папку:

    mkdir /home/test   --- создает папку «test» в директории /home, даже если вы 
    сейчас не там

    Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.

    См также:
    Как создать каталог в Linux с помощью команды mkdir



    Как создать файл


    Командой touch:

    touch app.log

    Такая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.



    Как отредактировать файл


    Вот честное слово, лучше делать это через графический интерфейс!

    Но если такой возможности нет, чтож… Если использовать программы, которые есть везде, то у вас два варианта:

    1. nano — более простая программа, рассчитана на новичков
    2. vim — более сложная, но позволяет сделать кучу всего

    Начнем с nano. Указываете имя команды и путь в файлу:

    nano test_env.json

    Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:

    • Ctrl+O — чтобы сохранить
    • Ctrl+X — для выхода

    Самое приятное в nano — это подсказки внизу экрана, что нажать, чтобы выйти.



    А вот с vim с этим сложнее. В него легко зайти:

    vim test_env.json
    vi test_env.json     (предшественник vim)

    Войти вошли, а как выйти то, аааа? Тут начинается легкая паника, потому что ни одна из стандартных комбинаций не срабатывает: Esc, ctrl + x, ctrl + q… Если под рукой есть второй ноутбук или хотя бы телефон / планшет с интернетом, можно прогуглить «как выйти из vim», а если у вас только одно окно с терминалом, которое вы заблокировали редактором?

    Делюсь секретом, для выхода надо набрать:

    • :q — закрыть редактор
    • :q! — закрыть редактор без сохранения (если что-то меняли, то просто «:q» не проканает)

    Двоеточие запускает командный режим, а там уже вводим команду «q» (quit).

    Исходно, когда мы открываем файл через vim, то видим его содежимое, а внизу информацию о файле:



    Когда нажимаем двоеточие, оно печатается внизу:



    Если не печатается, не паникуем! Тогда попробуйте нажать Esc (вернуться в нормальный режим), потом Enter (подтвердить команду), а потом снова печатайте. Фух, помогло, мы вышли оттуда!!!

    На самом деле сейчас всё не так страшно. Даже если вас заслали работать в банк, где нет доступа в интернет, а вы вошли в vi и не знаете как выйти, всегда можно погулить выход с телефона. Слава мобильному интернету! Ну а если вы знаете логин-пароль от сервера, то можно просто закрыть терминал и открыть его снова.

    Если нужно выйти, сохранив изменения, используйте команду

    :w — сохранить файл;
    :q — закрыть редактор;

    Ну а про возможности редактирования см статьи ниже =)

    См также:
    Как редактировать файлы в Ubuntu — подробнее о разных способах
    Как пользоваться текстовым редактором vim — подробнее о vim и всех его опциях
    Как выйти из редактора Vi или Vim? — зачем нажимать Esc



    Как перенести / скопировать файл


    Допустим, у нас в директории /opt/app/log находится app.log, который мы хотим сохранить в другом месте. Как перенести лог в нужное место, если нет графического интерфейса, только командная строка?


    Скопировать файл


    Команда:

    cp что_копировать куда_копировать

    Если мы находимся в директории /opt/app/log:

    cp app.log /home/olga

    В данном примере мы использовали относительный путь для «что копировать» — мы уже находимся рядом с логом, поэтому просто берем его. А для «куда копировать» используем абсолютный путь — копируем в /home/olga.

    Можно сразу переименовать файл:

    cp app.log /home/olga/app_test_2020_03_08.log

    В этом случае мы взяли app.log и поместили его в папку /home/olga, переименовав при этом в app_test_2020_03_08.log. А то мало ли, сколько логов у вас в этом папке уже лежит, чтобы различать их, можно давать файлу более говорящее имя.

    Если в «куда копировать» файл с таким именем уже есть, система не будет ничего спрашивать, просто перезапишет его. Для примера положим в папку log внутри домашней директории файл «app.log», который там уже есть:



    Никаких ошибок, система просто выполнила команду.

    См также:
    Копирование файлов в linux



    Скопировать директорию


    Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:
    cp -r  путь_к_папке  путь_к_новому_месту

    Например:

    cp /opt/app/log /home/olga

    Так в директории /home/olga появится папка «log».


    Переместить файл


    Если надо переместить файл, а не скопировать его, то вместо cp (copy) используем mv (move).

    cp app.log /home/olga
    ↓
    mv app.log /home/olga

    Можно использовать относительные и абсолютные пути:

    mv /opt/app/logs/app.log /home/olga — абсолютные пути указаны, команда сработает из любого места

    Можно сразу переименовать файл:

    mv app.log /home/olga/app_2020_03_08.log — перенесли лог в /home/olga и переименовали


    Переместить директорию


    Аналогично перемещению файла, команда mv
    mv /opt/app/log/  /home/olga/bakup/




    Как удалить файл


    С помощью команды rm (remove):

    rm test.txt  — удалит файл test.txt

    Если нужно удалить все файлы в текущей директории (скажем, вычищаем старые логи перед переустановкой приложения), используйте «*»:

    rm *  — удалит все файлы в текущей директории




    Если нужно удалить папку, надо добавить флаг -r (recursive):

    rm -r test_folder

    Если вы пытаетесь удалить файлы, которые уже используются в программе или доступны только для чтения, система будет переспрашивать:



    А теперь представьте, что вы чистите много файлов. И на каждый система переспрашивает, и надо постоянно отвечать «да, да, да...» (y – enter, y – enter, y – enter)… Чтобы удалить все без вопросов, используйте флаг -f (force):

    rm -rf test_folder    --- просто все удалит без разговоров



    Но учтите, что это довольно опасная команда! Вот так надоест подстверждать удаление и введешь «-rf», а директорию неправильно укажешь… Ну и все, прости-прощай нужные файлы. Аккуратнее с этой командой, особенно если у вас есть root-полномочия!

    Опция -v показывает имена удаляемых файлов:

    rm -rfv test_folder   --- удалит папку со всем содержимым, но выведет имена удаляемых файлов



    Тут вы хотя бы можете осознать, что натворили )))

    См также:
    Как удалить каталог Linux


    Как изменить владельца файла


    Если у вас есть root-доступ, то вы наверняка будете выполнять все действия под ним. Ну или многие… И тогда любой созданный файл, любая папка будут принадлежать root-пользователю.

    Это плохо, потому что никто другой с ними работать уже не сможет. Но можно создать файл под root-ом, а потом изменить его владельца с помощью команды chown.



    Допустим, что я поднимаю сервис testbase. И он должен иметь доступ к директории user и файлу test.txt в другой директории. Так как никому другому эти файлики не нужны, а создала я их под рутом, то просто меняю владельца:

    chown testbase:testbase test.txt — сменить владельца файла
    chown -R testbase:testbase user     — сменить владельца папки

    В итоге был владелец root, а стал testbase. То, что надо!

    См также:
    Команда chown Linux



    Как установить приложение


    Если вы привыкли к винде, то для вас установка приложения — это скачать некий setup файлик, запустить и до упора тыкать «далее-далее-далее». В линуксе все немного по-другому. Тут приложения ставятся как пакеты. И для каждой системы есть свой менеджер пакетов:

    • yum — red hat, centos
    • dpkg, apt — debian

    См также:
    5 Best Linux Package Managers for Linux Newbies

    Давайте посмотрим на примере, как это работает. В командной строке очень удобно работать с Midnight Commander (mc) — это как FAR на windows. К сожалению, программа далеко не всегда есть в «чистом» дистрибутиве.

    И вот вы подняли виртуалку на centos 7, хотите вызвать Midnight Commander, но облом-с.

    mc



    Ничего страшного, установите это приложение через yum:

    yum install mc



    Он там будет что-то делать, качать, а потом уточнит, согласны ли вы поставить программу с учетом ее размеров. Если да, печатаем «y»:



    И система заканчивает установку.

    Вот и все! Никаких тебе унылых «далее-далее-далее», сказал «установи», программа установилась! Теперь, если напечатать «mc» в командной строке, запустится Midnight Commander:



    См также:
    Как устанавливать программы для Linux
    Yum, шпаргалка — всякие опции и плагины



    Как запустить приложение


    Некоторые приложения запускаются через скрипты. Например, чтобы запустить сервер приложения WildFly, нужно перейти в папку bin и запустить там standalone.sh. Файл с расширением .sh — это скрипт.

    Чтобы запустить скрипт, нужно указать полный путь к нему:

    /opt/cdi/jboss/bin/standalone.sh — запустили скрипт standalone.sh

    Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден, если просто указать название sh-скрипта. Надо написать так:

    ./standalone.sh — запустили скрипт, если мы в той же директории

    Поиск идет только в каталогах, записанных в переменную PATH. Так что если скрипт используется часто, добавляйте путь туда и вызывайте просто по названию:

    standalone.sh --- запустили скрипт standalone.sh, путь к которому прописан в PATH

    См также:
    Запуск скрипта sh в Linux — подробнее о скриптах



    Если же приложение запускается как сервис, то все еще проще:

    service test start — запустить сервис под названием «test»
    service test stop — остановить сервис

    Чтобы сервис test запускался автоматически при рестарте системы, используйте команду:

    chkconfig test on

    Она добавит службу в автозапуск.



    Как понять, где установлено приложение


    Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?

    Чтобы узнать, куда приложение установилось, используйте whereis (без пробела):

    whereis newman







    Как создать архив


    Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf:

    tar -cvzf archive.tar.gz /home/test



    В данном примере мы упаковали директорию /home/test, внутри которой было две картинки — 502.jpg и 504.jpg.

    Для распаковки меняем флаг «c» на «x» и убираем «z»:

    tar -xvf archive.tar.gz



    Хотя система пишет, что распаковала «/home/test», на самом деле папка «test» появляется там, где мы сейчас находимся.

    Давайте разберемся, что все эти флаги означают:

    • c — создать архив в linux
    • x — извлечь файлы из архива
    • v — показать подробную информацию о процессе работы (без него мы бы не увидели, какие файлики запаковались / распаковались)
    • f — файл для записи архива
    • z — сжатие

    Для упаковки используется опция cCreate, а для распаковки x — eXtract.



    Если очень хочется использовать rar, то придется изгаляться. Через yum установка не прокатит:

    yum install rar
    yum install unrar

    Говорит, нет такого пакета:

    No package rar available.
    Error: Nothing to do

    Придется выполнить целую пачку команд! Сначала скачиваем, разархивируем и компилируем:

    wget http://rarlabs.com/rar/rarlinux-x64-5.4.0.tar.gz
    tar xzf rarlinux-x64-5.4.0.tar.gz
    cd rar
    make install

    Устанавливаем:

    mkdir -p /usr/local/bin
    mkdir -p /usr/local/lib
    cp rar unrar /usr/local/bin
    cp rarfiles.lst /etc
    cp default.sfx /usr/local/lib

    И применяем:

    unrar x test.rar

    См также:
    Установка RAR на Linux



    Как посмотреть использованные ранее команды


    Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!

    Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:

    ↑  (стрелочка «наверх») — показать последнюю команду
    history — показать последние 1000 команд

    Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).



    Большой бонус в том, что линукс хранит историю даже при перезапуске консоли. Это вам не как в винде — скопировал текст, скопировал другой, а первый уже потерялся. А при перезагрузке системы вообще все потерялось.

    Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «history» и внимательно изучить команды.

    См также:
    История команд Linux — больше о возможностях history



    Как посмотреть свободное место


    Сколько места свободно на дисках

    df -h

    Сколько весит директория

    du -sh
    du -sh *  --- с разбиением



    Как узнать IP компьютера


    Если у вас настроены DNS-имена, вы подключаетесь к linux-машине именно по ним. Ведь так проще запомнить — это testbase, это bugred… Но иногда нужен именно IP. Например, если подключение по DNS работает только внутри рабочей сети, а коллега хочет подключиться из дома, вот и уточняет айпишник.

    Чтобы узнать IP машины, используйте команду:

    hostname -I

    Также можно использовать ifconfig:

    ifconfig — выведет кучу инфы, в том числе ваш внешний IP
    ip a — аналог, просто иногда Ifconfig дает очень много результата, тут поменьше будет

    См также:
    Displaying private IP addresses



    Как узнать версию OS


    Сидите вы у Заказчика на линуксовой машине. Пытаетесь что-то установить — не работает. Лезете гуглить, а способы установки разные для разных операционных систем. Но как понять, какая установлена на данной машине?

    Используйте команду:

    cat /etc/*-release



    На этой виртуалке стоит CentOs 7.

    Если нужна версия ядра:

    uname -a

    См также:
    Как узнать версию Linux



    Как узнать, как работает команда


    Если вы не знаете, как работает команда, всегда можно спросить о ней саму систему, используя встроенную команду man:

    man ls



    Закрыть мануал можно с помощью клавиши q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.

    Команда удобна тем, что не надо даже уходить из командной строки, сразу получаешь всю информацию. К тому же это всегда актуальная информация. А что вы там нагуглите — неизвестно =))

    Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание + сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!

    Если man у программы нет, используйте флаг -h (--help):

    ls -h




    Как создать много тестовых папок и файлов


    Допустим, у нас есть некая папка test. Создадим в ней сотню директорий и кучу файликов в каждой:

    mkdir -p test/dir--{000..100}
    touch test/dir--{000..100}/file-{A..Z}

    Вот и все, дальше можно играться с ними!



    Теперь пояснения:

    • mkdir — создать директорию
    • touch — создать файл (или изменить существующий, но если файла с таким именем нет, то команда создаст новый, пустой)

    А выражения в скобках играют роль функции, которая выполняется в цикле и делает ручную работу за вас:

    • {000..100} — пробежится по всем числам от 0 до 100
    • {A..Z} — пробежится по всем буквам английского алфавита от A до Z

    Как я пробовала эту команду. Сначала посмотрела, где нахожусь:

    $ pwd
    /home/test

    Символ $ при описании команд означает начало строки, куда мы пишем команду. Так мы отделяем то, что ввели сами (pwd) от ответа системы (/home/test).

    Ага, в домашней директории. Создам себе песочницу:

    mkdir olga

    Вот в ней и буду творить!

    mkdir -p olga/dir--{000..100}
    touch olga/dir--{000..100}/file-{A..Z}

    А потом можно проверить, что получилось:

    cd olga
    ls -l

    Как-то так! Имхо, полезные команды.

    Я нашла их в книге «Командная строка Linux. Полное руководство», они используются для того, чтобы создать песочницу для прощупывания команды find. Я, как и автор, восхищаюсь мощью командной строки в данном случае. Всего 2 строчки, а сколько боли бы принесло сделать похожую структуру через графический интерфейс!

    И, главное, тестировщику полезно — может пригодиться для тестов.



    Как протестировать IOPS на Linux


    Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.

    Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.

    Но верить админам другой стороны на слово нельзя. Если приложение работает медленно, они, разумеется, будут говорить, что у них то все хорошо, это «они» виноваты. Поэтому надо тестировать диски самим.

    Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.



    Используем утилиту fio — https://github.com/axboe/fio/releases.

    1) Скачиваем последнюю версию, распаковываем, переходим в каталог. В командах ниже нужно заменить «fio-3.19» на актуальную версию из списка

    cd /tmp
    wget https://github.com/axboe/fio/archive/fio-3.19.tar.gz
    tar xvzf fio-3.19.tar.gz
    rm fio-3.19.tar.gz
    cd fio-fio-3.19

    2) Должны стоять пакеты для сборки

    apt-get install -y gcc make libaio-dev | yum install -y make gcc libaio-devel

    3) Собираем

    make

    4) Тестируем

    ./fio -readonly -name iops -rw=randread -bs=512 -runtime=20 -iodepth 32 -filename /dev/sda -ioengine libaio -direct=1

    Какие должны быть результаты:

    • Средний SSD, выпущенный 2-3 года назад — 50 тысяч IOPS.
    • Свежий Samsung 960 Pro, который стоит на одной из железок у нас в офисе — 350 тысяч IOPS.

    Свежесть определяется на момент написания статьи в 2017 году.

    Если должно быть 50 тысяч, а диск выдает сильно меньше, то:

    — он не SSD;
    — есть сетевые задержки;
    — неправильно примонтирован;
    — с ними что-то еще плохое случилось и стоит поднять алярм.



    И это все?


    Разумеется, нет =))

    Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж.
    База, которая всегда нужна — pwd, cp, mv, mkdir, touch. Остальное можно легко гуглить, как только возникает необходимость.

    Вот вам еще пара ссылочек от меня:


    Для понимания структуры папок рекомендую статью «Структура папок ОС Linux. Какая папка для чего нужна. Что и где лежит в линуксе»



    Книги и видео по теме


    Видео:
    ПО GNU/Linux — видео лекции Георгия Курячего — очень хорошие видео-лекции

    Книги:
    Командная строка Linux. Уильям Шоттс
    Скотт Граннеман. Linux. карманный справочник



    Где тренироваться


    Можно поднять виртуалку. Правда, тут сначала придется разбираться, как поднимать виртуалку )))

    А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.

    У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое. Выложил в общий доступ пароли? На тебе ддос-атаку с твоего сервера. Ну и сервер блокируют. После N-ой блокировки я плюнула на это дело. Кто хочет научиться, найдет 150р.

    Чтобы подключиться к машине, используйте инструменты:

    • Putty — командная строка
    • WinSCP — графический интерфейс

    См также:

    WinSCP — что это и как использовать
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 164

      –1

      Уж спратяли бы простыню ссылок под кат, то как-то совсем неприлично

        +1
        Так я вроде специально кат после содержания поставила… Но если плохо, то исправила, спасибо)
          0

          Содержание занимало огромное количество места в ленте, про что я собственно и написал

        +2
        Команда man — должна быть на первом месте
          +2
          Ну, в целом да =) Хотя как по мне, так проще прогуглить команду, чем мануал читать
            +2

            Пока играешься — проще. Когда работаешь — куда проще и быстрее man в терминале. Ньюанс, что если всё время только гуглить, то навык работы с man не выработается. Ещё неиспользование man может восприниматься как признак неопытности. Наблюдал даже абсурдный случай, когда на лекции из курса по cyber лектор не смог нагуглить правильный синтакс флагов для одной команды nmap, которую пытался продемонстрировать. Ему даже в голову не пришло поискать в man, а на веб-версию man в поисковой выдаче кликнуть не догадался.

              0
              «куда проще и быстрее man в терминале» — не с теми «страницами» которые сейчас идут.
                0

                В смысле "не с теми"? Там очень часто есть и что почитать об особенностях работы той или иной команды или утилиты, а для быстрого рефреша по флагам — есть поиск, забиваешь, скажем, "/-D", быстро несколько раз жмёшь "n", и если надо вернуться — "N", читаешь, жмёшь "q", пишешь команду. Если надо несколько раз сверяться — пишешь команду, в отдельном табе терминала или окне мультеплексера бегаешь по man-у. Всё это, включая навигацию по документу, делается очень быстро, если освоить клавиатурные сокращения. Куда быстрее, чем перейти в браузер и гуглить.

                  0
                  Это справедливо если специализация узка, или система не стандартна. В остальных случаях нагуглить какой-нибудь sed гораздо проще и быстрее. К примеру на том же AIX или Solaris я бы почитал man, а вот на стандартных CentOS\Ubuntu — гуглю. Потому что специалистом(человеком знающего и умеющего применять определенный инструментарий) — можно быть только узким, т.к. возможности мозга ограничены, а специалисты по(к примеру) sed нужны редко — я бы выбрал(к примеру) почитать про какой-нибудь nginx.
              +1
              Это плохой подход. Во первых — ман это актуальная документация по актуальной версии конкретной утилиты. Коэффциент достоверности у мана априори выше чем у статьи из гугла. Во вторых — ман доступен всегда, даже тогда, когда настраивая, например, iptables ты уронил этот самый доступ к интернету, на хосте. В четвёрых — это тупо быстрее. В пятых — навык пользования встроенной документацией и поиска в ней(man / info / apropos), это +50 к скиллам пользования системой. В гугль хорошо ходить когда плохо понимаешь логику какого-нить относительно сложного приложения, на начальном этапе использования или настройки. Яркие примеры — классическая тройка grep / sed / awk.
                0
                Спасибо, вы оба правы, это безусловно)) И я тоже за выработку навыка. Но пока его нет и ты новичок, то все равно потянет в гугл, согласитесь )) Может, вы просто давно прошли этот этап и не помните его) Но да, знать про man надо, уметь его использовать — тоже! Немного подправила в статье раздел про мануал
                  0
                  Так не люблю я категоричные утверждения, можно же было написать это с менее авторитарным призывом. У каждого свои потребности, кто-то используя систему вполне обходится и без манов. Представляете если я бы написал: «Читать маны — это плохой подход, нужно смотреть исходный код программ, т.к., там можно увидеть реальное поведение программы в отличие от манов.» Вполне возможно я даже не утрирую и кто-то такого мнения придерживается. Просто читая комменты на хабре устал от фраз «должен, обязан, надо делать так». Хочется сразу спросить кому я должен и кому надо.
                    0

                    Можно ещё флаги -h, --help использовать, так как у некоторых программ может не быть man'а

                      0
                      Хорошее замечание, спасибо) Добавила в статью
                        0

                        Также --usage, иногда субкомманда help/help topics и т. п. Сообщение об ошибке при неправильном запуске часто подсказывает. Есть некоторое количество утилит которые идут без мана и инфо вообще.


                        Ну и варианты установки системы без man/man-db/man-pages тоже встречаются, особенно при автоматизированной установке, в контейнерах и т. п.

                    0
                    Добавила команду в список, хоть и не на первое место)
                      0

                      Стоит добавить, что закрыть man можно клавишей q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.

                        0
                        Спасибо, добавила!
                          0
                          Уж лучше про less рассказать. Его man использует по умолчанию.
                      0
                      1. Для vi(m)'a надо ещё указать, как сохранить данные после редактирования.
                      2. Fio в пакетах более свежая версия, чем предлагаемая ссылка на исходники.
                      3. Надо уточнять, на какой системе применима данная команда, если она может быть использована только на debian based или red hat based системе.

                      Но в общем — для новичков сойдёт.
                        +1
                        1. Я специально это не писала, потому что тогда стоило бы рассказать о том, как вообще редактировать в виме. С другой стороны, если подправил что-то легкое, полезное сразу знать, как сохранить. Спасибо, добавила

                        2. Да, я ведь брала этот пример из своей статьи 2017 года)) Исправила и подписала, какую часть менять, а то вы правы, в таких инструкциях обычно копируют команду и ее же подставляют, если не сказано иное

                        3. Ох, это уже сложнее )) Добавила в начало статьи «примеры я все проверяла на cent os, red hat based системе)», пока не готова проверить на дебиан / прогуглить, какие там работать не будут))

                        Спасибо за комметарий!
                        +1
                        >Чтобы сервис test запускался автоматически при рестарте системы, используйте команду: chkconfig cdi on

                        Как команда «chkconfig cdi on» связывается с сервисом «test»?
                          +7
                          особенно учитывая, что уже давно везде systemd
                            0

                            Ну я не был бы так категоричен… Вариант с systemd/journald приятен, но реальность такова что ещё куча народу использует всякие развлечения типа upstart+rc.d/init.d и связки journald+rsyslog/syslog-ng. Тот же CentOS/RHEL 6 ещё поддерживается до конца этого года. Не помню что там у Debian и Ubuntu, но первый тоже долгоживущий.

                            0
                            Опечатка, конечно же) Спасибо, исправила!
                            +5
                            А кто автор этих упоротых иллюстраций?
                              +5
                              Тот же, что и статьи. Здравствуй, кэп, если картинки не из интернета, то их явно придумывал тот, кто писал статью)
                                0
                                ЗачОтные упоротые иллюстрации! ;-)
                                  0
                                  Картинки супер! Тян с большими глазами уже стала моим любимым персонажем. :)
                                    +3
                                    А есть варианты с rule 34?
                                  +9
                                  Чтобы запустить скрипт, нужно указать полный путь к нему. Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден.

                                  В текущей папке можно запустить скрипт через ./имя_скрипта.

                                    +2
                                    Когда скрипт только создан, ему еще надо дать право на запуск:
                                    chmod +x script.sh
                                    ./script.sh

                                      0
                                      Не обязательно давать права на выполнение, можно и так
                                      $ bash ./script.sh
                                      
                                        0

                                        Можно даже


                                        $ bash script.sh
                                      0
                                      Спасибо, интересно) Пока подумаю, добавлять ли этот лайфхак в статью, а то может лучше сразу приучаться полный путь писать)
                                        +1

                                        однозначно стоит, никто не запускает скрипты по полному пути, особенно если это делается не вручную, а из другого скрипта.

                                          0
                                          Уговорили, добавила)
                                            0
                                            Запускают… из crontab
                                        +19

                                        Статья от дилетанта для дилетантов. Это плохо на самом деле, так как даётся очень много вредных советов. Начиная от того, что под рутом работать, это нормально, заказчивая мелочами всякими, типа чтоб поиграться с linux, надо vds. Хотя сейчас достаточно wsl под windows 10.

                                          0
                                          Плюсую насчет WSL для Win10. Настраивается быстро и работать удобно (более подробно в видео youtube канала Fireship, находится по запросу «WSL», там как раз для новичков)
                                            0
                                            Да, вы правы. По сравнению с разработчиками-линуксоидами, которые и ядро сами собирают, и в консоли все делают, я явный новичок. Но не считаю, что «от новичка новичку» плохая статья. Потому что я как раз могу дать список команд, которые пригодятся «на моем уровне».

                                            Каждую команду в статье я проверила в консоли + нагуглила, так что неправду не писала. Да, в рамках моих задач работать под рутом это нормально. Хотя не спорю, что это может быть опасно. За «WSL» спасибо )
                                              0
                                              Работать под рутом ненормально даже для администраторов. Именно поэтому хорошей практикой является визуальное оформление шелла / утилит запущеных с рут правами, что-бы визуально сразу отличать опасную зону от безопасной.
                                              Пример — консольный файловый менеджер vifm запущеный из под обычного пользователя и из под рута через sudo:
                                              vifm
                                            +8
                                            Оставлю инструкцию для совсем новичков.
                                            1) Гуглим как ставить mc (midnignt commander) на вашу версию линукса
                                            2) Все
                                              0
                                              Ага, а если вы приехали к заказчику и у вас нет прав ставить сторонние приложения?
                                                +2
                                                Если за это получаешь деньги, то какой после этого ты новичок? :)
                                                0

                                                mc почему-то мне так и не зашёл. ranger вызвал вау-эффект, но к нему долго привыкать, чтобы быстро работать. А вот без screen уже не могу, хотя это из другой оперы.

                                                  0
                                                  Да, из другой. А ещё, из файловых менеджеров, есть двухпанельник vifm, с конфигом и кейбиндингами подобными vim. Вот он мне очень зашёл.
                                                0
                                                База, которая всегда нужна <...> touch

                                                Зачем? Нет, серьезно, зачем? Штука полезная в весьма ограниченном спектре применения. А для тестировщика скорее вредная, ведь ему важно понимать как давно менялось сожержимое лога или конфига.
                                                Если так нужно создать новый файл — делайте это тем же vi(m)'ом. Так, даже если окажется что файл уже существовал вы сможете просто закрыть редактор без изменений и не собьете таймстемп.
                                                  0
                                                  Потому что иногда система смотрит в какую-то папку и ждет там файл, пусть даже пустой. Чем плохо создать его через touch? По-моему, через viw как раз более извращенный вариант)
                                                    0
                                                    Я честно очень не хочу спорить на тему того, каким образом лучше создавать пустой файл. Просто замечу, что это как и есть тот самый «весьма ограниченный спектр применения» тулы, про который я писал.
                                                    На «база, которая всегда нужна» — это никак не тянет. Есть туча комманд нужнее, которые автор оставил «на самостоятельное изучение».
                                                      0
                                                      Ещё можно:
                                                      echo -n > filename.txt

                                                      Нужно разделять семантику команды. Когда нужно просто убедиться что файл будет — touch подойдёт. Когда нужно убедиться что файл будет и он будет пустой — лучше через редактор или через echo.
                                                        0
                                                        О, крутой лайфхак, спасибо)
                                                          +2
                                                          Совершенно бесполезное вступление…
                                                          >filename.txt
                                                            0
                                                            А потом надо будет как минимум нажать Enter (если хотите получить такой-же эффект как echo -n) и Ctrl-C.
                                                              +1
                                                              линукс терминал по умолчанию использует буферизованный ввод, поэтому ни одна строка не обходится без Enter. Если рискнете повторить приведенный пример то поймете бессмысленность нажатия Ctrl-C по которому у вас закроется сам терминал. Может есть элемент недопонимания? Я привела команду равносильную предыдущей но короче — выполняющую те же действия состоящую из значка перенаправления и имени файла. Результатом которой является или создание файла или его усечения до нуля.
                                                              Можно несколько усложнить и поставить впереди пустую команду
                                                              : > filename.txt

                                                              но смысла в лишних двух символах особого нет
                                                                0
                                                                В том-то и дело, что я повторил этот пример. И да. Ctrl-C не закрывает терминал, а сохраняет то что ввели(или не ввели) в файл.
                                                                  0
                                                                  Может вы пользуетесь специфичной оболочкой? Если все же bash то вот описание
                                                                  LESS=+/Redirecting\ Output man bash

                                                                  Redirecting Output
                                                                  Redirection of output causes the file whose name results from the expansion of word to be opened for writing on file
                                                                  descriptor n, or the standard output (file descriptor 1) if n is not specified. If the file does not exist it is created;
                                                                  if it does exist it is truncated to zero size.
                                                                  The general format for redirecting output is:
                                                                  [n]>word

                                                                  В любом случае, спасибо, буду знать что такое как у вас вообще возможно.
                                                                  Пока пытаюсь найти подобное в интернете, но не получается, не могли бы вы поделиться выводом этих команд для большей ясности
                                                                  echo $SHELL $TERM
                                                                  lsof -ap $$ -d 0-2
                                                                    +2

                                                                    В bash поведение, как вы описали — не надо нажимать Ctrl+C, сразу создается файл. В zsh ведет, как описывает Oxyd — принимает стандартный ввод и ждет Ctrl+C.

                                                                      0
                                                                      Интересно, это башизм или по POSIX так и должно реагировать?
                                                                      +1
                                                                      Ну zsh сложно назвать специфической оболочкой. Чай не fish хипстерский. ;-)
                                                                      echo $SHELL $TERM
                                                                      /usr/bin/zsh 
                                                                      rxvt-unicode-256color
                                                                      

                                                                      lsof -ap $$ -d 0-2
                                                                      COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
                                                                      zsh     4148446 oxyd    0u   CHR  136,3      0t0    6 /dev/pts/3
                                                                      zsh     4148446 oxyd    1u   CHR  136,3      0t0    6 /dev/pts/3
                                                                      zsh     4148446 oxyd    2u   CHR  136,3      0t0    6 /dev/pts/3
                                                                      
                                                                0
                                                                Всегда есть разные варианты. То что можно перенаравлять вывод без команды — я бы в отдельный лайфхак вынес.

                                                                К слову про разные варианты, тут ещё есть вопрос читабельности. Вспоминаем знаменитое:
                                                                echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
                                                                  +1
                                                                  Можно обойтись без тяжелой артиллерии, команда tr хорошо понимает диапазоны
                                                                  tr ' !-0:-@^-`~' '`-{' <<<'(!";'

                                                                    +1
                                                                    Меня глючит, или в данном примере вы привели обфусцированный перлом Патч Бармина™? ;-)
                                                                      0

                                                                      Осталось понадеяться что в нем есть опечатка и толпа хомячков не побежала пробовать его запустить в консоли..

                                                          0
                                                          Кхм… Стесняюсь спросить — а зачем ключ -R в команде chown -R testbase:testbase test.txt?
                                                          Учитывая что ключ -R нужен точно так же для рекурсивной смены владельца то его использование оправдано если ты применяешь это на папку, да и то не обязательно, условия бывают разные.
                                                          Я б ещё команду free и free -h добавил для понимания, что там по оперативе и свопу.
                                                          lsblk — для просмотра дисков, точек монтирования
                                                          Для df ещё б ключик -T указал бы, что бы можно было посмотреть тип фс.
                                                          Для du --max-depth= не хватает, что тоже может быть полезным
                                                            0
                                                            Хм, да, вы правы, в этой команде не нужен ключик. Но зато это делает команду универсальной. Навредить не навредит, зато не надо запоминать, «как для файла, как для папки». Но исправила)

                                                            Про free хорошее замечание, спасибо, может попозже добавлю. Или направлю комментарии людей читать, тут много полезного))
                                                              0

                                                              "навредить не навредит..." !?
                                                              А вы попробуйте применить этот ключ для /var/www на веб сервере, где у каждого сайта свой пользователь.

                                                                0
                                                                Хм, вы правы, спасибо)
                                                                  0
                                                                  Я похожим образом сломал во всей системе права доступа. Система грузилась, работала, но sudo не пускал — неправильный владелец у файла…

                                                                  В итоге переставил систему.
                                                                    0
                                                                    В итоге переставил систему.

                                                                    на самом деле надо зайти в single режиме под рутом и поменять всё назад
                                                                      0
                                                                      Поменять всё назад — очень легко звучит. Я кажется там не только владельца, но и права доступа пофигачил (я кстати так и не понял как это случилось, вероятно сделал что-то в духе «chown -R / home/username/folder», т.е. подозреваю лишний пробел — что кстати тоже известная ситуация). Система была практически чистая — проще было переставить, чем разбираться детально. Реанимировать разумеется была возможность, даже если бы сломался сингл — можно было загрузиться с live-образа и починить оттуда. Затраты по времени на переустановку для меня показались меньшими, чем изучение всех аспектов вопроса.
                                                                        0
                                                                        Изучение вопроса в любом случае полезнее чем Windows way(переустановка).
                                                              +3
                                                              Длинная простыня одной картинкой
                                                              image
                                                                  0
                                                                  Прикольная, спасибо)
                                                                    0
                                                                    Интересно, почему и у автора, и в этой картинке, и во многих статьях ls указывается без флага h?
                                                                    -h, --human-readable
                                                                         with -l and -s, print sizes like 1K 234M 2G etc.

                                                                    Я вы вообще рекомендовал сделать алиас типа такого:
                                                                    alias l='ls -alh'
                                                                      0
                                                                      Раз уж я затронул тему редактирования .bashrc, я также рекомендую новичкам воспользоваться чем-то типа этого:
                                                                      github.com/mrzool/bash-sensible
                                                                        0

                                                                        Я последнее время предпочитаю вообще в алиасы l/ls/la/ll себе exa прописывать

                                                                          0
                                                                          Почему-то сразу подумал, что это проект на rust. Есть у растовиков какая-то любовь к переписыванию coreutils.
                                                                          А в чём преимущество помимо --tree?
                                                                          В цвета ls тоже умеет. Если что есть github.com/trapd00r/LS_COLORS
                                                                            0

                                                                            Да у меня и для ls нормальные цвета были. Из важных для меня вещей — нормальные сортировки, отображение git'овых данных и нормальные операции по отображению древовидной структуры. Хотя я ещё параллельно dutree и broot (оба проекта тоже на расте) использую

                                                                              0
                                                                              За broot спасибо. Идея интересная, совместить бы как-нибудь с идеей ranger или хотябы добавить превью для файлов. Ну и man'a не хватает.
                                                                                0

                                                                                Встроенный help по ? не спасает?

                                                                                  0
                                                                                  Спасает, но не привык я как-то к такому.
                                                                                  Не юниксвейно какбы. Автор зачем-то запилил свой pager для справки с красивым скролбаром(хотя мышокй у меня не тащится), но без банального поиска по тексту. man-страница была бы лучше.
                                                                      0
                                                                      Лично на мой взгляд, для полноты, неплохо было бы ещё показать, как можно посмотреть, все ли драйвера установлены, например, как в диспетчере задач windows.
                                                                        0
                                                                        Возможно) Просто я сама этого никогда не делала, такой задачи не стояло. А статья ведь всегда по умолчанию ИМХО, в моем ИМХО в обязательном списке этой команды нет))
                                                                        –1
                                                                        спасибо большое за дельные советы.
                                                                        Завтра же расшарю их своим новеньким, чтобы обучались.
                                                                          0
                                                                          Спасибо за фидбек! :)
                                                                          –1
                                                                          Статья класс!
                                                                            0
                                                                            Спасибо за фидбек))
                                                                            0

                                                                            Спасибо за статью, как новичку очень пригодится. В таком стиле, но с большим количеством примеров есть книга Скотт Граннеман — Linux. Необходимый код и команды. Карманный справочник

                                                                              0
                                                                              Да! Да! Мне тоже Граннеман зашел, поэтому он есть в разделе книг :))
                                                                              0
                                                                              sudo shutdown -h 23:15 (выключить компьютер)
                                                                              sudo shutdown -c 23:15 (отменить выключение компьютера)
                                                                              sudo reboot (рестарт)
                                                                              sudo fdisk -l (список хардов)
                                                                              sudo mount -t ntfs /dev/sdb1 /media (sdb1-название харда)
                                                                              mount (монтировать «/откуда /куда»)
                                                                              ifconfig (Узнать ip адрес)
                                                                              ping 94.142.141.199 -t -l 32100 (трассировка пакетов)

                                                                              nano /etc/sysctl.conf (настройки swap)
                                                                              sudo gedit /etc/hosts (файл хост)

                                                                              sudo -i (стать root)
                                                                              passwd (имя пользователя) (задать пароль)
                                                                                0
                                                                                Спасибо, хорошие команды)
                                                                                  0
                                                                                  ifconfig (Узнать ip адрес)

                                                                                  лучше ip a


                                                                                  а посмотреть настройки вайфая — iwconfig

                                                                                    0
                                                                                    Почему лучше?
                                                                                      0

                                                                                      меньше лишней информации — это удобнее, когда нужно только айпишник посмотреть.
                                                                                      ifconfig может и три экрана текста выдать на некоторых машинах

                                                                                        +2
                                                                                        Потому, что net-tools уже по умолчанию уже не суют много куда. По этому поводу была целая статья тут habr.com/ru/post/320278
                                                                                        –1
                                                                                        О, это вообще отличные команды! Спасибо большое, я совсем забыла про IP, хотя сама часто использую тот же ipconfig в винде. Добавила в статью, только hostname, он посимпатичнее будет)) Но и про ifconfig написала.

                                                                                        А про вайфай пусть в комментариях читают, потому что мне кажется, это только если админ запросит инфу, но он тогда и команду подскажет
                                                                                        +1
                                                                                        fdisk для информационных команд лучше не использовать — он требует рутовых прав и этого лучше избежать, тем более по*ерить таблицу разделов, случайно введя не тот ключ, не самое приятное развлечение. Куда лучше использовать lsblk.
                                                                                        ifconfig в современных системах заменила утилита ip (ip addr аналог ifconfig без ключей), с куда более богатыми возможностями.
                                                                                        0
                                                                                        Статья выглядит как будто очень краткий пересказ книги «Карманный справочник Linux» Скотта Граннемана. После прочтения у новичка будет очень много вопросов, ища ответы на которые придется изучать всю информацию заново.
                                                                                          0
                                                                                          Хм, ну вы же не новичок, откуда вы знаете, будут ли у него вопросы?) А ссылки я дала по каждой команде, где еще почитать) Я делала не по книге, скорее по тому, что лично мне пригождалось чаще всего
                                                                                            0
                                                                                            Меня можно назвать новичком в использовании данной ОС, да и использую я ее не часто и все еще помню моменты, которые вызывали у меня вопросы в самом начале изучения. Например, для меня первое время была загадкой та мешанина информации, которую выдавала команда ls -l, а разобравшись в этом мне стало проще использовать chmod для разграничения прав к файлам/папкам используя восьмеричный формат.
                                                                                              0
                                                                                              Интересно)) Для меня ls -l выглядит намного понятнее простого ls =)
                                                                                                0

                                                                                                ls -lh будет еще понятнее, потому что размер файлов выдает в "человекочитаемом" виде

                                                                                                  0

                                                                                                  Всё относительно. Без -h я ещё могу жить, можно привыкнуть быстро оценивать размеры и в байтах. А вот без обратной сортировки по времени часто жить довольно трудно, особенно когда надо быстро найти имя последних изменившихся логов в большом списке — спасает


                                                                                                  ls -altr

                                                                                                  Набираю уже рефлексивно даже когда не надо.

                                                                                                +1
                                                                                                Попробуйте применить к файлам утилиту stat. Она покажет права сразу в восьмеричном виде. Например так:
                                                                                                stat -c"%#a/%A %n" *
                                                                                                Показывает и в восьмеричном и в в human readable виде. А вообще права на файлы в восьмеричном виде запоминаются просто — r/w/x == 4/2/1. ;-) Дальше остаётся только сложить цифры и получить нужную комбинацию прав для определённой категории (владелец/группа/все остальные). Например мы хотим для файла следующие права: rwx для владельца, rw для группы, r для всех остальных, в результате: rwx == 4+2+1 == 7, rw == 4+2 == 6, r == 4. Результирующие права будут 764.
                                                                                            0
                                                                                            Man, man, man
                                                                                            Вот именно эта команда должна быть на первом месте.
                                                                                            Бывают такие места, где и мобильной связи нет от слова совсем.
                                                                                              –2
                                                                                              Да, я ее уже добавила, но на первое место не хочу, извините)
                                                                                                0
                                                                                                Справка по встроенным командам:
                                                                                                help enable
                                                                                              +5
                                                                                              ну… позанудствую
                                                                                              Linux — это операционная система. Как винда (windows), только более защищенная.

                                                                                              линукс это ядро, а не ОС
                                                                                              и исходя из этого
                                                                                              А еще линукс бесплатный

                                                                                              есть коммерческие дистрибутивы, типа RHEL, которые требуют платную подписку

                                                                                              В винде легко подхватить вирус, в линуксе это практически невозможно.

                                                                                              это не потому что «линукс более защищенный чем винда»… в линуксе тоже были эпичные дырки… типа получения рута через открытый в vim текстовый файл… но если продолжать тему то опять в холивар скатимся…

                                                                                              Чтобы сервис test запускался автоматически при рестарте системы, используйте команду:chkconfig test on

                                                                                              вот допустим я почитал статью и захотел линукс, взял убунту свежую и пишу вашу команду и…
                                                                                              chkconfig: command not found
                                                                                              и что делать?

                                                                                              Если же приложение запускается как сервис, то все еще проще:

                                                                                              вот я пришел с винды… первый вопрос, а моё приложение может запускаться как сервиc? могу я запустить mc как сервис?
                                                                                              ===
                                                                                              мануал какбы для новичков… но почемуто подразумевается что я много уже чего знаю специфического…
                                                                                                –1
                                                                                                Спасибо, вы правы! Про платные дистрибутивы я хотела написать, но… Слушайте, о них люди и так узнают) А любят линукс в том числе за бесплатность.

                                                                                                В холивар про защищенность мы точно не скатимся, потому что в этой сфере я совсем профан. Скорее, положусь на ваше мнение. Это скорее упрощенно для новичка, чем отличаются две системы )

                                                                                                А про chkconfig я уже добавила в начало статьи, что свои примеры тестировала на centos =) А на тему «что делать» — переходить по ссылке из «см также», или читать man, или гуглить.

                                                                                                «вот я пришел с винды… первый вопрос, а моё приложение может запускаться как сервиc? могу я запустить mc как сервис?» — хм, что-то я сомневаюсь, что у новичка возникнет такой вопрос. Как запустить mc написано, зачем его запускать как сервис то?

                                                                                                Если у вас есть приложение, которое должно запускаться как сервис, вы обычно об этом знаете)) Вот вы тестируете приложение, знаете, что оно запущено как сервис. Это напоминался, как в таком случае остановить / запустить.

                                                                                                Не поняла, что конкретно специфического должен знать новичок, чтобы у него получилось выполнить команды из статьи? Ну ок, запуск сервиса уже посложнее, тут надо сервис иметь. Все остальные команды замечательно будут работать (по крайней мере на red hat based системе)
                                                                                                  +1
                                                                                                  или читать man, или гуглить.

                                                                                                  сложно понять как читать man на неизвестно что :) остается только гуглить

                                                                                                  зачем его запускать как сервис то?

                                                                                                  потому что написано что «а если приложение умеет то..»… вот у меня вопрос, а какое приложение умеет? может mc умеет?

                                                                                                  Как запустить mc написано, зачем его запускать как сервис то?

                                                                                                  а вдруг я хочу в каждом окошке с терминалом нажать ctrl+o и получить запущенный mc? (понятно что это не так делается… но допустим я совсем не понимаю)

                                                                                                  Не поняла, что конкретно специфического должен знать новичок

                                                                                                  например чтобы запускать программы, надо чтобы у них были execute права, что после винды очень нетривиально… в винде скачал exe и запустил сразу… а в линуксе… ничего не произойдёт… и опять надо чтото сразу гуглить
                                                                                                    0
                                                                                                    Но ведь это уже не совсем про команды, «надо знать / ставить execute права», хотя… в целом да, можно добавить в раздел создания файла, подумаю, спасибо)
                                                                                                      0
                                                                                                      Вам показать execute права в винде, или сами найдете в разделе «Свойства->Безопасность» у любого файла?
                                                                                                        –1
                                                                                                        Для определённых расширений файлов(bat, exe, cmd как минимум), права на исполнение, в windows, выдаются автоматически. В линукс такого нет, хотя-бы потому что в линукс нет такого понятия как расширение файла.
                                                                                                          0
                                                                                                          >выдаются автоматически
                                                                                                          Вас же не затруднит привести ссылочку на документацию, где такое написано?
                                                                                                      0
                                                                                                      Не в бесплатности дело. Люди охотно платят за саппорт и просто донатят.
                                                                                                      spi-inc.org/corporate/annual-reports/2018.pdf
                                                                                                      Вот например отчёт за 2018 год. Тот же Debian собрал больше 300 000$ пожертвований (что конечно пшик, да).
                                                                                                        0
                                                                                                        Это один из плюсов, что я слышу от линуксоидов, поэтому я внесла его в статью)
                                                                                                        0
                                                                                                        Все остальные команды замечательно будут работать (по крайней мере на red hat based системе)

                                                                                                        Чё, правда о_О


                                                                                                        [root@xxxxx ~]# chkconfig --list
                                                                                                        
                                                                                                        Note: This output shows SysV services only and does not include native
                                                                                                              systemd services. SysV configuration data might be overridden by native
                                                                                                              systemd configuration.
                                                                                                        
                                                                                                              If you want to list systemd services use 'systemctl list-unit-files'.
                                                                                                              To see services enabled on particular target use
                                                                                                              'systemctl list-dependencies [target]'.
                                                                                                        
                                                                                                        [root@xxxxx ~]# cat /etc/redhat-release 
                                                                                                        CentOS Linux release 8.1.1911 (Core)
                                                                                                          +1
                                                                                                          Понятие «свободный» и «бесплатный» хоть и идут за частую вместе но являют собой разные вещи.
                                                                                                          RHEL предлагает к дистрибутиву свой сервис — поддержку и только эта работа стоит денег. Все исходники этого дистрибутива выложены для всеобщего доступа и являются свободными ну и бесплатными если вдруг кому то не придет в голову их продавать — что совершенно не воспрещается -:)
                                                                                                            0

                                                                                                            Не все, iirc. Базовая система — да, а вещи для HA, вроде, не все открытые были.

                                                                                                              0
                                                                                                              Согласна, из отдельного крана вполне может идти водка но только не вместе с пивом -:)
                                                                                                              А уж решение сделать ерша всегда остается на стороне клиента
                                                                                                        0
                                                                                                        Не холивара ради. Если тут есть джедаи вима, не могли бы сказать, что конкретно дает его превосходное знание, кроме обостренного чувства прекрасного?
                                                                                                          –1
                                                                                                          Сложно сказать, на самом деле. Я когда-то начинал с Emacs с его пальцеломающими комбинациями, потом перелез на vim, ибо вводить тектосвые команды мне как-то проще.

                                                                                                          «Странность» обоих редакторов объясняется тем, что им уже очень много лет. Они были созданы в те далёкие времена, когда компьютеры были большими и медленными, а понятий «наиболее распространённая ОС» или «стандартная клавиатура» не существовало. В Linux их полюбили за то, что они а) абсолютно свободные, в противовес большинству современных редакторов; б) по современным меркам потребляют просто крохи ресурсов, по этой же причине они из коробки доступны в большинстве дистрибутивов. Как следствие, vim есть просто везде, на абсолютно любой машине с линуксом.

                                                                                                          Огромная база плагинов позволяет нарастить функциональность до полноценной IDE, что вкупе с, опять же, «изкоробочными» компилятором Си и интерпретатором bash позволяет сразу, почти без каких-то настроек и установок просто начать работать: создавать, поднимать, настраивать.

                                                                                                          Утрированно говоря, вам дали комп с Windows и сказали что-то поднять или настроить: нужно скачать текстовый редактор, потому что блокнот ни черта не умеет, нужно скачать файловый менеджер, потому что проводник ни черта не умеет, и прочее. Вам дали комп с Linux и сказали что-то поднять или настроить: вы запустили vim и погнали. В нём есть всё.

                                                                                                          Другой момент, а нужно ли это умение именно вам как конкретному специалисту? Это знаете только вы. Лично я так настоящим «гуру» и не стал, ибо, являясь java-разработчиком, сложным администрированием Linux я не занимаюсь, для правки конфигов мне достаточно nano. Vim просто навевает ностальгию по юности.
                                                                                                            –1
                                                                                                            А про главное преимущество и причину создания vim-like плагинов к различным IDE вы не рассказали. Я про режимы.
                                                                                                            Вообще на тему преимуществ/недостатков вима написано(в том числе на хабре) уже достаточно.
                                                                                                              –1
                                                                                                              Мне всегда казалось, что эти плагины создавались в первую очередь для динозавров, которые оказались в современном мире, где балом правят Sublime Text, Visual Studio и intellij IDEA. Потому что ну для чего ещё нужны режимы, когда у нас есть мышка и куча пунктов меню?
                                                                                                                0
                                                                                                                Для чего нужно неудобное переключение на мышку(которая ещё и к тунельному синдрому приводит), когда есть эргономичная клавиатура и навык слепой печати?
                                                                                                                Эти плагины(а нынче зачастую и функция из коробки) именно ради избавления от мышки используются.
                                                                                                                  0

                                                                                                                  То-то ideavim такой популярный среди тридцатилетних динозавров.


                                                                                                                  Ставить sublime в один ряд с notebook++ я бы понял, но ему даже до atom/vscode далеко, не говоря уже о idea/vs/eclipse.

                                                                                                                +1
                                                                                                                Как следствие, vim есть просто везде, на абсолютно любой машине с линуксом.

                                                                                                                Нет. Часто есть vi, а это не то же самое.


                                                                                                                Огромная база плагинов позволяет нарастить функциональность до полноценной IDE, что вкупе с, опять же, «изкоробочными» компилятором Си и интерпретатором bash позволяет сразу, почти без каких-то настроек и установок просто начать работать: создавать, поднимать, настраивать.Огромная база плагинов позволяет нарастить функциональность до полноценной IDE, что вкупе с, опять же, «изкоробочными» компилятором Си и интерпретатором bash позволяет сразу, почти без каких-то настроек и установок просто начать работать: создавать, поднимать, настраивать.

                                                                                                                Тоже не совсем правда. От vim/emacs с плагинами до IDE уровня IDEA довольно далеко. Хотя NetBeans, ARM Studio и т. п. побить не сложно. Ну и нормальной IDE побить Emacs для CL будет нереально, как и в случае со SmallTalk. Ситуация с использованием vim/emacs/atom/vscode в качестве IDE несколько улучшилась за счёт lang server'ов (rls/racer, clangd etc).


                                                                                                                У vim есть важный бонус, когда всё плохо с сетью: в нём реально работать даже когда rtt вырастает до сотен миллисекунд. С nano такого счастья не будет.

                                                                                                                  0
                                                                                                                  Благорарю за развернутый ответ.
                                                                                                                  0

                                                                                                                  Я, конечно, не джедай, но лично мне Vim нравится из-за продвинутых возможностей работы с текстом (nano не то что рядом не стоял, а на расстоянии многих световых лет), режимов ввода, возможности использовать регексы в записи макро, и навигации, заточенной под десятипальцевый набор текста.

                                                                                                                  +3
                                                                                                                  В принципе нормально для совсем чего-то базового.
                                                                                                                  Некоторые вещи однозначно устарели… в rhel/fedora/centos уже dnf, а не yum да и забыли про rpm. service уже немного depricated учитывая, что почти везде systemd. Стоит вероятно systemctl stop blabla.service и так далее. Вообще достаточно базовые вещи… но я думаю стоит написать побольше, там w, ip, ss, cat, awk, grep, tail, find, screen, как работают <> <<>> |, что такое stdin, stdout, stderr. Если про убунту — упомянуть нетплан. Если про mc — то базовые шоткаты, упомянуть про .netrc, хотлисты, быстрые переходы, сортировку, сохранение энкодинга.
                                                                                                                    0
                                                                                                                    Спасибо, хороший комментарий)
                                                                                                                    Но писать про awk, grep и прочая — это скорее на каждую такую команду нужна отдельная статья, больно они сложные. Разве что в этой статье ссылки дать типа как «вот эти еще супер полезные» )) А про то, как работают стрелочки, есть ссылка на статью в разделе «И это все?» :)
                                                                                                                      0

                                                                                                                      Ну как сказать "забыли про rpm", он всё равно внизу живёт и иногда нужен и/или полезен. Начиная от rpm -qa и rpm -ql. Ну и в современном CentOS/RHEL 8 yum как команда доступен, хоть и является симлинком на dnf-3

                                                                                                                      +2
                                                                                                                      Сейчас проверил и выяснил, что команду из вашего примера
                                                                                                                      mkdir -p olga/dir--{00{1..9},0{10..99},100}

                                                                                                                      можно заменить на
                                                                                                                      mkdir -p olga/dir--{000..100}

                                                                                                                      Результат будет такой же, а команда выглядит короче, проще и понятнее.
                                                                                                                      Т.е. достаточно просто явно указать один раз диапазон и заполняющие нули (возьму на вооружение).
                                                                                                                        0
                                                                                                                        Любопытно, спасибо! Хотя подозрительно, в регулярках, например, такое работать не будет, а тут работает, ишь ты) Чуть позже исправлю в статье, спасибо)
                                                                                                                          +1
                                                                                                                          Это не регулярка, выполните в терминале
                                                                                                                          LESS=+/"Brace Expansion" man bash
                                                                                                                        0
                                                                                                                        Привет, спасибо за статью, полезно для закладок.
                                                                                                                        Может кто подсказать, как изменить последовательность загрузки сервисов при автозагрузке, чтобы, грубо говоря, nginx стартовал гарантированно после загрузки unbound?
                                                                                                                          0
                                                                                                                          если используется systemd, то можно поправить юнит и добавить директиву After. man systemd.unit
                                                                                                                            0
                                                                                                                            Допустим после mysql
                                                                                                                            [Unit]
                                                                                                                            After=mysql.service
                                                                                                                              0
                                                                                                                              Именно .service, не .target?
                                                                                                                                0
                                                                                                                                .target на самом деле, это просто группа сервисов сгруппированная по какому-нибудь принципу. Так что в зависимостях никто не мешает использовать конкретные сервисы, а не их группы.
                                                                                                                                  0
                                                                                                                                  Спасибо большое всем ответившим)
                                                                                                                                +1

                                                                                                                                Причём лучше не редактировать /usr/lib/systemd/system/nginx.service, а сделать override в /etc/systemd/system/nginx.service.d/something.conf

                                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                              0
                                                                                                                              Спасибо )
                                                                                                                              +1
                                                                                                                              В винде легко подхватить вирус, в линуксе это практически невозможно.

                                                                                                                              Серьезно?
                                                                                                                                0
                                                                                                                                Ага. Вот прямо сейчас миллионы роутеров под OpenWRT (читаем — под linux) уязвимы, имеется сравнительно свеженький (первоапрельский) CVE, по-простому — баг в пакетном менеджере. И такая ситуация повторяется с завидной периодичностью. А тут автор еще и работает под рутом. Да еще и пароль у этого рута для ssh небось есть, остается только в интернет голым выставить… без файрвола.
                                                                                                                                  0

                                                                                                                                  Да даже с файерволом но без fail2ban..

                                                                                                                                0
                                                                                                                                Я слышала, что учат английский по комиксам…
                                                                                                                                Вижу спецификация к вашей статье разрастается как у Бьерна Страуструпа, от сюда просьба
                                                                                                                                не могли бы вы добавить картинку Торвальдса в плаще с вытянутой вверх рукой в начало статьи?
                                                                                                                                Здорово! Спасибо за необычную подачу.
                                                                                                                                  +1
                                                                                                                                  Спасибо) Я обычно ставлю картинки в начало статьи, но тут из-за картинки дольше листать до содержания, а смысл статьи как раз в том, чтобы быстро его увидеть и тык-тык куда надо)
                                                                                                                                    0
                                                                                                                                    Это вам спасибо. Такой подачи я еще не встречала. Мой комментарий был немного с иронией, а смысл заключался в том чтобы добавлять, изменять, улучшать, в данном случае ваш топик, необходимо хорошо проверять советы и предложения. Бородатые специалисты придерживаются даже такого правила — чтобы добавить в готовый продукт что то новое и доказавшее свою необходимость, то следует удалить менее значимое чтобы поддержать материал в актуально простом состоянии. Как выход из «переосложнения», отложите накапливающийся материал для следующей статьи. Буду с нетерпением ее ждать
                                                                                                                                      +1
                                                                                                                                      Да, это очень хорошее правило) Поэтому я вношу лишь минорные правки в статью)) Следующей статьи именно по линуксу не будет, я ведь в нем новичок, базу дала, дальше книги / практика. Статьи будут по другим тематикам :)
                                                                                                                                  0
                                                                                                                                  Извините, но больше похоже на «Некоторые слова, которые, если их ввести в черное окно, могут оказаться командами Linux».
                                                                                                                                  Новичку надо не гонять по папкам и ставить софт, а сначала осмотреться. То есть, самое первое нужны команды поиска, сортировки, чтения и конвейеры. ls, cat, find, grep, less, more, tail, head, ps и прочие. И к каждой команде надо поиск и сортировку. То есть, ls обязательно с сортировкой по имени, дате, и с grep. Магия «что угодно» | grep «что надо» должна привлечь новичка и наглядно показать почему так удобнее и быстрее-то. На этом этапе можно перенаправление ввода/вывода, а можно сразу поиск внутри текста с vi и без vi.
                                                                                                                                  Потом надо бы составить представление о компуктере (проц, матерная плата, память, диски, контроллеры, сетевые карты), посмотреть список служб и заданий, посмотреть чего куда смонтировано, кто заходит в систему и кто сейчас подключен и т.д. То есть, всякие lsblk, lscpu, free, dmesdg, mount, fstab, crontab и конечно systemctl
                                                                                                                                  Потом файловые ссылки, базовые навыки network manager и ip — и можно уже что-то создавать полезное. Файлы куда-то копировать, коммандеры ставить и пакетные менеджеры осваивать
                                                                                                                                    0
                                                                                                                                    Вы правда считаете, что не зная простейших команд типа mkdip, cd, cp, новичок должен сразу разбираться в грепе?) Нет уж, не согласна)
                                                                                                                                      0
                                                                                                                                      Именно так и работает обучение. Вы показываете что-то классное и интересное. А кому интересно ставить права на файлы, не зная что это за права, что за пароли, кто все эти люди? Или создание папки и пустого файла? (Кстати, у вас в примере с touch — сам touch не нужен, если вы не знаете перенаправление ввода. Любой редактор типа vi, nano и т.д. сам создает отсутствующий файл)
                                                                                                                                    0

                                                                                                                                    Спасибо! Я новичок, по сути.

                                                                                                                                      0
                                                                                                                                      И вам спасибо за фидбек)
                                                                                                                                      0
                                                                                                                                      Про установщики:
                                                                                                                                      их — океан! На любвлнй вкус, цвет, запах.
                                                                                                                                      обёртки, оболочки обёрток…
                                                                                                                                      расказали про компиляцию рара, изабыли про ауру (AUR).
                                                                                                                                        +1
                                                                                                                                        И вообще, так как вы расписали, устанавливать можно только в самом последнем случае:
                                                                                                                                        не факт что все пакеты необходимые для компиляции существуют в системе (частая проблема).
                                                                                                                                        ручная установка убивает автоматическое разруливание зависимостей в системе.

                                                                                                                                        На текущий момент, в системах с пакетным менеджером, правильно скомпилировать исходный код в установочный пакет, и потом полученный пакет установить через пакетный менеджер.
                                                                                                                                        +2

                                                                                                                                        У вас в разделе как создать архив команда:
                                                                                                                                        tar -cvf archive.tar.gz /home/test
                                                                                                                                        фактически создает несжатый архив archive.tar
                                                                                                                                        Ей не хватает ключика z для собственно сжатия.
                                                                                                                                        tar czvf archive.tar.gz /home/test

                                                                                                                                          0
                                                                                                                                          Спасибо, добавила)
                                                                                                                                            0
                                                                                                                                            Так не работает
                                                                                                                                            Для создания архива стандартная комбинация cvfz:
                                                                                                                                            tar -cvfz archive.tar.gz /home/test

                                                                                                                                            ключ f должен быть последним, как в комментарии выше czvf, или cvzf. Поправьте пожалуйста
                                                                                                                                              0
                                                                                                                                              Исправила, спасибо!

                                                                                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                                                        Самое читаемое