Задать вопрос
  • Почему не работает ">/dev/null 2>&1"?

    @pfg21
    ex-турист
    дык все правильно.по умолчанию wget пишет в файл, с именем формируемым из параметров http.

    для того чтобы скачанный поток перенаправить в stdout надо воспользоваться опцией записи в именованный файл и вместо имени впихнуть -

    -O file
    --output-document=file
    The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If - is used as file, documents will be printed to standard output, disabling link conversion. (Use ./- to print to a file literally named -.)

    в твоем случае вообще можно и лог и документ сразу в девнуль послать.
    wget -o /dev/null -O /dev/null ******
    Ответ написан
    6 комментариев
  • Как создать контейнер в docker чтобы файлы брались из внешней директории?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Аналог package.json - файл requirements.txt для pip или аналоги для других систем типа pipenv.

    Делаем контейнер, в который добавляем наш код, как-то так:

    ADD app /app
    WORKDIR /app
    RUN apt install python3-pip && pip install -r requirements.txt

    Затем при запуске контейнера передаём ему каталог с нужными каталогами (в данном случае конфиги и логи):

    docker run -itd --name my_service -v `pwd`/config:/app/config:ro -v /var/log/my_project/my_service:/app/log my_awesome_image


    Или через секцию volumes в docker-compose.yml (с ним удобнее, чем с прямым вызовом docker):

    volumes:
        - ./config:/app/config:ro
        - /var/log/my_project/my_service:/app/log
    Ответ написан
    1 комментарий
  • Почему mysql ошибка не ловится в try catch?

    @galaxy
    Не ловит, потому что внутренние исключения в PHP наследуются от Error (от Exception следует наследовать свои собственные классы исключений).
    Также у вас не запрос неправильный, а количество аргументов bind_param не соответствует заявленному в строке типов (первый аргумент bind_param в ООП стиле), о чем вам и сообщают.
    Ответ написан
    5 комментариев
  • Как можно организовать проброс тома на работающем docker контейнере?

    Вроде нельзя волюмы на горячую менять.
    Как вариант - запусти новый контейнер из того же самого образа с новым маппингом и останови старый.
    Ответ написан
    2 комментария
  • Как безопасно подменить OpenVPN сервер?

    @res2001
    Developer, ex-admin
    Абсолютно нормально. Это ваши сертификаты. На старом сервере вы их генерировали самостоятельно (ну или тот кто был вместо вас и настраивал OpenVPN). В самом OpenVPN нет других сретификатов, кроме тех, которые вы ему предоставляете.

    В принципе для нового сервера вы могли бы сгенерировать другие сертификаты (файлы server.crt и server.key) их не нужно передавать клиенту. Так было бы совсем правильно (но и использовать ключи старого сервера то же вполне можно). Для генерации вам потребуется закрытый ключ CA (ca.key), если его нет, то сгенерировать новые ключи уже не возможно. И в этом случае вы столкнетесь с проблеммой, когда истекут сроки сертификатов. Вообще во всей инфраструктуре ключей шифрования ключ и сертификат CA - самые ценные составляющие, остальные можно легко менять.
    Ответ написан
    2 комментария
  • Возможно ли установить VPN между двумя Микротиками, когда выделенный IP только у клиента, а у сервера - нет?

    hint000
    @hint000
    у админа три руки
    Вопрос из зазеркалья? :)
    Поменяйти их ролями. Сервер сделайте клиентом, а клиент - сервером.
    Ответ написан
    5 комментариев
  • Что значит префикс "х" в адресе сайта?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Это поддомен, а не префикс.
    Или домен третьего уровня.
    Ничего он не означает, так же как и m.
    Ответ написан
    Комментировать
  • Как понять почему не запускается программа getscreen.me в ubuntu 20.04?

    @Drno
    запустите её в консоли с выводом ошибок, посмотрите на что будет ругаться
    Ответ написан
    8 комментариев
  • Windows 11 как подключиться к беспроводной сети?

    @Drno
    А сам вай фай модуль в ПК точно есть?
    Драйвера на него установлены?
    Что показывает диспетчер устройств по этому поводу?
    Ответ написан
    5 комментариев
  • При записи данных в файл, они остаются в кеше ОС для возможности чтения из кеша?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Важно понимать следующее: нет никакой ложки

    С точки зрения Линукса, данные, которые вы якобы пишете на диск - это страницы в памяти, которые помечены как неанонимные (это значит, что на диске есть файл, который с ними связан), и грязные (а это значит, что эти страницы надо сбросить на диск).

    Причем момент, когда произойдет сброс, зависит от кучи факторов - программист на это может влиять таким образом:

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

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

    После сбрасывания страниц на диск, ОС помечает их как чистые. Это значит, что их можно занять под что-то другое. Можете запустить htop и посмотреть на желтую полоску - это как раз те самые страницы кэша, и их может быть очень много.

    Для небольших файлов может быть выгоднее использовать отображение файла на память (mmap), вместо ручного ковыряния с записью-чтением.

    А теперь важный вопрос - как же понять, остаются ли данные в кэше после записи. Да легко.

    -очистите кэш sync; echo 1 > /proc/sys/vm/drop_caches
    -посмотрите, что желтая часть на полоске памяти в htop исчезла
    -запустите DD, запишите на диск гигабайт. (dd if=/dev/urandom of=test.raw bs=8M count=128 status=progress)
    -посмотрите, что у вас нарисовался желтый гигабайт
    -можете потом считать этот файл и увидеть офигительную скорость - выше гигабайта в секунду (у меня получается 6, что очевидно говорит о том, что чтение происходило из RAM). Последнее лучше делать, если писали на HDD - потому что хороший SSD может выдать столько же

    Объективно, этот тест показывает, что ДА, записанные данные остаются болтаться в памяти.

    Но при этом, момент, когда эти данные оттуда уйдут, зависит от множества факторов (скажем, если памяти - в обрез, PageCache пойдет под нож в первую очередь). Так что может оказаться полезным использовать другие стратегии - например, mmap
    Ответ написан
    Комментировать
  • В чём суть шутки про ноги в С/С++?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Это есть книга такая
    71AE90J735L._SX377_BO1,204,203,200_.gif

    В продолжение веселья https://www-users.cs.york.ac.uk/susan/joke/foot.htm
    Ответ написан
    Комментировать
  • Почему русские символы при выгрузке на хостинг заменяются на шифр?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    вы бы сказали что делаете и где это происходит
    0 символ разделитель
    1 символ указатель на то что это уникод
    2-5 это порядковый номер
    #U0412

    https://charbase.com/0412-unicode-cyrillic-capital...
    а так меняете #U0412 на \U0412 и скармливаете перекодировщику
    https://www.online-decoder.com/ru
    Ответ написан
    Комментировать
  • Как при отправке письма c помощью mail() указать отправителя?

    @hey_there
    "mylogin@hostru04.myhoster.org" - это адрес на конверте письма, т.н. "envelope from". По умолчанию, при использовании функции mail() этот адрес формируется почтовым агентом сервера (чаще всего это "sendmail") из имени пользователя ("mylogin"), от которого запущен процесс веб-сервера, обслуживающего ваш сайт, и хостнейма сервера ("hostru04.myhoster.org").

    Вы можете (если это явно не запрещено вашим хостингом) принудительно указать адрес для "envelope from", воспользовавшись параметром "additional_params" функции mail(). Найти описание параметра и пример задания адреса на конверте можно в офф.документации: https://www.php.net/manual/ru/function.mail.php

    Важно: в "envelope from" нужно указывать домен, от которого разрешена отправка писем на вашем сервере, иначе письма будут отклоняться. Подробности рассказывать не буду, но дам ориентир: https://ru.wikipedia.org/wiki/Sender_Policy_Framework
    Ответ написан
    Комментировать
  • Git pull что от меня хочет?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    % git pull                                      
    У текущей ветки нет информации об отслеживании.
    Пожалуйста, укажите с какой веткой вы хотите слить изменения.
    Для дополнительной информации, смотрите git-pull(1).
    
        git pull <внешний-репозиторий> <внешняя-ветка>
    
    Если вы хотите указать информацию о отслеживаемой ветке, выполните:
    
        git branch --set-upstream-to=<внешний-репозиторий>/<внешняя-ветка> <локальная-ветка>

    Похоже ты добавил remote с именем MyBot, но забыл связать текущую ветку master с какой-либо вышестоящей.
    Поэтому Git не знает откуда скачивать и просит тебя указать откуда конкретно ты хочешь загрузить коммиты.

    Например так:
    # скачать ветку master из внешнего репозитория MyBot и слить с текущей локальной веткой
    git pull MyBot master

    Либо привязать к текущей ветке вышестоящую чтобы заработал pull без параметров:
    # связать локальную ветку master c внешней веткой master
    git branch --set-upstream-to=MyBot/master master
    Ответ написан
  • Как в BASH работают логические операторы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, в заголовке "Как в работают логические операторы?", а на самом деле вопрос "почему код ошибки 0 интерпретируется как true". "Где логика, где разум?" :)

    В то время как озвученный вопрос и на самом деле интересный.
    Так работают логические операторы не только в баше. В РНР точно так же можно написать
    true /*false*/ and print "Success" or print "Failed";
    и получать тот же самый результат.
    Суть тут в том, что логические операторы делаются "ленивыми". Они не вычисляют тот операнд, который не влияет на конечный результат.
    Соответственно:
    • если операция вернула true, то мы должны выполнить тот операнд, который стоит после and, потому что иначе не сможем получить общий результат операции and. который будет true только если оба операнда вернули true
    • если операция вернула true, то нет смысла выполнять тот операнд, который стоит после or, поскольку его результат ни на что не повлияет - итоговый результат в любом случае будет true, поскольку для or важно чтобы истинным был только один результат. получаем "Success"
    • если операция вернула false, то нам не нужно выполнять тот операнд, который стоит после and, потому что в любом случае результатом будет false
    • если операция вернула false, то мы должны выполнить тот операнд, который стоит после or, поскольку он будет определяющим для всего выражения. получаем "Failed"
    Ответ написан
    Комментировать
  • Работа сертификатами x509?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Дома с переломом ноги
    Файл .ca - это файл .ca. Что он из себя представляет, зависит от его содержимого.

    Несколько сертификатов в формате PEM можно обьединить в один файл, так делают довольно часто. Bundle (бандл) - это буквально "связка", "пачка", то есть некоторое количество чего-то.
    Ответ написан
    Комментировать
  • Как запретить доступ к сайту, если посетитель заходит по прямому IP машины?

    NGINX в итоге что-то да ответит. Можно сделать отдельный конфиг, который будет ловить «все остальные» (default_server) запросы, в т.ч. по прямому IP:
    server {
        listen       80  default_server;
        server_name  _;
        return       444;
    }
    Здесь _ подчеркивание — не что-то волшебное, просто несуществующее имя домена.

    Подробнее: nginx.org/en/docs/http/server_names.html#miscellan...
    Ответ написан
    Комментировать