Задать вопрос
  • Не работает условие по времени в bash скрипте?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Пользуйтесь timestamp, баш сравнивать даты не умеет.
    Пользуйтесь declare -i, иначе все переменные по умолчанию в баше это строка, а не число.

    опция --date позволяет указать какую дату вы хотите использовать
    date --date="2011/12/12 12:12:12"
    Monday, 12 december 2011 12:12:12 +0200

    опция +%s позволяет при помощи date вывести нужную дату в виде "секунды с 1970 года", получите целые числа, которые может сравнить bash. Простой пример:

    #!/bin/bash
    
    declare -i MYDATE1=`date --date="2011/12/12 12:12:12" +%s`
    declare -i MYDATE2=`date --date="2017/07/06 11:11:11" +%s`
    declare -i CURRDATE=`date +%s`
    
    echo $MYDATE1 $MYDATE2 $CURRDATE
    
    if [ $MYDATE1 -lt $CURRDATE -a $MYDATE2 -gt $CURRDATE ]; then
      echo "Сейчас больше чем $MYDATE1 и меньше чем $MYDATE2"
    else
      echo "не-а"
    fi
    Ответ написан
    Комментировать
  • Как вы организуете свою работу?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    Про GitHub.

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

    2) Создал себе на Гитхабе две дополнительные организации внутри своего аккаунта.
    - «paulradzkov-forks» — для форков чужих проектов.
    - «paulradzkov-heaven» — кладбище для старых проектов, куда перемещаются все неактуальные проекты.
    Эти две дополнительные организации позволяют очистить основной аккаунт от мусора. В нем теперь только несколько актуальных проектов, в которых легко ориентироваться.

    3) Перемещаю все старые проекты из Дропбокса на Гитхаб в «paulradzkov-heaven». Проектов много, это долго, но освободилось уже несколько гигов (т.к. там кроме кода psd-исходники, архивы с инсталляторами и прочее). Место в облаках заканчивается, а на Гитхабе — резиновое.
    Это кладбище уже пригодилось, когда у меня попросили поискать исходники проекта, над которым я работал 3 или 4 года назад, а я через минуту ответил им ссылкой на нужный репозиторий. Не пришлось никуда лезть, распаковывать, искать, запаковывать, отправлять почтой или закачивать в облако.
    Повторюсь, что на Гитхабе классный поиск по исходникам: если нужно посмотреть, как что-то сделал в старом проекте, но не помнишь в каком — можно довольно быстро найти искомое без возни с архивами.

    Итого.
    Код должен лежать на Гитхабе.
    В том числе старые проекты.
    Используйте организации, чтобы рассортировать проекты, если их много.
    Порядок там, где у каждой вещи есть своё место. Придумайте себе правила порядка заранее и соблюдайте их, чтобы не тратить время на ликвидацию беспорядка.
    Ответ написан
    9 комментариев
  • Почему SVN не позволяет выполнить commit?

    pabelyakov
    @pabelyakov Автор вопроса
    Проблему удалось решить, добавив в конфигурационный файл апача в настройках доступа к svn по http следующий параметр:

    SVNAdvertiseV2Protocol off

    Возможно, кому-нибудь это решение поможет.
    Ответ написан
    Комментировать
  • Как вставить переменную в os.system?

    longclaps
    @longclaps
    [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    Тебе такая нумерация месяцев нужна? Тогда вот однострочник:
    os.system("tar cvf backup/backup_month/%d.tar.gz * && rm backup/*" % ((datetime.date.today().month - 2) % 12 + 1))
    Ответ написан
    1 комментарий
  • Как сделать архивацию файлов внутри каждой из директорий и удалить исходники?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    find /srv/sh/folder/* -maxdepth 0 -type d -exec bash -c 'cd {} && tar --remove-files -czf archive.tgz *' \;
    Ответ написан
    Комментировать
  • Как запустить bash скрипт как демон в systemd?

    Xuxicheta
    @Xuxicheta Автор вопроса
    инженер
    Решил проблему.
    Скрипт
    #!/bin/bash -
    #ссылка на интерпретатор обязательна
    
    function monitoring() {
        inotifywait -e create,delete,modify,move -mrq $1 | while read events 
        do
           echo "$(date +"%m.%d.%Y_%T")   $events"
        done
    }
    DIR="%mydir%"
    LOGFILE="%mylogfile%"
    echo "Start filesystem monitoring: Directory is $DIR, monitor logfile is $LOGFILE"
    monitoring $DIR  >> $LOGFILE &

    Сервис-файл
    [Unit]
    Description=File system Monitoring -- /root/.bin/monitor.sh
    After=local-fs.target systemd-sysctl.service systemd-modules-load.service
    
    [Service]
    Type=forking
    ExecStart=/root/.bin/monitor.sh
    EnvironmentFile=/root/monitor.cfg
    
    [Install]
    WantedBy=multi-user.target
    Ответ написан
    Комментировать
  • Как отсортировать кортеж?

    @deliro
    Я сейчас скажу прописную истину, но она, оказывается, далеко не очевидна для питон-программистов.
    Кортеж - это не "неизменяемый список". Кортеж - это структура данных. То, что кортеж умеет итерироваться - это хак, о котором даже сам Гвидо говорил.
    Как минимум, существование таких штук, как __slots__ и namedtuple должно натолкнуть на эти размышления.

    Касательно твоей задачи:
    def cmp(x):
        x = x.split('x')
        return int(x[0]) * int(x[1])
    
    sorted(SIZES, key=cmp)
    Ответ написан
    Комментировать
  • Как получить переменные BASH их TXT файла?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Записываете переменные в файл, как в обычном sh-скрипте - VAR1=foo, VAR2=bar и т. д, а в начале вашего скрипта говорите "source /path/to/varsfile", и все переменные оттуда подтягиваются.
    Ответ написан
    2 комментария
  • Как написать bash скрипт, который будет прослушивать изменения в файле?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    while true; do
        inotifywait -qq -e create,close_write,modify,move,delete $CHECK_FOLDER && $BUILD_COMMAND
    done
    Ответ написан
    5 комментариев
  • Может ли TCP соединение работать сразу с несколькими клиентами?

    @nirvimel
    TCP соединение - это сокет. Открытый сокет связывает конкретный порт на локальной машине с конкретным портом на конкретной удаленной машине (и никак иначе). Открытый сокет соединяет всегда две стороны. Не существует многосторонних сокетов. Но на одной машине может быть открыто сколько угодно сокетов.
    Ответ написан
    Комментировать
  • Как перехватить трафик одной программы?

    vvpoloskin
    @vvpoloskin Куратор тега Компьютерные сети
    Инженер связи
    Одна программа всегда обращается к конкретному узлу по конкретному порту также с конкретного узла и порта. Поставьте фильтры на порт и адрес.
    Ответ написан
    7 комментариев
  • Какой аналог Aircrack-ng для Ubuntu?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    sudo apt install aircrack-ng
    Ответ написан
    3 комментария
  • Что такое LOA (letter of authorisation) при переносе блока ipv6 адресов хостеру?

    vvpoloskin
    @vvpoloskin Куратор тега Компьютерные сети
    Инженер связи
    Все же расписано, почему вы не руководствуетесь официальными документами? Вам нужно осуществить перевод своего блока в их AS, получить письмо подтрверждение от ARIN и отправить хостеру.

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

    @shnicel Автор вопроса
    notify-send 'VK Friend' "`curl "lnk"`"
    Ответ написан
    Комментировать
  • Всем привет, промогите разобраться с скриптом для Linux?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Банальный синтаксис. После case нет esac, после do нет done. Или это неполный скрипт? Для проверки файла вот есть такая фигня - проверяет наличие, то, что это файл (а не каталог, например) и то, что он не нулевого размера:
    check_fileread()
    {
      if [ ${#1} -ne 0 ]; then
        if [ ! -r $1 ]; then
          echo "File $1 cannot read (does not exist, access denied)"
          exit 55
         elif [ ! -s $1 ]; then
           echo "File $1 is empty (has zero size)"
           exit 56
        fi
      fi
    }
    Ответ написан
    Комментировать
  • Реализация ping на bash?

    sanchomaster
    @sanchomaster
    deployment engineer
    Вот например, то же но проще, с использованием nmap:
    nmap -sP 192.168.1.0/24 | awk '$2=="scan" {print "Оборудование с IP:" $5 " находиться в сети."}'


    Адрес сети и маску можно подставить свою.
    Ответ написан
    Комментировать
  • Какие есть объективные причины для перехода на Linux вебразработчику?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Почему до сих пор считается, что основной ОС вебразработчика должна быть ОС на основе Linux?

    Как правило, это на порядок удобнее.

    Да, можно под виртуалкой запустить линуху, но зачем?)
    Да, можно эмулировать линушную консольку, но половина хоткеев у вас работать не будет.
    Да, можно докер в виртуалке поднять, но под линухой он будет нейтивно работать.
    Да, можно считать, что вагрант вас спасет, но тот же ансайбл придется таки вовнутри поднимать, а не использовать хостовой.
    Да, можно приблуды для виртуальных рабочих столов прикрутить, но зачем, это идет в коробке с большинством DE.
    Да, можно по полной программе обмазываться putty и понасохранять все ваши доступы, но проще настроить ~/.ssh/config.
    Да, можно понаустанавливать вот это ваше все с официальных сайтов, но проще натапть "apt install **", или "yum install **".
    Да, можно залезть в политики безопасности и сделать "зашибись", но для обычной dev тачки под nix чаще всего вам это и не нужно.
    Да, можно закачать крутых прог, которые вам скрытые процессы покажут, но проще ввести есть ps aux.
    Да, можно в .gitattributes понапрописывать text eol=lf, но опять же зачем, если только у винды принят crlf?
    Да, можно понаотключать BOM, но опять же зачем?
    Да, можно считать реестр - удобной штукой, но это не так))
    и т. д...

    Из таких мелочей и состоит пользование ОС.

    Чуть не забыл:
    Да, можно считать, что комп под виндой принадлежит вам...))
    Ответ написан
    12 комментариев
  • "The system is running in low-graphics mode", как исправить?

    Есть цепочка зависимостей A -> B -> C
    Вы удалили элемент B, вместе с ним вы удалили C, т.к. он не может работать без своей зависимости.
    Затем вы удалили неиспользуемые элементы (от которых никто не зависит), в нашем случае это A.
    Решили починить всё, и вернули обратно B. За ним подтянулся элемент A. Но C не поставился, т.к. он не нужен для работы B.

    Итого: скорее всего вы снесли части графического окружения и драйверы. Попробуйте поставить xubuntu-desktop и драйвер для вашей видеокарты (если используете пропиретарный).
    Ответ написан
    2 комментария