Я использую unix system() вызовы для файлов gunzip и gzip. Иногда с очень большими файлами (то есть на узле вычисления кластера) они прерываются, а в других случаях (т. Е. В узлах входа) они проходят. Есть ли какой-то мягкий предел во время вызова системы? Что еще это может быть?Время вызова системы?
ответ
Вызывающий поток должен блокироваться бесконечно, пока задача, начатая с системой(), не завершится. Если вы наблюдаете, что вызов возвращается, а операция файла не завершена, это указывает на то, что вызванная операция по какой-то причине завершилась неудачей.
Что указывает возвращаемое значение?
ах, ну, это указывало на мою глупость Было ограничение на размер файлов, которые я мог бы создать с помощью пакетной системы кластера. Увеличение лимита с моего основного процесса не повлияло на предел новых процессов, порожденных им. – Arnold
Почти наверняка не проблема с использованием системы(), а с выполняемой вами операцией. Всегда проверяйте возвращаемое значение, но тем более вам нужно увидеть вывод команды, которую вы вызываете. Для неинтерактивного использования часто бывает лучше написать stdout и stderr для файлов журналов. Один из способов сделать это - написать сценарий оболочки, который проверяет базовую команду, регистрирует командную строку, перенаправляет stdout и stderr (и закрывает stdin, если вы хотите быть осторожным), а затем выполняет командную строку. Запустите это через system(), а не непосредственно с командой OS.
Мое мнение, что неисправные машины имеют ограниченное дисковое пространство или отсутствуют либо целевой файл, либо фактические команды gzip/gunzip.
Я использую unix system() для звонков файлов gunzip и gzip.
Возможно, глупый вопрос: почему бы не использовать zlib прямо из приложения?
И система() не является системным вызовом. Это оболочка fork()/exec()/wait(). Проверьте справочную страницу system(). Если он не разблокируется, возможно, ваше приложение каким-то образом вмешивается в wait() - например. у вас есть обработчик SIGCHLD?
Если это Linux-система, я бы порекомендовал использовать strace, чтобы узнать, что происходит и какие блоки сборов.
Вы даже можете прикрепить к Трассирование уже запущенных процессов: # strace -p $PID
Похоже, я бегу в то же прерывистый вопрос с указанием тайм-аут какой-то. Мой скрипт работает каждый день. Я начинаю верить, что GZIP имеет тайм-аут.
- GZIP -vd filename.txt.gz 2 >> TMP/errorcatch.txt 1 >> logfile.log
- Stderr: Ошибка для filename.txt.gz
- Переход к следующей команде «ф имя_файла * новый/каталог /», в результате чего в архивных версиях файла в новом каталоге
- стандартного вывод из ранее Gzip показывает успешные распакуйте ЖЕ файл: filename.txt.gz: 95,7% - заменяется filename.txt
- Преуспевающего out из gzip не существует в исходном или новом каталоге.
- Последующие предупреждения, ручной запуск «gzip -vd filename.txt.gz» никогда не прерывается.
Деталь:
- только один вызов в скрипте, чтобы распаковать то этот файл
- вызова для разархивируете внутри функции (для более лесозаготовок rebust и оповещения)
- Невозможно Трассирования в производстве
- Невозможно реплицироваться локально
- В течение последних месяцев не найдено согласованности между размером файла, только
Я просто буду работать над ним с помощью логики повторения и улучшения общих сценариев, но я хочу, чтобы следующий google-er знал, что они не сумасшедшие. Это происходит с другими людьми!
- 1. GCC скомпилировал сбой программы Win32 во время вызова DLL системы
- 2. Файл, читаемый после вызова системы()
- 3. хранить вывод вызова системы() переменной
- 4. вызова командной системы в MATLAB
- 5. Время файловой системы NTFS
- 6. Java время системы
- 7. Измерение времени выполнения вызова системы() в C++
- 8. Время системы, местное время, время файла и нормальное время
- 9. Создание системы обратного вызова с использованием замыканий
- 10. не мог понять поведение системы чтения вызова
- 11. Время загрузки иерархической системы Android
- 12. Время отклика поисковой системы Google
- 13. Время простоя системы - Служба Windows
- 14. Время ввода системы в java
- 15. уничтожить сеанс во время выхода из системы
- 16. Обновление Atom зависает во время вызова вызова Clojure
- 17. Точно время вызова функции
- 18. AngularJS: время ожидания вызова
- 19. Лямбда Время после вызова обратного вызова
- 20. О вилке вызова системы и глобальных переменных
- 21. просмотр вывода вызова системы() в C++
- 22. Как проверить успешное выполнение последнего вызова системы()
- 23. системы вилка вызова() и execv функции
- 24. Неправильное поведение вызова системы опроса в linux
- 25. Передача целочисленного значения в команду вызова системы
- 26. Перехват и изменение вызова файловой системы - Windows
- 27. возвращаемое значение в vfork системы() вызова
- 28. Сбой вызова системы() с ошибкой «unterminated string»
- 29. Ошибка вызова системы() внутри цикла C
- 30. Как измерить время работы системы/системы для части программы?
Это не системный вызов, это вызов функции system(). – 2010-06-07 20:08:28
Фактически, это вызовы системы unix(), т.е. вызовы в систему функций unix() (или были ли они изменены?) - иногда я не получаю комментарии, мои включены. – ShinTakezou
@shin system() не является системным вызовом - это функция в стандартных библиотеках C и C++. Системный вызов - это что-то вроде open() или read(). – 2010-06-08 07:41:27