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

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

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

    leahch
    @leahch Куратор тега Linux
    Я мастер на все руки, я козлик Элек Мэк :-)
    Очень просто - читайте вывод команды du с ключом -s
    А уже потом принимайте решение, что и как удалять.
    leah@leah-pc ~> du -s /var/www/media
    131268256	/var/www/media
    leah@leah-pc ~>

    Можно конечно и на питоне пройтись по всем подкаталогам и считать размеры всех файлов. Но зачем, если уже есть утилита.
    import subprocess
    proc = subprocess.run(["du","-s","/var/www/media"], stdout=subprocess.PIPE)
    folder_size = int(proc.stdout.decode('utf-8').split('\t')[0])


    Ну и удалять можно командой rm
    Ответ написан
    Комментировать
  • Чем отличаются друг от друга консоль и терминал?

    DevMan
    @DevMan Куратор тега IT-терминология
    если не пускаться в историю, отвечать в контексте вопроса и упрощённо:
    консоль - командная строка.
    терминал - программа, предоставляющая доступ к командной строке.
    Ответ написан
    Комментировать
  • Какое максимальное количество операций в бинарном поиске?

    @Mercury13
    Программист на «си с крестами» и не только
    ceil(log2(n + 1))

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

    Доказательство.
    Докажем обратное: за k шагов можно угадать 2k−1 чисел.

    БАЗА. 1 угадывается с первого раза. 2 с первого раза уже не угадаешь.

    ШАГ. k → k+1. Другими словами, нам известно, что 2k−1 угадать можно, а 2k уже нельзя.
    Берём центральное, и остаётся 2k−1 слева и 2k−1 справа. → n = 2·(2k−1)+1 = 2k+1−1
    Если n = 2k+1 или больше, хоть в одной половинке будет 2k, что, по предположению индукции, невозможно.
    Ответ написан
    4 комментария
  • В чём недостатки bind mount?

    @pfg21
    ex-турист
    повышение сложности структуры каталогов.
    плюс ты с большой вероятностью через некоторое время забудешь что к чему прикручивал. и при миграции придется обратно вспоминать что куда приткнул. к примеру, машину переместил, а данные забыл. и ничего не работает и все срочно. и тут извилины начинают кипеть :)
    в скрипте бекапа возможно придется учесть структуру данных. хотя хороший бекап должен отдельно бекапить данные и программы.
    Ответ написан
    Комментировать
  • В чём недостатки bind mount?

    Зависит от способов применения. Если хранилище локальное - bind удобнее в плане эксплуатации, бекапов.
    Volume же позволяет использовать различные драйверы, в т.ч. для подключения к удалённым хранилища. Это может позволить хранить все volume централизованного, однако docker не предоставляет никаких встроенных способов по бекапу volume - это придётся решать на стороне хранилища.
    Ответ написан
    Комментировать
  • Почему #define не рекомендуетс к использованию?

    BacCM
    @BacCM
    C++ почти с рождения
    Потому, что
    1. нет контроля типов
    2. нет ограничения по области видимости, типа неймспейсов.
    3. макрос разворачивается подстановкой в месте использования, т.е. там будет вставлен код
    ((a) > (b) ? (a) : (b)) который превратится в ((++a) > (b+10) ? (++a) : (b+10))
    4. макросы сложно отлаживать
    5. неправильно написанный макрос будет компилироваться в непонятно что. Например если убрать те же скобки

    как без них раскроется выражение x = max(a, b) + 10; ?
    x = a > b ? a : b+10;

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

    #include <iostream>
    
    #define mymax(a,b) a>b?a:b
    #define mul(a,b) a*b
    
    int main() 
    {
    
    	std::cout << mymax(5, 10) << std::endl; // Ошибка компиляции
    	std::cout << mul(5+5, 10) << std::endl; // Неожиданно на выходе 55, а не 100
    
    	return 0;
    }
    Ответ написан
    3 комментария
  • Как перевести трафик с одного ASBR на другой?

    @KhoreffMikhail
    CCNP
    А как полностью звучит вопрос?
    Проектная работа по замене старого ASBR на новый? А допустим ли дайнтайм? Есть ли резервный линк в интернет?
    Или у нас два ASBR, нужно накрутить политики и правила, что б трафик шел не через первый, а через второй? Тогда BGP-шные атрибуты local-preference и другие.
    Ответ написан
    Комментировать
  • Какова суть псевдо-интерфейса Null0 на Cisco IOS?

    @KhoreffMikhail
    CCNP
    Добавлю 5 копеек.
    При суммаризации в каком-нибудь EIGRP циска не может распространять маршрут, которого сама не имеет. Поэтому на ней появляется маршрут на суммарную сеть в NULL0. И он уходит в протокол маршрутизации.
    О том, что маршрут идет в Null0, знает только тот маршрутизатор, который его генерирует. Остальные видят, что маршрут показывает на суммаризующий маршрутизатор.
    Ответ написан
    Комментировать
  • Почему происходят соединения по IPv6?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    почему у сервера есть соединения IPv6

    скорее всего потому что приложение, в данном случае апач, использует IPv4-mapped IPv6 адрес.
    Можно посмотреть в /proc/net/tcp6, там эти адреса выглядят так:
    sl  local_address                         remote_address                        st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
    14: 0000000000000000FFFF00001F44CB0A:A5A2 0000000000000000FFFF00004B44CB0A:06B4 01 00000000:00000000 02:000000F6 00000000  1000        0 20787517 2 ffff8e7add433800 20 4 1 10 -1

    т.е. 96 старших битов адреса -- ::FFFF:0:0, 32 младших бита -- обычный IPv4 адрес.

    Вот пример кода, который, если его скомпилировать и запустить, открывает сокет ipv6, к которому можно присоединиться как по ipv4 так и по ipv6:
    $ ./ipv6 &
    $ nc 127.0.0.1 13330 &
    $ lsof -i6
    ipv6      18422 jcmvbkbc    3u  IPv6 21018438      0t0  TCP *:13330 (LISTEN)
    ipv6      18422 jcmvbkbc    4u  IPv6 21018439      0t0  TCP localhost:13330->localhost:36196 (ESTABLISHED)
    Ответ написан
    2 комментария
  • Что написано в строке указатель или ссылка?

    @abcd0x00

    не совсем понимаю как интерпретировать этот кусок
    (struct sockaddr_in *)&serv_addr
    то ли указатель на сруктуру, то ли ссылка, то ли ещё что...

    Это берётся адрес структуры в памяти определённого размера и этот адрес приводится к типу адреса структуры другого размера. Адрес тот же самый остаётся, а размер данных по этому адресу как бы меняется. На самом деле она уже там лежит в правильном размере, просто сама структура является как бы составной. И чтобы компилятор не ругался, что структура не того типа подаётся, делается такое приведение.

    В лине адреса делаются таким образом: берётся общая структура, которая подходит под все адреса, потом к ней в конце привязывается (дописывается в памяти) адрес в определённом виде. А так как адреса бывают разных размеров, то и размер конечной структуры может варьироваться. Сам язык по стандарту допускает дописывание в конец структуры каких-то данных, поэтому эта возможность языка и используется в POSIX-системах для составления адресов перед их использованием.
    Ответ написан
    Комментировать
  • Как отсортировать элементы так, чтобы слева находились нечетные элементы, а справа — четные?

    @Mace_UA
    2017 год. Вам не нужны std::binary_function и прочая устаревшая фигня. Да и можно заюзать лямбду, если этот компаратор нужен только в одном месте кода.

    Судя по описанию задачи, Вам нужно не отсортировать массив -- Вам нужно сделать partition.

    Воспользуйтесь стандартными алгоритмами std::partition (если относительный порядок чётных и нечётных элементов между собой не важен) или std::stable_partition (если нужно сохранить оригинальный порядок).

    Пример:
    std::stable_partition(vec.begin(), vec.end(), [](int x) { return x % 2 == 1; });
    Ответ написан
    Комментировать
  • Почему такой странный вид файла зоны?

    @arachnid
    raw-формат для slave-зон начал используется еще с 9.9. с определенного времени стал форматом по умолчанию.

    для просмотра

    named-compilezone -f raw -F text -o example.net.text example.net example.net.raw
    Ответ написан
    Комментировать
  • Как можно обойти проверку пароля?

    @anonlatte
    Используй уязвимость, связанную с нулевым байтом
    В конце строки добавь %00. Всё, что находится после этих символов, не будет регулярным читаться, но будет возможность вставить нужные символы, подходящие под условие получения флага
    Решение таска example.com/?password=pass%00--
    Ответ написан
  • Почему такая разница в RTT (ping)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Тем, что отвечать на пинги - не прямая обязанность коммутатора, и делает он это, скорее всего, с низким приоритетом. А вот передача пакетов между компьютерами идёт в высоком приоритете, соответственно выполняется быстро.
    Ответ написан
    Комментировать
  • Чем отличаются системный администратор, сетевой архитектор, сетевой инженер?

    gbg
    @gbg Куратор тега Системное администрирование
    Любые ответы на любые вопросы
    Первый эксплуатирует, второй проектирует, третий - строит.
    Ответ написан
  • Чем отличаются системный администратор, сетевой архитектор, сетевой инженер?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Нет.
    В СНГ названия должностей могут быть вообще от балды, поскольку кто-то придерживается стандартов СССР, в которых таких должностей не было вообще, и могут влепить даже "оператор ЭВМ".

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

    @lubezniy
    Если Вы хотите стать настоящим сисадмином, научитесь сперва в любой момент знать о своём хозяйстве всё - как работает, в какие моменты глючит, как решать проблемы с глюками. Проведите инвентаризацию и подготовьте полную (насколько это возможно) документацию по хозяйству, научитесь её вести и вносить изменения сразу, как только в хозяйстве что-то меняется (история изменений тоже полезна). Конкретно - аппаратная и программная конфигурация всех компьютеров, серверов, сетевого оборудования, печатающих устройств и т. п., схема сети, желательно схема электропитания, а для совсем продвинутых - и другие потенциально опасные коммуникации (кондиционеры, водопроводные трубы в местах, где в случае проблем что-то может литься на оборудование и его портить, и способы отключения, чтобы можно было быстро их найти). Затем определите критичные моменты в деятельности компании, где нежелательны технические простои, продумайте способы уменьшения простоев при возникновении проблем и по наиболее вероятным сценариям реализуйте их, а также спланируйте плановое обслуживание техники, чтобы уменьшить вероятность аварий. Обязательно реализовать резервное копирование наиболее критичных данных с проверкой восстанавливаемости. Литературу и гугл уже можно будет смотреть и читать по конкретным вопросам, которые неизбежно возникнут при реализации. Когда освоите всё и потренируетесь в реакции на аварии и научитесь своевременно обслуживать оборудование в плановом порядке, останется научиться спать на работе и почувствовать себя настоящим сисадмином. Как-то так.
    Ответ написан
    Комментировать