Ответы пользователя по тегу Linux
  • Загружается ли картинка через CURL если не указывать -o?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Чтобы загружать только заголовки надо не -o пропускать, а указывать -I
    если не указать -o, предполагается, что curl прямо в консоль скачает

    -o, --output <file> Write to file instead of stdout
    Ответ написан
    1 комментарий
  • Как появляется сетевой интерфейс и ip адрес на примере linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Ip адрес можно самому прописать на хосте или получаем с помощью dhcp, эта сущность ядра ОС?

    Можно и так и так.
    Это не сущность ядра ОС, ты же можешь вообще без сетевой карточки работать, или работать не по IP а по другому протоколу. Это настройки TCP.
    Можно ли назвать конфигурационной настройкой?

    Как хочешь называй.
    Настройки сетевого интерфейса поступают от драйвера сетевой карты?

    Ну как поступают. Некоторые ты отправляешь на сетевую карту, некоторые она тебе. А некоторые сетевые карты могут быть виртуальными.

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

    Можно, не обязательно.

    Кто в ядре или где почитать отвечает за формирование пакета, кадра и отправку по сети(кабелю)?

    Драйвер UDP/TCP/IP служб отвечает за формирование пакетов TCP/UDP/IP, а сетевая карта за формирование фреймов сетевой карты или что там у нее. Есть же карты разные, wifi/ethernet/модемы

    сетевая карта это устройство, а не интернет.

    Естественно
    Ответ написан
  • Как "распаковать" параметры из переменной в bash-скрипте?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Юзай eval, он раскроет все переменные и выполнит команду.

    $ excludes=".cache,.config/google-chrome,Загрузки"
    $ eval echo -sh ~ --exclude=$HOME/{$excludes}
    -sh /home/saboteur --exclude=/home/saboteur/.cache --exclude=/home/saboteur/.config/google-chrome --exclude=/home/saboteur/Загрузки
    Ответ написан
    1 комментарий
  • Как работает slurm?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Там вроде есть консольная утилита sacctmgr, которой можно и задать и посмотреть лимиты ресурсов, но не знаю может ли это сделать обычный юзер

    Я бы посоветовал выяснить об ограничениях у ваших админов - это же всегда кастомные настройки.

    p.s. Тут вряд ли нужен тег bash, скорее Linux
    Ответ написан
    Комментировать
  • Как сделать вхождение по TAB в терминале linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    bash completion - это большая библиотека функций, которые по tab умеют дополнять
    * имена алиасов
    * имена функций
    * имена переменных
    * названия команд
    * пути файловой системы
    * опции для некоторых команд.

    Можно почитать документацию, как добавить дополнение для вашей собственной команд - https://www.gnu.org/software/bash/manual/html_node...
    Ответ написан
    Комментировать
  • Логирование веб-приложений: syslog и stdout/stderr?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    1. стандартная служба syslog умеет парсить логи по facility, следовательно можно настроить логирование разных компонентов в разные файлы на уровне syslog, управлять их ротацией.
    Также syslog умеет работать с другими syslog, таким образом можно аггрегировать логи с разных машин и управлять ими централизованно.

    2. логи отправленные в stdout обычно куда-то перенаправляют, в тот же файл, или сразу грабят в какой-то аггрегатор.
    В современное время про stdout чаще всего говорят, когда вы запускаете что-то в контейнере, а контейнер крутится в оркестраторе типа kubernetes/openshift.
    В этом случае настраивается внешний сборщик - тот же filebeat, fluentd, logstash или syslog, который собирает логи со всего кластера кубернетес/опенщифт, парсит их и кидает в аггрегатор.
    Просто задеплоили новый компонент и по его имени можно фильтровать логи в той же Кибане, при этом нигде не нужно в системе логирования настраивать что-то под новый компонент, все тегируется автоматом.
    Ответ написан
    Комментировать
  • Как переключить запись в файл через inode?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Если просто обнулить файл, то обычный
    echo "" > file
    если нужно сохранить часть файла, то можно считать кусок из файла и записать в него же
    tmp=$(tail -n 1000 file)
    echo "$tmp" > file
    Ответ написан
    Комментировать
  • Как исправить ошибку unexpected EOF while looking for matching `"'?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    1. Написано, что ошибка в строке 42-43, а на картинке от силы 20 строк. Ты весь скрипт просмотри, где кавычку не закрыл.
    2. Выкладывать надо текст, а не картинку.
    Ответ написан
    5 комментариев
  • CentoOS перебросить память с home на root?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    1. Переразбить диски внешней утилитой, загрузившись с какого-нить acronis live
    2. Если вы используется LVM, переразбить его утилитами
    3. софт-линки
    Ответ написан
    6 комментариев
  • Как записать все в одну строку и вывести все в файл?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    экранируешь все доллары и делаешь cat через DocumentHere:
    cat <<EOF >newfile.sh
    ...
    EOF


    Вот полный пример, можно этот текст поместить в скрипт, выполнить или вставить целиком из буфера, или набрать от руки, и он сделает тебе новый file.sh
    cat <<EOF>file.sh
    #/bin/sh
    inetADD=\$1
    #GATEWAY=
    #DNS1=
    NETMASK=255.255.255.128
    ip address | grep -v lo | cut -d ' ' -f2 | tr ':' '\n' | awk NF
    echo "Enter interface:"
    read nameINT
    uuid=\$(\$nameINT)
    echo -e "NAME=\$nameINT\nDEVICE=\$nameINT\nBOOTPROTO=static\nUUID=\$uuid\nONBOOT=yes\nIPADDR=\$1\nNETMASK=\$NETMASK" >> /etc/sysconfig/network-scripts/ifcfg-\$nameINT
    ifdown \$nameINT && sleep 3 && ifup \$nameINT
    if [ "\$(ping -c 1 -I \$nameINT 192.168.1.1)" ] then
      echo "Ping GOOD. System EXIT"
    exit
    else
      echo "Reloading the interface"
    ifdown \$nameINT && sleep 10 && ifup \$nameINT
    ping -c 1 -I \$nameINT 192.168.1.1
    echo "ERROR"
    fi
    EOF
    Ответ написан
    Комментировать
  • Перенос файлов между серверами без моего участия?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Отключаясь от сессии, вы посылаете своему шеллу и всем дочерним процессам (scp, rsync) сигнал SIGHUP.

    Есть несколько воркэраундов как этого избежать.

    1. Запускать процесс через nohup &
    2. Использовать менеджер сессий - screen или tmux
    3. Запустить процесс в фоне и заранее отвязать его от своего шелла ( &; disown )
    Ответ написан
    2 комментария
  • Не работает команда в bash скрипте, где ошибка?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Смотреть PATH нужно не из вашей сессии, а прямо из cron.
    Когда юзер логинится интерактивно, выполняются его персональные профайлы - .profile, .bashrc, .login и др.

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

    Варианты как это чинить:
    1. Использовать в скриптах полные пути к файлам
    2. Задать PATH прямо в вашем скрипте
    3. Задать PATH в самом кронтаб вначале, например

    PATH=$PATH:/home/user/mypersonalbin/
    00 09 * * * /mnt/pve/backups/sensors.sh >> /root/myscript.log 2>&1


    crontab формат позволяет задавать переменные, которые будут работать для всех скриптов запускаемых из вашего кронтаба.
    Ответ написан
  • Как запустить уже остановленную программу в фоне не переходя в foreground?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Нужно понимать два момента

    команды jobs, bg и fg являются внутренними командами шелла, и работают с дочерними процессами именно этого шелла.
    Если вы приостановили дочерний процесс (Ctrl-Z) или запустили его сразу в бэкраунда (ping google.com &), то командой fg вы выводите его на передний план. Это все равно что в винде вы взяли и поставили мышкой фокус на окне блокнота, после чего нажимая клавиши вы будете писать в этом блокноте.

    А если вы приостановили процесс Ctrl-Z и продолжили его через bg, он будет продолжаться в фоне, а на переднем плане будет ваш шелл - вы можете писать другие команды. Все равно что мышкой в винде вы кликнули в рабочий стол рядом с блокнотом, и поэтому нажимая клавиши вы будете писать не в блокноте а на рабочем столе (стрелки по иконкам бегают, какие-то хоткеи могут работать, Enter запустит текущую иконку)

    Для понимания потренируйтесь так:

    sleep 100
    CTRL-Z
    jobs
    bg 1
    echo I am still in shell
    fg 1
    CTRL+C


    И второй момент - можно запустить программу в фоне, и отсоединить ее от текущего шелла вообще (запустить ее через nohup sleep 100 & и отключитья от сессии, или выполнить
    sleep 100 &
    jobs
    disown
    jobs
    ps aux | grep sleep

    в этом случае bg/fg уже не помогут, так как программа запущенная в фоне уже имеет другого родителя, и не подконтрольна внутренним bg/fg - вернуть ее как дочерний процесс под текущий шелл уже не выйдет.

    Поэтому Ctrl+C, Ctrl+Z - это просто сигнал который ты отправляешь в текущий "foreground" процесс, с которым ассоциирован stdin
    Ответ написан
  • Запуск js скрипта в фоновом режиме через команду nohup?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    потому что эотт js скрипт не является исполняемым файлом. Его нужно запускать чем-то, например nodejs
    как питон запускается
    python myscript.py
    так и js надо
    node myscript.js

    или nohup node myscript.js &

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Почему именно питон, когда для таких задач как раз подходит баш, или вообще find?

    Почему нужно удалять когда заканчивается места, а не настроить изначально ротейт файлов, которые растут - именно так делается в нормальных случаях
    Ответ написан
    Комментировать
  • Поясните пожалуйста bash скрипт?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    кода done < <(ls -1 "./my_temp_dir/")

    ls -1 выводит содержание каталога в одну строку по одному наименованию
    <(blabla) создает из команды поток, который передается как файловый десктриптор
    < перенаправление данных из файлового дескриптора в предыдущую команду
    done является частью цикла, поэтому перенаправление идет не в done а в весь блок цикла.
    Ответ написан
    Комментировать
  • Как скачать файл в Putty?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    putty - это ssh клиент для подключения к удаленной консоли, а не для скачивания файлов.
    На сайте putty можно скачать pscp - он как раз используется для скачивания файлов по ssh

    Но если очень нужно скопировать что-то прямо из путти, то можно копировать текст напрямую для текстовых данных или через base64
    Ответ написан
    Комментировать
  • Как сделать readinessProbe по тексту файла?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    вам не нужен cat и ненужный pipe - просто
    grep -q "app start" /app/log

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Здравствуйте, можно ли соединить несколько компьютеров в одну локальную сеть через OpenVpn, чтобы каждый из них мог пинговать любой другой без задействия сервера?

    OpenVPN это не волшебное что-то, это просто виртуальный сетевой интерфейс с шифрованным каналом.

    Когда ты открываешь VPN соединение, то представь что у тебя в компьютере появляется еще одна виртуальная сетевая карточка и виртуальным сетевым шнуром идет в сервер, к которому ты подключаешься. И все остальные участники вашей VPN сети тоже подключаются виртуальным проводом к VPN серверу.

    С другой стороны, вы можете настроить у каждого участника VPN сервер, и будете подключаться друг к другу. Но это надо всем все настроить и подключаться каждый с каждым, с огромным количеством виртуальных интерфейсов.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Вы не так понимаете, как это работает.
    В линукс файловая система использует структуру iNode в качестве хранения метаинформации о файлах. И когда вы открываете файл, по имени файла ищется iNode файловый дескриптор привязывается и лочит уже iNode. При этом имя файла на диске можно свободно удалять (а сами данные файла при этом удалятся позже, когда процесс который открыл файловый дескриптор его освободит).

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

    Никакая недокументируемая функция это поведение не изменит. Пока процесс, который залочил файл в винде его не разлочит - ничего не получится.
    Ответ написан
    Комментировать