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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    И для записи и для чтения используется тот же механизм - page cache, только для записи они еще помечаются как dirty, которые должны быть записаны на следующий уровень.
    Ответ написан
    Комментировать
  • Как в BASH работают логические операторы?

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

    Он это не делает. Он проверяет код возврата команды, который согласно архитектуре линукс - может иметь значение от 0 до 255 (байт)
    Просто значение 0 считается true, любое другое значение считается false

    На код ошибки это не похоже. Так как успешное выполнение команды возвращает 0. Что полностью противоречит алгебре логики.

    С чего это вдруг противоречит? Противоречит только в том случае, если вы не читали документацию.
    Ответ написан
    Комментировать
  • Разрешения 755 для всех файлов и каталогов сайта это безопасно?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    У вас есть квартира, где стоит лазерный датчик. Если на него попадает лазерный луч, он открывает все замки.
    И приходя домой, вы вставляете ключ с лазером в замок, проворачиваете и подаете сигнал на датчик.

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

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

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

    Хотите более подробный и понятный ответ - изучайте права доступа и принципы работы различных движков на сайте, чтобы найти варианты как можно найти применение тому, что у вас везде 755 на всех файлах.
    Ответ написан
    Комментировать
  • Загружается ли картинка через 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
    Ответ написан
    Комментировать