Хорошо, оказывается, что я пропускал реальное сообщение об ошибке, который dmesg, о котором сообщают как:
Ext2 fs: unsupported inode size
После того как я нашел, что, немного поиска с помощью Google показало мне, что только 128-разрядные inode размеры поддерживаются для ext2fs в OpenBSD 4.4. Я положил обратно флеш-накопитель к машине Linux, переформатированной с mke2fs -I 128
, и вуаля! Диск может теперь быть успешно смонтирован на машине BSD с командой монтирования, данной в вопросе.
Чтобы Ваша команда обнаружила eof
, это должно читать из stdin. Таким образом, по-видимому, это ожидает некоторый вход. Таким образом, это походит на то, в чем Вы нуждаетесь, не пустой вход (/dev/null
точно предназначен для того), но введите, это никогда не прибывает.
Это может быть моделировано с каналом, куда никто никогда не собирается записать на другом конце как:
sleep 999999999 | the-command
Или избегать необходимости выполнять это дополнительное sleep
команда, это могло быть сделано с именованным каналом:
fifo=$(mktemp -u) &&
mkfifo "$fifo" &&
(rm "$fifo" && the-command <&3 3<&- &) 3<> "$fifo"
Здесь с помощью посреднического дескриптора файла для работы вокруг того, что оболочка подключает stdin с /dev/null
implicitely, когда Вы запускаете команду с &
(если Вы не добавляете явное stdin перенаправление как наш <&3
здесь).
На Linux (и вероятно только на Linux), можно также сделать:
the-command < /dev/fd/1 3>&1 > /dev/null | :
/dev/fd/1
то, где fd 1 подключен к каналу на Linux, ведет себя как именованный канал. Таким образом, при открытии его в режиме чтения Вы получаете конец чтения канала.
Таким образом выше, fd 0 будет подключен к концу чтения канала, другой конец которого находится на fd 3 the-command
. Поскольку the-command
движение ничего не должно писать на своем fd 3, любом read
попытка на fd 0 заблокируется (или чтение неблокирования возвратится с нет ничего для чтения все же, или выбор/опрос не возвратит ничего для чтения любого как the-command
вероятно, делает, если это делает что-либо еще, чем ожидание входа, который никогда не прибывает).
Необходимо использовать команду disown
. Это выпустит STDIN/STDOUT от текущей оболочки, куда Вы выполняете эти команды.
% disown -a
- или -
% sleep 100 &
[1] 7987
% disown %1
См. страницу справочника удара для получения дальнейшей информации.
отрицайте [-площадь] [-h] [jobspec...] опции Without, каждый jobspec удален из таблицы активных заданий. Если-h опция дана, каждый jobspec не удален из таблицы, но отмечен так, чтобы SIGHUP не был отправлен в задание, если оболочка получает SIGHUP. Если никакой jobspec не присутствует, и ни-a, ни-r опция не предоставляются, текущее задание используется. Если никакой jobspec не предоставляется,-a опция означает удалять или отмечать все задания;-r опция без jobspec аргумента ограничивает операцию рабочими заданиями. Возвращаемое значение 0, если jobspec не указывает допустимое задание.
>
) не позволит файлу "расти", даже если Вы не сделаете disown
.
– depquid
17.03.2013, 22:24
double
и повторенияsleep
так же много раз по мере необходимости для достижения того числа. Таким образом, я могу сделатьsleep infinity
илиsleep 1e200
. Портативно я подозреваю лучшее, которое можно ожидать, 2^31-1: 2147483647. – Stéphane Chazelas 17.03.2013, 23:12