2010-06-13 4 views
0

У меня есть команда, например. ls-l> file.txt Когда на моем диске недостаточно места, приведенная выше команда просто останавливается, ожидая чего-то. Кто-нибудь знает о коде, который я мог бы написать, позволяя мне отображать сообщение о нехватке места на моем диске? Например. могу ли я использовать IPC или у вас есть другие идеи? Заранее спасибо.Bash: Перенаправления перенаправления

ответ

0

Вы можете использовать команду df, чтобы определить количество свободного места на диске и не начинать обработку, если есть, например, менее 5 М свободного пространства.

Или вы можете проверить количество свободного места из своей внутренней программы и написать предупреждающее сообщение в STDERR.

+0

К сожалению, команда всегда будет работать. Мне просто нужно будет решить проблему блокировки. Вы имеете в виду, что мне придется написать какой-то цикл, который всегда будет вычислять свободное пространство с помощью df, и когда он выходит за рамки некоторого предела, я показываю сообщение? Но нет ли более эффективного способа проверки того, остановился ли процесс, а не петля. – user365828

0

Команда вывода команды через другую программу, которая будет перехватывать ошибки записи (например, ENOSPC), диагностировать печать и сбой, если ничего не поделаешь.

Эта программа может быть столь же просто, как cat:

foobar | cat > file.txt 

cat сообщит об ошибке и умереть, и foobar получит SIGPIPE с действием по умолчанию, чтобы умереть, а также.

+0

Не могли бы вы предоставить дополнительную информацию? – user365828

+0

Каково желаемое поведение, когда приложение заканчивается на диске? Сбой с некоторой диагностикой вместо ожидания на неопределенное время, продолжайте писать, как в круговом буфере, что-то еще? – rkhayrov

+0

Когда приложение заполнило диск, нет необходимости ждать неограниченное количество свободного места, просто предупредите, показывая «вне дискового пространства» и остановитесь оттуда или выйдите из кода. – user365828

Смежные вопросы