Найдено результатов: 30

Гарантируется ли разрешение gettimeofday() в микросекундах?

Я портирую игру, которая изначально была написана для Win32 API, на Linux (ну, портирую порт OS X порта Win32 на Linux).

Я реализовал QueryPerformanceCounter , дав uSeconds с момента запуска процесса:

BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
    gettimeofday(&currentTimeVal, NULL);
    performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
    performanceCount->QuadPart *= (1000 * 1000);
    performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);

    return true;
}

Это, в сочетании с QueryPerformanceFrequency() , дающим постоянную 1000000 в качестве частоты , хорошо работает на моей машине, давая мне 64-битную переменную, которая содержит uSeconds с момента запуска программы.

Так это портативное устройство? Я не хочу обнаружить, что он работает по-другому, если kernel был скомпилирован определенным образом или что-то подобное. Однако меня вполне устраивает, что он не переносится на что-то другое, кроме Linux.

linux   winapi   visual-c++   unix   timer    

540   10   16:03, 1st July, 2020


Получение корневых разрешений на файл внутри vi?

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

sudo vi filename

Есть ли способ предоставить vi sudo права на сохранение файла? Я, кажется, помню, что видел что-то об этом, когда искал что-то о vi некоторое время назад, но теперь я не могу найти это.

linux   unix   vi    

465   11   16:03, 1st July, 2020


Размер процесса на UNIX

Что такое правильный способ, чтобы получить размер процесс на Solaris, HP-UX и AIX ? Следует ли нам использовать top или ps -o vsz или что-то еще?

unix   size    

440   4   16:03, 1st July, 2020


Как я могу использовать (n) curses в Ruby?

Я хотел бы создать индикатор выполнения, чтобы указать состояние пакетного задания a в Ruby .

Я читал некоторые учебники / библиотеки по использованию (n) curses , ни один из которых не был особенно полезен в объяснении того, как создать индикатор выполнения "animated" в terminal или использовать curses с Ruby .

Я уже знаю об использовании отдельного потока для отслеживания хода выполнения данного задания, но не знаю, как приступить к рисованию индикатора выполнения.


Обновление

ProgressBar класс был невероятно прямолинейным, прекрасно решил мою проблему.

ruby   unix   curses    

458   4   16:03, 1st July, 2020


Выбор инструмента статического анализа кода

Я работаю над проектом, где я кодирую в C в среде UNIX. Я использовал инструмент lint, чтобы проверить свой исходный код. Lint существует уже давно (с 1979 года), может ли кто-нибудь предложить более новый инструмент анализа кода, который я мог бы использовать ? Желательно инструмент, который является бесплатным.

c   unix   testing    

596   15   16:03, 1st July, 2020


Использование Xming X Window Server над VPN

У меня есть Xming X Window Server, установленный на ноутбуке под управлением Windows XP для подключения к некоторым серверам разработки UNIX.

Он прекрасно работает, когда я подключаюсь непосредственно к корпоративной сети в офисе. Однако он не работает, когда я подключаюсь к сети удаленно через VPN.

Когда я запускаю Xming при удаленном подключении, ни один из моих terminal Windows не отображается.

Я думаю, что это может быть как-то связано с тем, что переменная окружения DISPLAY неправильно устанавливается на адрес IP ноутбука, когда он подключен.

Я заметил, что когда я делаю ipconfig при удаленном подключении, мой ноутбук имеет два адреса IP, один из которых назначен ему из сети компании, а локальный адрес IP я настроил для него на моем "local network" из моего modem/router.

Есть ли какие-то изменения конфигурации, которые мне нужно сделать в Xming, чтобы поддержать его использование через VPN?

unix   vpn   xming    

510   9   16:03, 1st July, 2020


Как мне создать ASCII коды 2 и 3 в командной строке Bash?

Если я нажму Ctrl + B , это должно дать мне ASCII код 2, но Ctrl + C будет интерпретироваться как перерыв.

Поэтому я решил, что мне нужно перенаправить файл. Как я могу получить эти символы в файл?

linux   bash   unix   ascii    

419   3   21:36, 11th August, 2020


Использование Visual Studio для разработки для C++ для Unix

Есть ли у кого-нибудь истории сражений, которыми можно поделиться, пытаясь использовать Visual Studio для разработки приложений для Unix? И я не говорю об использовании .NET с виртуальной платформой Mono или Wine, работающей под ним.

Наша компания насчитывает около 20 разработчиков, работающих под управлением Windows XP/Vista и разрабатывающих в основном для Linux & Solaris. До недавнего времени мы все входили в основной сервер Linux и модифицировали/строили код старым добрым способом: Emacs, Vi, dtpad - выбирайте сами. Затем кто - то сказал: "Эй, мы живем в темные века, мы должны использовать IDE".

Поэтому мы попробовали некоторые из них и решили, что Visual Studio была единственной, которая отвечала бы нашим требованиям к производительности (да, я уверен, что IDE X-это очень хороший IDE, но мы выбрали VS).

Проблема в том, как настроить среду, чтобы файлы были доступны локально для VS, но также доступны для сервера сборки? Мы решили написать плагин Visual Studio-он записывает наши файлы локально и на сервер сборки всякий раз, когда мы нажимаем "Save", и у нас есть немного жирная кнопка "sync", которую мы можем нажать, когда наши файлы изменяются на стороне сервера (например, когда мы обновляем последние файлы с нашего сервера управления версиями).

Плагин также использует функцию внешней системы сборки Visual Studio, которая в конечном итоге просто ssh встраивается в сервер сборки и вызывает нашу локальную утилиту "make" (которая является Boost Build v2 - имеет большую проверку зависимостей, но очень медленно запускается в результате, т. е. 30-60 секунд, чтобы начать). Результаты передаются обратно в Visual Studio, так что разработчик может нажать на ошибку и перейти к соответствующей строке кода (довольно гладко на самом деле). Сервер сборки использует GCC и кросс-компилирует все наши сборки Solaris.

Но даже после того, как мы все это сделали, я не могу не вздыхать всякий раз, когда начинаю писать код в Visual Studio. Я щелкаю файл, начинаю печатать, и VS пыхтит, чтобы догнать меня.

Есть ли что-нибудь более раздражающее, чем необходимость останавливаться и ждать ваших инструментов? Стоят ли эти преимущества такого разочарования?

Мысли, истории, помощь?

c++   visual-studio   unix   development-environment    

567   13   18:49, 10th August, 2020


Как сделать поиск без учета регистра с помощью модификатора шаблона, используя меньше?

Похоже, что единственный способ сделать это-передать параметр-i, когда вы изначально работаете меньше. Кто-нибудь знает о каком-то секретном взломе, чтобы сделать что-то вроде этой работы

/something to search for/i

unix   search   case-insensitive   less-unix    

511   5   20:40, 26th August, 2020


Различия между файлами unix и windows

Правильно ли я предполагаю, что единственная разница между "windows files" и "unix files" - это прорыв линии?

У нас есть система, которая была перемещена с машины windows на машину unix, и у нее возникли проблемы с форматом.

Мне нужно автоматизировать перевод между unix/windows, прежде чем файлы будут доставлены в систему в нашем "transportsystem". Вероятно, мне понадобится что-то, чтобы определить текущий формат и что-то, чтобы преобразовать его в другой формат. Если это просто новая строка, то это большая разница, тогда я рассматриваю просто чтение файлов с java.io. Насколько я знаю, они способны справиться и с тем, и с другим с помощью readLine. А затем просто напишите каждую строчку обратно с помощью

while (line = readline)
    print(line + NewlineInOtherFormat)
....

Резюме:

samjudson :

Это только разница в текстовых файлах, где UNIX использует однострочный канал (LF) для обозначения новой строки, Windows использует возврат каретки/линейный канал (CRLF), а Mac использует только CR.

на что Себжир подробно отвечает:

OS X использует LF, так же как UNIX - MacOS 9 и ниже использовали CR, хотя

Mo

Кроме того, может существовать разница в кодировке символов для национальных символов. Там нет "unix-encoding", но многие linux-варианты используют UTF-8 в качестве кодировки по умолчанию. Mac OS (который также является unix) использует свою собственную кодировку (macroman). Я не уверен, что такое кодировка по умолчанию windows.

McDowell

В дополнение к различиям в новой строке, метка порядка байтов может вызвать проблемы, если файлы обрабатываются как Unicode на Windows.

Cheekysoft

Однако другой набор проблем, с которыми вы можете столкнуться, может быть связан с кодировкой символов single/multi-byte. Если вы видите странные неожиданные символы (не в end-of-line), то это может быть причиной. Особенно если вы видите квадратные поля, вопросительные знаки, перевернутые вопросительные знаки, дополнительные символы или неожиданные акцентированные символы.

Сади

На unix файлы, которые начинаются с a . они скрыты. На windows это флаг файловой системы, к которому у вас, вероятно, нет легкого доступа. Это может привести к тому, что файлы, которые должны быть скрыты, теперь становятся видимыми на клиентских компьютерах.

Права доступа к файлам различаются между ними. Вы, вероятно, обнаружите, когда вы копируете файлы в систему unix, что файлы теперь принадлежат Пользователю, который сделал копирование и имеет ограниченные права. Вам нужно будет использовать chown/chmod, чтобы убедиться, что правильные пользователи имеют к ним доступ.

java   windows   unix   file    

550   6   04:58, 1st August, 2020


Как создать дамп ядра в Linux при ошибке сегментации?

У меня есть процесс в Linux, который получает ошибку сегментации. Как я могу сказать ему, чтобы он генерировал дамп ядра, когда он выходит из строя?

linux   bash   unix   coredump   tcsh    

495   12   01:32, 13th August, 2020


Получение трассировок стека в системах Unix, автоматически

Какие существуют методы автоматического получения стека trace в системах Unix? Я имею в виду не просто получение основного файла или Интерактивное подключение с помощью GDB, а наличие обработчика SIGSEGV, который сбрасывает обратную трассировку в текстовый файл.

Бонусные баллы за следующие дополнительные функции:

  • Сбор дополнительной информации во время аварии (например. конфигурационный файл).
  • Email информация о сбое bundle для разработчиков.
  • Возможность добавить это в общую библиотеку dlopen ed
  • Не требуется GUI

linux   unix   stack-trace   sigsegv    

474   4   08:26, 29th August, 2020


Почему **find** ничего не находит?

Я ищу файлы скриптов shell, установленные в моей системе, но найти не работает:

$ find /usr -name *.sh

Но я знаю, что есть тонна сценариев там. Например:

$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh  
/usr/local/lib/tkConfig.sh

Почему не находит работу?

bash   unix   shell   ksh    

382   3   03:36, 14th August, 2020


Скрытие пароля сетевого прокси в текстовых файлах на Linux/UNIX-likes

Как правило, в большой сети компьютер должен работать за аутентифицированным прокси-сервером - любые соединения с внешним миром требуют имя пользователя / пароль, который часто используется пользователем для входа в email, workstation и т. д.

Это означает необходимость поместить сетевой пароль в файл apt.conf , а также, как правило, переменные окружения http_proxy, ftp_proxy и https_proxy , определенные в ~/.profile

Я понимаю, что с помощью apt.conf вы можете установить chmod 600 (что не является по умолчанию на Ubuntu/Debian!), но в нашей системе есть люди, которым нужны корневые привилегии .

Я также понимаю, что технически невозможно защитить пароль от кого-то, кто имеет доступ root, однако мне было интересно, есть ли способ скрыть пароль, чтобы предотвратить случайное обнаружение. Windows работает с пользователями как администраторы, но каким-то образом хранит сетевые пароли (вероятно, хранящиеся глубоко в реестре, скрытом каким-то образом), так что при обычном использовании вы не наткнетесь на него в обычном тексте

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

@monjardin-аутентификация с открытым ключом, боюсь, не является альтернативой в этой сети. Кроме того, я сомневаюсь, что он поддерживается среди большинства инструментов командной строки.

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

linux   security   unix   proxy   apt    

553   9   06:27, 12th August, 2020


Как создать дамп ядра в Linux при ошибке сегментации?

У меня есть процесс в Linux, который получает ошибку сегментации. Как я могу сказать ему, чтобы он генерировал дамп ядра, когда он выходит из строя?

linux   bash   unix   coredump   tcsh    

483   12   16:53, 5th August, 2020


Получение трассировок стека в системах Unix, автоматически

Какие существуют методы автоматического получения стека trace в системах Unix? Я имею в виду не просто получение основного файла или Интерактивное подключение с помощью GDB, а наличие обработчика SIGSEGV, который сбрасывает обратную трассировку в текстовый файл.

Бонусные баллы за следующие дополнительные функции:

  • Сбор дополнительной информации во время аварии (например. конфигурационный файл).
  • Email информация о сбое bundle для разработчиков.
  • Возможность добавить это в общую библиотеку dlopen ed
  • Не требуется GUI

linux   unix   stack-trace   sigsegv    

420   4   08:11, 12th August, 2020


Существует ли утилита Unix для добавления временных меток к stdin?

В конце концов я написал небольшой быстрый скрипт для этого в Python, но мне было интересно, есть ли утилита, в которую вы можете ввести текст, который будет дополнять каждую строку некоторым текстом-в моем конкретном случае, timestamp. В идеале, использование было бы чем-то вроде:

cat somefile.txt | prepend-timestamp

(Прежде чем вы ответите sed, я попробовал это:

cat somefile.txt | sed "s/^/`date`/"

Но это только один раз вычисляет команду date при выполнении sed, поэтому тот же timestamp неправильно добавляется к каждой строке.)

unix   shell   awk    

518   17   01:53, 29th August, 2020


Можно ли скомпилировать сервер Apache HTTP и повторно развернуть его двоичные файлы в другое место?

В рамках выпуска нашего продукта мы отправляем двоичные файлы сервера Apache HTTP, которые мы скомпилировали на нашей машине разработки (UNIX).

Мы говорим нашим клиентам установить двоичные файлы (на их серверах UNIX) в той же структуре каталогов, в которой мы его скомпилировали. Для некоторых клиентов это не подходит, например, там, где есть ограничения на то, где они могут устанавливать программное обеспечение на своих серверах, и они не хотят компилировать Apache самостоятельно.

Есть ли способ компиляции сервера Apache HTTP, чтобы его местоположение установки можно было указать динамически с помощью переменных среды ?

Я потратил несколько дней, пытаясь разобраться в этом, и не мог найти способ сделать это. Это заставило меня поверить, что двоичные файлы Apache жестко кодировали некоторые пути к каталогам при компиляции, предотвращая требуемую переносимость.

Кому-нибудь удалось это сделать ?

apache   unix   httpserver    

569   4   23:05, 5th August, 2020


“rusage” статистика

Я пытаюсь использовать статистику “rusage” в своей программе, чтобы получить данные, аналогичные данным инструмента time . Однако я почти уверен, что делаю что-то не так. Значения кажутся правильными, но иногда могут быть немного странными. Я не нашел хороших ресурсов в интернете. Кто-нибудь знает, как сделать это лучше?

Извините за длинный код.

class StopWatch {
public:
    void start() {
        getrusage(RUSAGE_SELF, &m_begin);
        gettimeofday(&m_tmbegin, 0);
    }

    void stop() {
        getrusage(RUSAGE_SELF, &m_end);
        gettimeofday(&m_tmend, 0);
        timeval_sub(m_end.ru_utime, m_begin.ru_utime, m_diff.ru_utime);
        timeval_sub(m_end.ru_stime, m_begin.ru_stime, m_diff.ru_stime);
        timeval_sub(m_tmend, m_tmbegin, m_tmdiff);
    }

    void printf(std::ostream& out) const {
        using namespace std;

        timeval const& utime = m_diff.ru_utime;
        timeval const& stime = m_diff.ru_stime;

        format_time(out, utime);
        out << "u ";
        format_time(out, stime);
        out << "s ";
        format_time(out, m_tmdiff);
    }

private:
    rusage m_begin;
    rusage m_end;
    rusage m_diff;
    timeval m_tmbegin;
    timeval m_tmend;
    timeval m_tmdiff;

    static void timeval_add(timeval const& a, timeval const& b, timeval& ret) {
        ret.tv_usec = a.tv_usec + b.tv_usec;
        ret.tv_sec = a.tv_sec + b.tv_sec;
        if (ret.tv_usec > 999999) {
            ret.tv_usec -= 1000000;
            ++ret.tv_sec;
        }
    }

    static void timeval_sub(timeval const& a, timeval const& b, timeval& ret) {
        ret.tv_usec = a.tv_usec - b.tv_usec;
        ret.tv_sec = a.tv_sec - b.tv_sec;
        if (a.tv_usec < b.tv_usec) {
            ret.tv_usec += 1000000;
            --ret.tv_sec;
        }
    }

    static void format_time(std::ostream& out, timeval const& tv) {
        using namespace std;
        long usec = tv.tv_usec;
        while (usec >= 1000)
            usec /= 10;
        out << tv.tv_sec << '.' << setw(3) << setfill('0') << usec;
    }
}; // class StopWatch

c++   unix   time   profiling    

448   0   20:25, 28th August, 2020


Объединение значений из разных файлов в один файл CSV

У меня есть несколько файлов, содержащих значение в каждой строке.

EDIT :

Я понял ответ на этот вопрос, когда писал сообщение, и не понял, что я отправил его по ошибке в неполном состоянии.

Я пытался это сделать:

paste -d ',' file1 file2 file 3 file 4 > file5.csv

и получал странный выход. Позже я понял, что это происходит, потому что некоторые файлы имели как возврат каретки, так и символ новой строки в конце строки, в то время как другие имели только символ новой строки. Я всегда должен помнить, что нужно обращать внимание на такие вещи.

regex   linux   unix   shell    

534   5   18:55, 14th August, 2020


Лучший способ запустить приложение Java в качестве демона *nix или службы Windows?

Я ищу лучший метод для запуска приложения Java в качестве демона *NIX или службы Windows. Я заглянул в оболочку сервиса Java, проект Apache Commons 'jsvc' и проект Apache Commons 'procrun' . До сих пор оболочка службы Java выглядит так, как будто это лучший вариант... но мне интересно, есть ли какие-либо другие лицензионные продукты "Open Source friendly".

java   unix   windows-services   daemon    

539   3   20:16, 18th August, 2020


Удалите все файлы X в bash, кроме самых последних

Есть ли простой способ, в довольно стандартной среде UNIX с bash, запустить команду для удаления всех файлов X из каталога, кроме самых последних?

Чтобы привести более конкретный пример, представьте себе, что некое задание cron каждый час записывает файл (скажем, файл журнала или резервную копию tar-ed) в каталог. Мне бы хотелось, чтобы было запущено еще одно задание cron, которое удаляло бы самые старые файлы в этом каталоге, пока их не станет меньше, скажем, 5.

И просто для ясности, там есть только один файл, он никогда не должен быть удален.

bash   unix   scripting    

769   17   18:11, 2nd August, 2020


Максимальная длина буфера для sendto?

Как получить максимальное количество байт, которое может быть передано вызову sendto(..) для сокета, открытого как порт UDP?

unix   sockets   networking   udp   ioctl    

502   3   12:40, 6th August, 2020


Есть ли способ, чтобы предотвратить находку из раскопок рекурсивно в подкаталогах?

Когда я это сделаю:

$ find / 

Он обыскивает всю систему.
Как мне это предотвратить?

(Этот вопрос возникает из "ответа" на другой вопрос.)

bash   unix   shell   ksh    

353   5   09:58, 2nd August, 2020


Unix shell копирование файлов выравнивание структуры папок

На UNIX bash shell (в частности, Mac OS X Leopard) какой самый простой способ скопировать каждый файл, имеющий определенное расширение, из иерархии папок (включая подкаталоги) в одну и ту же папку назначения (без вложенных папок)?

Очевидно, что существует проблема наличия дубликатов в исходной иерархии. Я бы не возражал, если бы они были переписаны.

Пример: мне нужно скопировать каждый файл .txt в следующей иерархии

/foo/a.txt
/foo/x.jpg
/foo/bar/a.txt
/foo/bar/c.jpg
/foo/bar/b.txt

В папку с именем 'dest' и получить:

/dest/a.txt
/dest/b.txt

unix   shell    

390   5   21:07, 3rd August, 2020


Почему **sort** не сортирует то же самое на каждой машине?

Использование одной и той же команды сортировки с одинаковыми входными данными приводит к различным результатам на разных машинах. Как мне это исправить?

bash   unix   sorting   ksh    

431   4   08:45, 2nd August, 2020


Парсинг XML с использованием unix terminal

Иногда мне нужно быстро извлечь некоторые произвольные данные из файлов XML, чтобы поместить их в формат CSV. Каковы ваши лучшие практики для этого в Unix terminal? Я хотел бы получить некоторые примеры кода, так например, как я могу решить следующую проблему?

Пример ввода XML:

<root>
<myel name="Foo" />
<myel name="Bar" />
</root>

Мой желаемый результат CSV :

Foo,
Bar,

xml   unix   parsing   shell   csv    

429   7   03:58, 13th August, 2020


Графический инструментарий для быстрой разработки?

Я хочу написать интерфейс к приложению, написанному в C/C++.

Я использую Solaris 10 и планирую перенести приложение на некоторые другие архитектуры (сначала Windows).

user-interface   unix   solaris    

401   8   12:32, 17th August, 2020


Получить текущий процесс CPU использование в C

На Windows я могу сделать:

HANDLE hProcess = GetCurrentProcess();

FILETIME ftCreation, ftExit, ftKernel, ftUser;

GetProcessTimes(hProcess, &ftCreation, &ftExit, &ftKernel, &ftUser);

SYSTEMTIME stKernel;
FileTimeToSystemTime(&ftKernel, &stKernel);

SYSTEMTIME stUser;
FileTimeToSystemTime(&ftUser, &stUser);

printf("Time in kernel mode = %uh %um %us %ums", stKernel.wHour,
           stKernel.wMinute, stKernel.wSecond, stKernel.wMilliseconds));
printf("Time in user mode = %uh %um %us %ums", stUser.wHour,
           stUser.wMinute, stUser.wSecond, stUser.wMilliseconds));

Как я могу сделать то же самое на *nix?

c   unix   cross-platform   process-management    

475   1   09:32, 2nd August, 2020


Изменение приоритета текущего процесса в C

На Windows я могу это сделать:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

Как я могу сделать то же самое на *nix?

c   unix   cross-platform   process-management    

382   3   10:26, 8th August, 2020