Почти наверняка проблема не в использовании system (), а в выполняемой вами операции.Всегда проверяйте возвращаемое значение, но, тем более, вы захотите увидеть вывод команды, которую вы вызываете.Для неинтерактивного использования часто лучше написать stdout и stderr для файлов журнала.Один из способов сделать это - написать скрипт-обертку, который проверяет основную команду, регистрирует командную строку, перенаправляет stdout и stderr (и закрывает stdin, если вы хотите быть осторожным), а затем запускает командную строку.Запустите это через system (), а не через команду OS напрямую.
Могу поспорить, что на сбойных машинах ограничено дисковое пространство или отсутствуют целевой файл или команды gzip / gunzip.