Теперь, когда запущена длинная команда dd
, уже слишком поздно перенаправлять вывод. Может быть, вы далеко от консоли и не можете использовать screen
или создать FIFO для его stderr...
... но вы все равно можете использовать две сессии ssh и strace
!
На первой сессии SSH вы можете написать
sudo strace -ewrite -p `pgrep ^dd` 2>&1 | grep -v "write(1,"
На втором вместо (прочитать предупреждение ниже примечание для сигнала использовать -SIGUSR1
или SIGINFO
kill -USR1 $(pgrep ^dd)
И прочитайте не очень хороший вывод с первого, подобного приведенному ниже
Process 26176 attached
--- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_USER, si_pid=29517, si_uid=0} ---
write(2, "329094980+0 records in\n329094979"..., 47) = 47
write(2, "168496629248 bytes (168 GB) copi"..., 34) = 34
write(2, ", 109.221 s, 1.5 GB/s\n", 22) = 22
Примечание. К сожалению (даже если сообщается по-другому), команда kill -USR1 $(pgrep ^dd)
заставит запущенные процессы dd
записывать данные в их исходный stderr. Для этого нужно было изменить исходный ответ (это можно увидеть в истории версий).
Предупреждение: Как сообщается в этом другом ответе, сигнал для отправки с kill вместо -USR1
может зависеть от дистрибутива Linux. Под OpenBSD -SIGINFO
под Ubuntu SIGUSR1
. Внимательно проверьте это заранее, если не тот может прервать процесс!