Ответы пользователя по тегу Linux
  • Где взять голый linux?

    shambler81
    @shambler81 Куратор тега Linux
    да можно каждый линукс имеет минимальные сборки. в которых нет графики.
    Так же можешь познакомиться с gentoo тебе должно понраниться, особенно инсталятор.
    Ответ написан
    Комментировать
  • Почтовый клиент с поддержкой мульти прокси?

    shambler81
    @shambler81 Куратор тега Linux
    любой почтовый сервер умеет это делать
    email-distribution-server-local-users.png
    от вот таких маленьких, и для винды
    и до postfix
    Собствено все что тебе нужно это создать учетку в ней и собирать почту хоть до морковкена заговения и перенаправлять ее на нужные ящики.
    так же можно собираь на яндексе майле да дофига где можно в этом вообще проблем нет.
    Ответ написан
    Комментировать
  • Можно ли вывести значение переменной http?

    shambler81
    @shambler81 Куратор тега Linux
    cat 111.txt | grep ^DocumentRoot |  egrep -o '/.+[^"]'

    вывод

    /var/www/html


    Теперь подрбоней
    ^- начало строки
    соответственно будет тольк отот что документ рут начинается сразу а не в контенте
    ну и далее мы делаем еще раз grep
    с -o онли
    ну и дальше то что начинается со слеша но не кавычки собственнно это наш урл
    Ответ написан
    Комментировать
  • Как сделать find быстрее?

    shambler81
    @shambler81 Куратор тега Linux
    вместо execиспользуйте xargs- профит раз в 200.
    В 200 раз вас устроит ускорение ?
    Ответ написан
    Комментировать
  • Как установить PHP 5.4 CentOS 7?

    shambler81
    @shambler81 Куратор тега Linux
    репозиториев нет ставь с тарболов в режиме php+fpm это сделать проще всего
    Вот так я ставил на дебиане, подправить нужно с учетом центоса.
    apt-get install -y libxslt-dev libcurl4-gnutls-dev libfcgi-dev libfcgi0ldbl libmcrypt-dev libssl-dev libxml2-dev zlib1g-dev libcurl4-gnutls-dev libjpeg-turbo8-dev libbz2-dev libjpeg-dev libfreetype6-dev libmcrypt-dev libcurl4-gnutls-dev
    apt-get install -y libpq-dev
    cd /usr/include
    cd /usr/local/include
    sudo ln -s /usr/include/x86_64-linux-gnu/curl curl
    mkdir /opt/php5.4.45
    mkdir /usr/local/src/php5
    cd /usr/local/src/php5
    wget http://de2.php.net/get/php-5.4.45.tar.gz/from/this/mirror
    mv mirror php-5.4.45.tar.gz
    tar -xzvf php-5.4.45.tar.gz
    cd php-5.4.45
    
    
    ./configure \
    --prefix=/opt/php5.4.45 \
    --with-pdo-pgsql \
    --with-zlib-dir \
    -with-freetype \
    --enable-mbstring \
    --with-libxml-dir=/usr \
    --enable-soap \
    --enable-calendar \
    --with-curl \
    --with-mcrypt \
    --with-zlib \
    --with-gd \
    --with-pgsql \
    --disable-rpath \
    --enable-inline-optimization \
    --with-bz2 \
    --with-zlib \
    --enable-sockets \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-pcntl \
    --enable-mbregex \
    --with-mhash \
    --enable-zip \
    --with-pcre-regex \
    --with-mysql \
    --with-pdo-mysql \
    --with-mysqli \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --enable-gd-native-ttf \
    --with-fpm-user=www-data \
    --with-fpm-group=www-data \
    --with-libdir=/lib/x86_64-linux-gnu \
    --enable-ftp \
    --with-kerberos \
    --with-gettext \
    --enable-fpm
    
    make
    make install
    
    cp /usr/local/src/php5/php-5.4.45/php.ini-production /opt/php5.4.45/lib/php.ini
    cp /opt/php5.4.45/etc/php-fpm.conf.default /opt/php5.4.45/etc/php-fpm.conf
    
    
    sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:8998/g' /opt/php5.4.45/etc/php-fpm.conf
    sed -i 's/\x3Bpid = run\/php-fpm.pid/pid = run\/php-fpm.pid/g' /opt/php5.4.45/etc/php-fpm.conf
    echo "include=/opt/php5.4.45/etc/pool.d/*.conf" >> /opt/php5.4.45/etc/php-fpm.conf
    
    mkdir /opt/php5.4.45/etc/pool.d
    vim /etc/init.d/php5.4.45-fpm  # вставляем конфиг, и правим версию пхп https://www.howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.10-p3
    chmod 755 /etc/init.d/php5.4.45-fpm
    #заменяем актуальной версией php,  плс название в общем стиле а не как по ману
    sed -i 's/php\-5\.4\.12/php5.4.45/g' /etc/init.d/php5.4.45-fpm
    
    update-rc.d php5.4.45-fpm defaults 
    /etc/init.d/php5.4.45-fpm start
    update-rc.d php7.3-fpm defaults
    apt-get install libmemcached-dev
    
    # исправит проблему подключения по loalhost поскольку в  стандартных php.ini она вообще не обьявлена
    echo "mysqli.default_socket = /var/run/mysqld/mysqld.sock" >> /opt/php5.4.45/lib/php.ini
    echo "mysqli.default_socket = /var/run/mysqld/mysqld.sock" >> /opt/php5.4.45/lib/php.ini
    /etc/init.d/php5.4.45-fpm restart
    /etc/init.d/apache2 restart
    Ответ написан
    Комментировать
  • Перебор и изменение файлов bash скриптом?

    shambler81
    @shambler81 Куратор тега Linux
    find . -regex ".*\.\ini" -exec sed -i 's/было/стало/g' "{}" \;
    Ответ написан
    5 комментариев
  • Как разобрать массив?

    shambler81
    @shambler81 Куратор тега Linux
    ну смотри тут несколко вариантов
    тут уже разбирали сравнине массивов.
    Как сравнить два массива в bash?
    Тут конечно нужны вводные данные, но опять же если это очень большое количество файлов то может быть ту мени аргументс и тд, в общем все равно не шибко быстрое решение.
    НО логика такая.
    1. создамем два массива.
    2. в отдельную переменную сохраняем только название файла из первого массива.
    3. создаем цикл перебераем этот файл, в массиве два, если соответствие находится то копируем его в полный путь к этому файлу.

    2 вариант более костыльный но тоже имеет место быть
    ты не используешь второй массив а просто каждый раз запускаешь 2 файнд уже с точным вхождением. find ./Serials -type f -iname "1110101.mkv"
    просо

    вот как-то так, да в таком варианте ты каждый раз будеш пускать по кругу файнд, но он с заданым конкрктным файлом и глубина невелкая, да и как я понял тебе не сильно нужна производительность.
    Но в таком варианте ты поймешь что нужно делать без привлечение создания методов и двух массивов.
    А главное нет ограничений на размер этих массивов.
    #!/bin/sh
    MASSIV_1=$(find /volume1/Geroev_Avenue_18/Downloads -maxdepth 1 -type f -iname "*.mkv") 
    
    
    for ELEMENT in $MASSIV_1_FILMAME
        do
    
    find ./Serials -type f -iname "$MASSIV_1_FILMAME -exec cp {} $MASSIV_1_DIR \;"
    
                   fi

    код на вскидку писал, дабы было понятно смысл.
    Ответ написан
  • Почему не видит папку или файл?

    shambler81
    @shambler81 Куратор тега Linux
    создание бэкапа
    60be967c5f0f0182040362.png
    Структура бэкапов ( тут примонтирован FTP сервер через cifs)
    60be97a6eedb8875107169.png
    работает так если запускаешь скрипт то бэкапит все сайты со всеми базами исключает все что нужно. ( каждый сайт отдельно бэкапит свою базу) ну и отдельно каждый сайт.
    если через пробел указываеш сайт то scrypt.sh vasya.ru бэкапится только он, так же сразу заливается на фти с ограничением
    скорости и прогресс баром.
    и подчисткой локальных бэкапов
    Так же после бэкапа тебе выкидвыается прямая ссылочка на фтп архив.
    доп софт wput и pv его нужно доставить !

    #!/bin/sh
    # Пример пути до сайта /var/www/site.ru/web/
    SITEDIR="/home/bitrix/ext_www"                      # Папка до названия доменаов
    DBCONN="bitrix/php_interface/dbconn.php"            # Откуда читать настройки mysql
    FTPUSER="backup_ftp"                                # Логин FTP сервера
    FTPPASS="adfadsfasdfa safdw"                        # Пароль FTP
    FTPHOST="111.1.11.11    "                           # сервер FTP
    FTPDIR=""                                           # папка на FTP
    TMPDIR="/mnt/backup/site"                           # тут временный файл лежит до отправки
    TMPWPUTBASE="/mnt/backup"                            # wput подставит эту папку как базовую
    DATE=`date +"%Y-%m-%d"`                             # Формат даты в имени файла
    DATEYM=`date +%Y`/`date +%m`                        # Второй форматы даты
    LIST=${1:-`ls $SITEDIR | grep -E ".*\.\w{1,5}" | grep -v "restore.php" | grep -v "klondike.php"`} # Название сайта, тут выбор или аргумент или, регулярка  можно убрать только -L ;)
    
    mkdir -p $TMPDIR/$DATEYM # создаем  структ уру каталогов если их нет
    
    for ELEMENT in $LIST
        do
                    if [ ! -f /$SITEDIR/$ELEMENT/$DBCONN ];
                            then
                                echo " Файл $SITEDIR/$ELEMENT/$DBCONN не найден, сайт будет без БД!"
                            else
    # ищим какая база отностися к сайту сохраняем в переменные ее данные.
    DBLOGIN=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBLogin}\");")
    DBNAME=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBName}\");")
    DBPASS=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBPassword}\");")
    DBHOST=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBHost}\");")
    echo "Найдена BD $ELEMENT"
    echo ""
    echo "Login: $DBLOGIN"
    echo "DB   : $DBNAME"
    echo "Pass : $DBPASS"
    echo "Host : $DBHOST"
    echo ""
    echo "Дамп БД $DBNAME"
    
    #  бэкап базы только через эвал и эхо смогли экранировать все варианты спецсимволов в пароле
    eval "$(echo "mysqldump --no-tablespaces -u$DBLOGIN -p'$DBPASS' $DBNAME -h$DBHOST > $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql  && echo "Дамп БД $DBNAME будет сохранен в корне сайта"  ||  echo "Ошибка дампа базы данных " $DBNAME")"
    chown bitrix:bitrix $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql
                   fi
    
    echo "Считаем количество Файлов  на сайте"
    
    SIZE="$(find $SITEDIR/$ELEMENT/$WEB -not -path "$SITEDIR/$ELEMENT/bitrix/tmp/*" -not -path "$SITEDIR/$ELEMENT/bitrix/updates/*" -not -path "$SITEDIR/$ELEMENT/dev_logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/total_errors/*" -not -path "$SITEDIR/$ELEMENT/.git/*" -not -path "$SITEDIR/$ELEMENT/bitrix/catalog_export/logs/*" -not -path "$SITEDIR/$ELEMENT/bitrix/backup/*" -not -path "$SITEDIR/$ELEMENT/bitrix/cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/managed_cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/stack_cache/*" -not -path "$SITEDIR/$ELEMENT/upload/resize_cache/*" -not -path "$SITEDIR/$ELEMENT/stats/*" | wc -l)" && echo " В архиве будет $SIZE файлов"
    
    echo "Архивируем сайт $ELEMENT прогресс не в килобайтах а в  количестве файлов"
    tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates'  --exclude='./dev_logs' --exclude='./upload/1c_import_light/logs' --exclude='./upload/1c_import_light/total_errors' --exclude='./.git' --exclude='./bitrix/catalog_export/logs'  --exclude='./bitrix/backup'  --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . | pv -s $SIZE -l > /dev/null
    
            rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.
    
            echo "Сохраняем $ELEMENT на FTP"
            wput  --basename=$TMPWPUTBASE --limit-rate=6000K --timestamping  --remove-source-files --tries=2 $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR && echo "Архив залит успешно, временные файлы удалены"
    
    echo -en "\n\033[37;1;41m Ссылочка:\033[0m \e[1;4;36mwget ftp://$FTPUSER:$FTPPASS@$FTPHOST/site/$DATEYM/$ELEMENT-$DATE.tar.gz\e[0m\n\n" #ks05
    
      done
    
    rm -r $TMPDIR

    В скрипте не задействовано ядро битрикс ВМ дабы можно было его адаптировать на любые другие сервера. Для определения базы данных выполняется dbconn и его переменные используются для бэкапа.
    Ответ написан
    Комментировать
  • Литература по Linux. Как лучше изучить Linux?

    shambler81
    @shambler81 Куратор тега Linux
    1. ставь linux mint самый простой вариант для изучения.
    2. оставляй ее как основную ос удали другие ( только так можно сделать полный переход)
    3. phpsotrm есть для линукс.
    4. линукс большой это то-же самое что " я хочу выучить программирование", собственно для программиста линукс должен быть примитивно легок. Так что тут немного конкретики не помешает.
    главное понять его философию.
    Какой именно дистрибутив без разницы поскольку выучив один ты сможешь с легкостью работать в любом другом.
    НО лучше всего брать обкатаные дистрибутивы не дичь ну и с адекватными обновлениями минт для этого подойдет.
    Если прям хочешь красношляпу то федору.

    Что по обучению
    1. в линуксе нет GUI все это баловство, весь нормальный софт консольный. Пока ты работаеш в гуи ты не учиш линукс.
    Вплоть до радио и плеера, уходи полностью в консоль. ( разработку всеже в шторме, но если прям по харду то vim)

    Выучи
    stdin stdout stderr
    как передавать потоки туда сюда, коды возврата.
    из консольных утилит нужно хорошо уметь раобтать с
    dir ls find sed awk grep xargs - чем лучше их знаешь и зная как работать с потоками этого для старта более чем достаточно остальное по манам в ходе работы.
    упрощеные условия типа |, || , && полезны в работе.
    а остальное это конструктор и "правильно собраного линукса не бывает это как правильный код, он только у одного человека в мире, это разраба, у всех остальных свое мнение по этому поводу и как правильно работать с линуксом нет общего понятия.
    Ну и теорию подучить нужно однозначно, тут никуда.
    Насколко я понимаю тебе нужно это для работы с веб серверами
    то тут идиально подойдет ispconfig3 ставь его, по дороге разберешся че куда идет.
    Далее патчь его до nginx+apache и ты считай уже в теме.
    Далее разбираешся с представлениями пхп
    Ну и версионностями последних.
    ;)
    Ответ написан
    Комментировать
  • Как организовать файлопомойку через ssh?

    shambler81
    @shambler81 Куратор тега Linux
    самый лучший вариант это расшарить самба шару через CIFS
    из плюсов это безшовность что на линукс что на виндовс это будут обычные шары
    мультиплатформенность базовые решения во всех ос, без костылей и магии
    а главное это единственный из протоколов заточеный на работу с большим количеством файлов.
    Короче это единственный протокол который неормально будет работать ( производительность при большом количестве файлов)
    все остальные даже взвешивать папку будут несколько часов.
    а если просто передать пару файлов то любой вплоть до ftp
    Ответ написан
    Комментировать
  • Как исключить полный путь из tar?

    shambler81
    @shambler81 Куратор тега Linux
    Напишите что конкретно вы хотите сделатЬ, не саму проблему а именно действие. возможно уже есть готовые скрипты.
    вот атк делаются эксклуды.

    tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates' --exclude='./bitrix/backup/*\.gz*' --exclude='./bitrix/backup/*\.tar*' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . >> /dev/nool 2> /var/log/backup_error.log
    Ответ написан
    Комментировать
  • Как обработать результат команду через grep?

    shambler81
    @shambler81 Куратор тега Linux
    sudo -V | head -n 1 |awk '{ print $3 }'

    вывод
    1.8.21p2


    Теперь проверяем версию
    if [ "$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.8.21p2" ]; then
    echo "все сработало"
    fi


    Усложняем я так понимаю вам нужно исключить определенные версии для этого нужно будет или несколько иф сделать или эльсиф

    if [["$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.8.21p2" ]]; then 
      echo "все сработало 1.8.21p2"
    
    elif [[ "$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.0" ]]; then 
     echo "все сработало 1.0"
    
    fi


    Если четко понимать что вы хотите то можно и сделать в 1 строчку
    например
    Если не это, и не это то
    опишите что вы хотите к примеру если это версия выше определенной то тут могут быть проблем поскольку внутри уже буквы имеются
    Ответ написан
  • Как мне написать скрипт который будет выводить на экран СОДЕРЖИМОЕ файлов директории?

    shambler81
    @shambler81 Куратор тега Linux
    find /home/lalala -type f -exec cat {} \;
    find- найти
    /home/lalala - где
    -type f- файл
    -exec выполнить команду (фишка файнд)
    cat - принт файла
    {} путь до файла который найдет файнд
    \; закрывается файнд экранированный
    если тебе нужно еще и что-то найти в этих файлах то вместо cat ставь grep с тем что искать.
    Ответ написан
    Комментировать
  • Какая сейчас актуальна бесплатная конфигурация VDS-сервера для совместимого набора максимально свежих PHP + MySQL + панель управления хостом?

    shambler81
    @shambler81 Куратор тега Linux
    vestacp - ставится в 1 клик
    braynycp - большой ставится в 1 клик умеет очень много но немного дебильный интерфейс в 1 клик
    ispconfig3 - удобно красиво функционально но все точится напильником, для обучения само то и для опытных тоже.
    автоинстала официального нет а тот что есть нужно перепиливать.
    что делать писал тут
    https://klondike-studio.ru/blog/ispconfig3-nginx-a...
    bitrix vm ( нет днс сервера, почтовый внешний админка консольная но удобная)
    Ответ написан
  • Как проверить наличие бекдоров после настройки сервера сисадминами?

    shambler81
    @shambler81 Куратор тега Linux
    ну все что вы реально сможете проверить из закладок это явные типа пользователя с 0 0 правами.
    Если мне нужно будет вы никогда не найдете мой бэкдор даже отлично зная линукс. не говоря уже о обратном.
    Так что от самого админа вы можете себя обезопасить только хорошим отношением с ним, работайте честно и все.
    Ответ написан
    4 комментария
  • А есть ли в Ubuntu/Linux аналог Macromedia/Adobe Fireworks?

    shambler81
    @shambler81 Куратор тега Linux
    кэп ну 2012
    ты издеваешься?
    Поверь у тебя нет времени заниматься чем-то подобным.
    Веб слишком быстро устаревает чтоб сознательно брать уже давно устаревший инструмент.
    Если ты уже на пенсии и тебе хотелось бы вспомнить лихие 90тые то поставь себе эмулятор NES

    в данный момент на линуксе прекрасно работает
    sublime text 3
    Phpstorm
    Git
    для старта этого более чем достаточно.
    Ответ написан
  • Как реализовать в bash скрипте значение по умолчанию в read?

    shambler81
    @shambler81 Куратор тега Linux
    Комментировать
  • Как отключить сетевую карту в линукс и вообще нужна ли она?

    shambler81
    @shambler81 Куратор тега Linux
    ничего не нужно отключать, расслабьтесь.
    Ответ написан
    1 комментарий