Ответы пользователя по тегу Ubuntu
  • Как отследить то, что самопроизвольно закрывает приложения NET в Ununtu?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если приложение, запущенное через &, попробует написать что-то в консоль, то при невозможности написать в эту консоль начнутся проблемы (приложение словит SIGHUP или SIGPIPE). Решение - перенаправить явно весь вывод в /dev/null:

    command > /dev/null 2> /dev/null &

    Вместо двух перенаправлений в /dev/null можно одно перенаправление в /dev/null и одно в другой:

    command > /dev/null 2>&1 &

    Так делать в подобной ситуации необязательно, но часто делают, и полезно знать. Также надо понимать, что запись:

    > file

    эквивалентна:

    >1 file

    А запись:

    < file

    эквивалентна:

    <0 file

    Всё потому, что стандартные файловые идентификаторы такие: 0 - stdin, 1 - stdout, 2 - stderr.

    Также бывают проблемы, когда приложение хочет что-то прочитать с консоли. Можно ему и на вход передать тоже /dev/null:

    command > /dev/null 2> /dev/null < /dev/null &

    Но даже в таком случае при закрытии консоли bash пошлёт висящему в фоне процессу SIGHUP. Чтобы это не случилось, нужно сделать disown сразу после выполнения команды, и это можно сделать в той же строке:

    command > /dev/null 2> /dev/null < /dev/null & disown


    Всё это можно сделать одной командой nohup, которая упрощает все эти действия и вывод записывет в файл nohup.out:

    nohup command &

    Подробнее в man, он довольно короткий и рассказывает всё в деталях.

    Иногда приложения не могут работать совсем без терминала, в этом случае их можно запускать в в screen/tmux или docker.

    Я не просто так рассказываю: понимать теорию очень полезно, в том числе теперь, надеюсь, не возникнет вопроса, почему длительные и просто даже критические к прерыванию операции настоятельно советуют запускать в screen, а не полагаться на то, что они успешно завершатся без отваливания консоли, и добавление & тут ничего не гарантирует!

    Но всё же, совет сразу же научиться использовать systemd (а в других операционных системах и дистрибутивах - возможно свои другие системы управления сервисами) - он ОЧЕНЬ ПРАВИЛЬНЫЙ. Это сложно только в первый раз :)

    Также в особых случаях можно ограничиться специализированными менеджерами типа supervisor или pm2. Особыми являются только случаи, когда подобные менеджеры уже используются для запуска других сервисов, с нуля их использовать при наличии универсального и хорошо работающего systemd практически лишено смысла.
    Ответ написан
    Комментировать
  • Сможет ли Ansible вот такое?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Большинство вещей - без проблем. Например, можно использовать таск authorized_keys для аккуратного прописывания ключа вместо ручного его закидывания на сервер. Есть таски для создания пользователей и групп, установки софта, копирования файлов и создания их по шаблону...

    Некоторые вещи можно делать косвенным путём, копируя и генерируя конфиги, запуская свои кастомные команды через таск shell, итд итп. Например, конфигурить sudo можно через создание файла с нужным содержимым в /etc/sudoers.d, не трогая основной конфиг.

    В общем, даже если останутся некоторые задачи, которые ansible не сможет автоматизировать достаточно хорошо, во всём остальном он очень сильно облегчит сопровождение серверов, особенно подготовку новых.
    Ответ написан
    Комментировать
  • Как распространять приложение под linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Я не знаю, почему все так активно советуют собирать пакеты. Надо начать с того, что в Linux никогда не было принято использовать pyinstaller... почему? Потому что в Linux python идёт из коробки. В Windows сложно вынуждать пользователей устанавливать интерпретатор языка и все зависимости, тут же с этим проще гораздо.

    Так что можно просто распространять архив с приложением и инструкцией по запуску вида:

    virtualenv -p python3 env
    . env/bin/activate
    pip install -r requirements.txt
    ./app.py
    Ответ написан
    2 комментария
  • Так и должно быть?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это нормально - vim обратно более-менее совместим с vi, поэтому в реальных системах в его качестве часто стоит не доисторический мамонт, а какой-то из более поздних (не всегда vim - в BSD-системах это, насколько помню, часто бывает elvis или nvi). Но, скорее всего, это урезанная сборка, которая ещё и понимает, что её запустили по имени vi, а не vim, и начинает симулировать некоторые старые вышедшие из моды особенности vi.

    Смотрим:

    shurik@ubuntu ~ $ ls -l `which vi`
    lrwxrwxrwx 1 root root 20 янв 29  2016 /usr/bin/vi -> /etc/alternatives/vi
    shurik@ubuntu ~ $ ls -l /etc/alternatives/vi
    lrwxrwxrwx 1 root root 16 ноя 13  2020 /etc/alternatives/vi -> /usr/bin/vim.nox


    Скорее всего, в твоём случае там будет ссылка на vim.tiny - сильно урезанную сборку vim.
    Ответ написан
    Комментировать
  • Кастомная аутентикация Linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Использовать модуль pam_exec для вызова скрипта.
    Ответ написан
    Комментировать
  • Не запускается проект Github. Прошу помощи?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно не клонировать скрипт, а скачать его архивом, нажав Code-Download ZIP.

    Скрипт можно отредактировать локально, git для этого не нужен.

    В 18 строке падает из-за того, что скрипт берёт сенсор с индексом 1 (при нумерации с нуля), а массив сенсоров на этом компьютере имеет длину меньше 2, возможно даже, что нужные сенсоры ядро не понимает и список пустой. Вообще, скрипт, судя по этому месту, какой-то ацкий говнокод, который сломается просто от изменения порядка вывода сенсоров в модуле psutil. Фу на его автора.

    От себя советую избрать путь настоящего джедая: всё то же самое можно получать стандартными командами:

    Информация по процессорам: lscpu
    Информация по процессам: top или более красиво htop (выход у обоих по кнопке q)
    Информация по памяти: free -h
    Информация по сенсорам (температура, вентиляторы и всё такое): sensors
    Информация по месту на дисках: df -h
    Информация по блочным устройствам дисков: lsblk

    Доустанавливать надо будет только пакеты htop и lm-sensors.

    Ну или можно просто использовать виджеты для используемого десктопа.
    Ответ написан
    Комментировать
  • Что хранится на файле gshadow и зачем редактировать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    man gshadow всё объясняет.
    Ответ написан
  • Как можно заставить терминал в Ubuntu работать как Putty - вставлять из буфера по щелчку правой кнопкой мыши?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    https://launchpad.net/terminator (apt install terminator)
    В настройках поставить putty style paste. После этого менюшка переедет в двойной клик колесом.
    Ответ написан
    4 комментария
  • Как узнать что запрашивает права суперпользователя?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Командой типа ps uaxf|less ищем инициатора.
    Ответ написан
    Комментировать
  • Как создать свое интернет радио нубу на VPS ubunu 16.04?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сколько угодно статей в этих ваших интернетах. Например, https://habr.com/ru/post/239541/
    Ответ написан
    Комментировать
  • После перезагрузки не запускается iptables на Ubuntu server 20.04?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Какой демон? iptables это не демон. Этот сервис просто загружает сохранённые правила из файла при старте, а при остановке ничего не делает (либо очищает таблицы, в зависимости от настройки).

    Чтобы сохранить текущие загруженные правила, надо просто вызвать netfilter-persistent save.

    Если после перезагрузки в iptables -L есть нужные правила, то всё работает правильно.
    Ответ написан
    2 комментария
  • Можно ли использовать Fail2Ban из докера?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ну как бы это вполне возможно. Нужно --net=host, чтобы fail2ban редактировал iptables на хосте, нужно прокинуть (или загнать в образ) конфиг, нужно прокинуть изучаемые им логи, ну и про privileged mode не забыть. Но зачем? Ему же по сути только конфиг надо настроить один раз и везде использовать, вон уже выше ansible посоветовали для упрощения этой операции.
    Ответ написан
    Комментировать
  • Развалился raid1 массив или оба диска вышли из строя? Как быть в такой ситуации?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Всё нормально, на /dev/md# и не должно быть таблицы разделов. Почему возникла мысль, что что-то не так?
    Ответ написан
  • Как полностью скинуть программу( файлы и тд) в том VeraCrypt Linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Телеграм хранит данные в ~/.TelegramDesktop, а скачиваемые файлы по умолчанию кладёт в ~/Downloads/Telegram Desktop. Переопределить первое можно параметром -workdir при запуске, а второе - в настройках.
    Ответ написан
    Комментировать
  • Где sudo берёт PATH?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сравни:

    su
    su -

    и

    sudo -s
    sudo -i

    Узнаешь много интересного.
    Ответ написан
  • Ubuntu snap и раздвоение docker – где мои контейнеры?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Поздравляю, теперь в системе два докера, которые претендуют на /run/docker.sock. Можно посмотреть, что вернёт docker info, там будет /var/snap/docker/common/var-lib-docker вместо /var/lib/docker

    Сомневаюсь что дело в livepatch, у меня поставился без docker. Так что советую удалить snap docker и рестартнуть обычный docker.
    Ответ написан
    Комментировать
  • Подсистема Linux для Linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что после chroot корнем файловой системы для процесса будет указанный каталог, а где там /bin/bash? Его там нет. Его надо там создать. Далее потребуются некоторые библиотеки из /lib. Устройства из /dev. Утилиты, хотя бы coreutils. И т.д. и т.п. Проще всего сразу же сделать минимальную систему в нужном каталоге с помощью debootstrap.

    PS: Я по формулировке темы вопроса думал, что вот сейчас надо будет рассказывать про chroot'ы, namespace'ы, openvz и виртуалки, но тут, оказывается, дело было не в этом...
    Ответ написан
  • Как запретить обновление всех пакетов в Ubuntu?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не очень понятна суть вопроса. Если просто не ставить и не обновлять ничего, то ничего не обновится. Или хочется, чтобы ничего не было обновлено по зависимостям, в том числе никакие библиотеки, но можно было ставить новые пакеты? Это почти без вариантов, если не сидеть на очень stable-ветке и своём собственном замороженном зеркале пакетов, ведь новая версия пакета в регулярно обновляемом репозитории может зависеть от новых версий библиотек, для которых и старой-то версии уже в репозитории нет.
    Ответ написан
    Комментировать
  • Как зайти в том Docker и изменить настройки?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    1. С помощью exec оказаться внутри контейнера (но там может не оказаться годного редактора, а sed/awk может быть недостаточно.

    2. Создать новый временный контейнер, в который подключить этот как volume, и отредактировать, например

    docker run -it --rm -v mail_postfix-vol-1:/xxx debian

    Внутри можно сделать apt update && apt install vim, всё равно контейнер временный и удалится при выходе.

    А вообще считаю надо persistent-данные хранить в каталогах на хосте и пробрасывать внутрь явным образом. Тогда и проблем с редактированием не будет.
    Ответ написан
    Комментировать