Задать вопрос
Ответы пользователя по тегу Linux
  • Перебор и изменение файлов 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 комментарий
  • На какой платформе организовать обзвон?

    shambler81
    @shambler81 Куратор тега Linux
    битрикс 24 изначально заточен под это, там есть все.
    Ответ написан
    Комментировать
  • Как через регулярные выражения написать "x" встречается больше 1 раза не подряд?

    shambler81
    @shambler81 Куратор тега Linux
    x[^x].*x - вот так
    603e8bb0b2f53622710034.png
    Под важу же регулярку лучше составить так
    если разрешение встречается два раза
    [0-9]+x[0-9]+.+[0-9]+x[0-9]+
    603e8b102a206084925706.png
    [0-9]+x- цифры 1 раз и больше

    если же всю строчку
    https://regex101.com/r/jJenlF/1
    Ответ написан
    6 комментариев
  • Как автоматически запускать проект при падение?

    shambler81
    @shambler81 Куратор тега Linux
    проблем нет но линукс это не винда тут так не принято
    если падает какой-то из демонов рестартуют именно его а не всю ос.
    Аптайм 1000 дней вполне себе адекватный аптайм для обычных домашних серверков.
    Так что рестарт всей ос это ты брось.
    Технология такая.
    1. проверяешь статусы httpd nginx и mysql обьем памяти место на диске и че там тебе нужно
    если они возвращяют тру то ничего если фелс то рестартуеш конкретный демон.
    делается это в одну строчку
    делается это очень легко
    команда $$ echo "true" || echo "false"
    К примеру если ты сделаешь
    service httpd status | grep "running" || service httpd restart

    где
    && - если команда завершилась с тру
    || если с фелс ( все это облегченый синтаксис)

    линукс это конструктор тут все легко и просто главное определись что тебе нужно
    так же уже есть много чего готового к примеру monit munin zabbix nagios и тд
    есть сторонние сервисы которыми можно тестить я к примеру мелким товарищям вот этих рекомендую
    Тут можно мониторить сервер из облака и посылать на него команд что очень удобно.
    monit-it.ru
    так сказать дешево и сердито. Бесплатного тарифа тебе хватит за глаза
    601b0b4594a91529890390.png
    Ответ написан
    3 комментария
  • Как установить Windows под Linux?

    shambler81
    @shambler81 Куратор тега Linux
    Поверь мне поставь на отдельный диск.
    рано или поздно одну из ос ты захочешь снести
    так вот разбираться при таком опыте с загрузчиками и выпиливать их тебе не понравится
    Просто отключи 1 диск поставь на 2 в это время винду и подключи оба диска к компу. при загрузке системы просто на F8 переключай диски при старте.
    так ни одна из ос не будет знать о существование друг друга.

    И если поставить линукс на винду еще как-то можно начинающему юзеру
    То винда принципиально все сносит к хренам.

    А там особенностей миллион вплоть до какой у тебя биос, какие диски, и какой версии линукс.
    Тебе оно нужно ?

    Если же твоя здача выучить линукс, то поверь единственный вариант полностью снести винду.
    Других способов нет.
    Ответ написан
    9 комментариев
  • Какой Office лучше использовать в качестве замены MS Office?

    shambler81
    @shambler81 Куратор тега Linux
    wps office без вариантов
    XpXnzPXGjisFR3Ko6EEdNQ.jpg
    Верховный суд китая ненашел ничего общего с известным вам майкрасофт офисом, это вам показалось ;)
    Совместимость куда как лучше чем у либры. Либра и почившый ООо курят в сторонке.
    Русский с коробки, кросплатформенный
    Китайцы рулят. Проект бурно развивается.
    Ответ написан
    21 комментарий