2012-01-16 3 views
1

Я копирование файла с помощью dd команды:петля перерыв после минут «N»

dd if=in.dat of=out.dat bs=1kb 

Предположим, что входной файл очень большой и полная копия займет сказать 5 минут, чтобы закончить. Я хочу сломать dd команда после 1 мин.

Как достичь этого в сценарии оболочки?

+0

Вы вполне довольны просто скопировать 20% данных, и останавливаться на достигнутом? – sarnold

+0

Хотя я был удивлен количеством вещей 'bash (1)' can can, я не вижу «простого» способа сделать это желание 'bash (1)'. Другим инструментом, таким как Ruby, Python, Perl, C, было бы легче. – sarnold

+0

BTW, я думаю, 'op =' - опечатка. Это должно быть 'of ='. – jman

ответ

3

Попробуйте это:

dd if=a.dat of=b.dat bs=1kb & 
p=$! 
sleep 60 
kill -9 $p 
+0

Любые идеи о том, как работать быстрее, если 'dd' заканчивается через десять секунд? – sarnold

+0

О, вы можете спать меньше секунд (в цикле, который добавляет до 60 секунд) и проверить, работает ли процесс с PID '$ p'. – jman

+0

Спасибо. Итак, «&» в конце делает dd исполняться, как если бы это был другой фоновый процесс? поэтому наш скрипт будет спать 60 секунд, но dd будет выполняться в фоновом режиме. Спасибо, что именно то, что я ищу. – Naveen

2

убить совсем недавно процесс через фоновый $! после 60 секунд

dd if=a.dat of=b.dat bs=1kb & 
sleep 60 && kill $! 
+0

Любые идеи о том, как работать быстрее, если' dd' заканчивается через десять секунд? – sarnold

+0

Nitpik: OP хочет убить через 1 минуту ;-) – jman

+0

@skjaidev oops, thanks! – SiegeX

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