Задать вопрос
Ответы пользователя по тегу Linux
  • Если выучить чисто Unix, то насколько потом легко перейти на Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    В общем случае, Unix и Linux очень похожи.

    Обе POSIX. Идеология у них одинаковая, множество команд - тот же набор GNU.
    Ядро конечно разное, какие-то отдельные вещи различаются.

    Но на том моменте, когда человек уже сходу может назвать хотя бы 10-20 признаков чем юникс отличается от Линукса, он не будет задавать вопросы подобно вашему.
    Ответ написан
    Комментировать
  • Можно ли убить все процессы с помощью терминала Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    можно
    командой kill
    Ответ написан
    2 комментария
  • Какой учебник выбрать для изучения Linux, если цель стать системный администратором?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Вот закончишь ты школу. Кем ты станешь после школы?
    Профессионалом чего-то? Вряд ли.
    Хотя бы по одному предмету станешь специалистом? Нет. Это базовые знания.
    А сколько учебников было? Даже по одному предмету? Один понятный? Два понятных? десяток, и все равно не получил полноту картины?

    ТОЖЕ САМОЕ ВЕЗДЕ.

    Нет одного учебника, который даст "для полноты картины хотелось бы выбрать более менее понятный учебник".

    Читай много и разное. Что-то полистать, что-то почитать целиком. Берешь в гугле топ-10 книг по линукс или юникс, качаешь, читаешь все подряд.
    Ответ написан
    Комментировать
  • С какого дистрибутива Linux начать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    С любого.
    Ответ написан
    Комментировать
  • Что использовать для создания консольного меню средствами терминала?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Стандартный select недостаточен?
    Ответ написан
    Комментировать
  • Как найти кто дёргает скрипт?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    пользовательские кроны находятся в /var/spool/cron/crontabs
    Ответ написан
    Комментировать
  • Как реализовать управление фоновым приложением через консоль?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Нужно в итоге, чтобы работало как, например, у mongoDB - вводишь mongo и консоль переводится на управление приложением.


    Ну так там СОВЕРШЕННО не так просто.
    есть отдельное приложение монго сервер и есть отдельное приложение монго клиент, которое подключается к серверу по порту. Причем оно подключается даже не к консоли а к сетевому сокету, и можно с другого компа подключаться.

    Так и у вас - фоновое приложение слушает сокет, воспринимает команды и выполняет их.
    Ответ написан
    1 комментарий
  • Как сделать вывод толко 1 строки после совпадения grep -A 1?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Попробуй так:
    sed -n '/ABCD/{x;n;p;D}' test.txt
    Ответ написан
    Комментировать
  • В каком каталоге находится ядро Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    в /bin лежат различные системные бинарники
    /proc это вообще виртуальная файловая система procfs, ее нет на диске
    /root это домашний каталог юзера root

    ядро (или несколько), лежат в /boot
    Ответ написан
    Комментировать
  • Как послать сигнал на дочерний sh процесс?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    sh -c "java -jar ol.jar"
    Зачем такая команда, если можно сразу java -jar ol.jar?

    Я посылаю сигналы на PID sh процесса, и только 9 сигнал срабатывает (логично, он же его убивает), остальные сигналы sh съедает сам и не посылает дочернему процессу.

    sh ничего не съедает и передавать автоматом в дочерние процессы он может только sighup, который он не передаст поскольку у вас интерактивная сессия, и сигнал 9 до процесса не доходит - процесс прибивается ядром.

    Собственно пока не будет понятно, зачем вы запускаете sh из которого запускаете jar, не очень понятно что происходит.

    Возможно, вам нужно это делать вот так:
    java -jar  ol.jar &
    echo $! > ol.pid

    и следовательно получать pid джава процесса в файле, в дальнейшем с ним работать.
    Ответ написан
    Комментировать
  • Сколько места нужно команде gzip?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    нет

    gzip - потоковый архиватор, он не работает с файлами, он работает с потоками.

    tаr сам сжимать не может, опция говорит что нужно передать выходной поток не в файл а в gzip (можно убедиться, что удалив gzip из системы, опция в tar перестанет работать)

    Поэтому выход tar перенаправляется в gzip, который на ходу сжимает, и уже пишет в .tgz файл. Промежуточного файла не создается.

    P.S. степень сжатия gzip гораздо ниже любого другого архиватора, который имеет возможность проанализировать файл целиком, но именно его архитектурное преимущество и позволяют связке tar+gzip держаться на плаву столько лет.
    Ответ написан
    Комментировать
  • Какая ОС Linux имеет самую высокую защиту?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Настроенная грамотным специалистом и в руках опытного пользователя.
    Ответ написан
    Комментировать
  • Что значит зелёная заливка имени файла в листинге?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Означает Sticky Bit на каталоге /tmp. Обратите внимание на последнюю букву в правах доступа.
    Ответ написан
    Комментировать
  • Влияет ли кол-во файлов в директории на скорость записи (создания новых файлов) в ext4?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Влияет, но смотря сколько файлов. Индексируются хеши файлов, поэтому довольно быстро можно найти файл.

    Разница между 100 и 1000 файлов будет минимальна (менее процента)
    Разница между 100 и 1.000.000 файлов будет немного заметна, но только пока блоки содержащие директорию не закешируются в памяти.

    По сравнению с ext3, ext4 ОЧЕНЬ сильно оптимизировала работу с множеством файлов.

    Ниже edo1h привел пример теста, но он некорректно использовал внешнюю команду, получив основную нагрузку на процессор, а не на диск. Мой комментарий вышел слишком длинный поэтому решил его в ответ добавить:
    spoiler
    Давайте померяем еще раз вашим скриптом, а потом более правильным:
    $ test() { for A in `seq 1 10000`; do touch $RANDOM.$RANDOM.$A; done }

    $ time test
    real 0m8.406s
    user 0m5.939s
    sys 0m2.548s
    $ time test
    real 0m7.943s
    user 0m5.699s
    sys 0m2.333s
    $ time test
    real 0m7.929s
    user 0m5.647s
    sys 0m2.369s

    Как мы видим, ничего особо не видно. Непонятно быстрее или медленнее. Вдобавок user time занимает основную часть времени и видимо сильно влияет на результат.

    Перепишем скрипт:
    $ test1() { for A in `seq 1 10000`; do echo "" > $RANDOM.$RANDOM.$A; done }
    Почистим файлы и попробуем заново
    $ rm -rf *
    $ time test1
    real 0m0.310s
    user 0m0.111s
    sys 0m0.196s

    Сразу остановимся и увидим, что теперь у нас основное время это именно sys, а не user тайм, то есть уже чаще скрипт ждет пока выполнятся дисковые операции, а не дисковые операции ждут пока им дадут команду что-то делать. Повторим команду несколько раз:

    $ time test1
    real 0m0.331s
    user 0m0.101s
    sys 0m0.229s

    $ time test1
    real 0m0.331s
    user 0m0.129s
    sys 0m0.200s

    $ time test1
    real 0m0.402s
    user 0m0.118s
    sys 0m0.229s

    $ time test1
    real 0m0.324s
    user 0m0.087s
    sys 0m0.236s

    $ time test1
    real 0m0.382s
    user 0m0.129s
    sys 0m0.253s

    $ time test1
    real 0m0.387s
    user 0m0.102s
    sys 0m0.283s

    $ time test1
    real 0m0.421s
    user 0m0.115s
    sys 0m0.299s

    $ time test1
    real 0m0.465s
    user 0m0.115s
    sys 0m0.312s

    $ time test1
    real 0m0.465s
    user 0m0.139s
    sys 0m0.324s

    $ time test1
    real 0m0.467s
    user 0m0.139s
    sys 0m0.327s

    $ time test1
    real 0m0.553s
    user 0m0.156s
    sys 0m0.365s

    $ time test1
    real 0m0.560s
    user 0m0.194s
    sys 0m0.364s

    Итоги: видно что кеширование где-то работает, но с каждыми новыми файлами тенденция к замедлению есть, и она всего лишь через несколько десятков тысяч файлов увеличилась почти в полтора раза.
    То есть задолго до миллиона я получу замедление в несколько раз. Но это на моей виртуалке. На каждом оборудовании надо тестировать индивидуально.
    Ответ написан
    Комментировать
  • Какой выбрать дистрибутив линукс для вкатывания в консоль и программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Вы программируете непосредственно в линуксе, или в каком-то IDE?
    В этом случае совершенно не важно, какой Линукс, лишь бы в нем запустилось то, в чем вы непосредственно работаете. С этой точки зрения разные дистрибутивы мало отличаются. Максимум погуглить как установить окружение в вашем дистрибутиве и все - консоль есть в каждом популярном Линуксе, IDE тоже.

    А из-за обновления может много чего упасть.
    Для серверных вариантов - почти в каждом дистрибутиве есть LTS (long-term-support) версия.

    Для десктопа, берешь например монетку и кидаешь среди Fedora, Ubuntu, CentOs, Manjaro - этого выбора более чем достаточно.
    Ответ написан
    Комментировать
  • Продолжится ли выполняться процесс после прерывания соединения SSH?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Почитайте про команды nohup или screen/tmux

    Они как раз и позволяют на удаленной машине запустить процесс так, что если оборвется связь к удаленной машине, процесс запущенный там не прервется.
    Ответ написан
    Комментировать
  • Как правильно экранировать символы $ и ' при передаче их в ansible shell?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Почитать документацию шелла по кавычкам.

    Вкратце:
    1. Внутри одинарных кавычек ВСЕ символы теряют свое специальное значение. Включая backslash, поэтому
    'STRING1\'STRING2'
    - это не экранированная одинарная кавычка в кавычках, а строка STRING1\ в одинарных кавычках потом STRING2 без кавычек, а потом еще одна открывающая одинарная кавычка, которая незакрыта.
    Можно делать так:
    'STRING1'\''STRING2'

    2. Внутри двойных кавычек, все символы теряют свое специальное значение кроме $, backslash и обратных одинарных кавычек. Примеры:
    "${VARIABLE} \${VARIABLE} $(hostname) `hostname`"
    значение VARIABLE, строка ${VARIABLE} которая раскроется позже, дважды результат команды hostname вызванный разными способами
    Ответ написан
    Комментировать
  • Как задать права на удаление другим пользователям Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Право на удаление файла даются на директорию, а не на сам файл, потому что удаляя файл, ты "редактируешь" директорию.
    Имея право на запись в файл, ты можешь его "обнулить", записав в него ничего, но не удалить.
    Ответ написан
    Комментировать
  • Как ограничить доступ root?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Нет. Неважно как назван рут, это пользователь с UID=0, и у него в любом случае будут ВСЕ права.
    Но запретить ему заходить по ssh несложно. Просто пропишите ему пустой пароль и все.
    На всякий случай можно даблчекнуть в настройках sshd, что пользователей с пустым паролем не пускают, но по дефолту это и так должно быть отключено
    Ответ написан
  • Alias в сценариях linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Алиасы работают только в интерактивном режиме шелла.

    При запуске в скриптах они работать не будут.
    Если вам нужно, пользуйтесь функциями - они могут и алиас заменить и в скриптах будут работать
    Ответ написан
    Комментировать