Поиск ошибок ввода-вывода на жестком диске

Ваш конвейер

ps -aux | grep sox | kill 0

не будет делать то, что вы хотите. Это связано с тем, что killникогда не будет считывать ввод из grep(, результат из grepтакже будет содержать много других вещей, кроме PID процесса sox).

Если у вас есть pkill, просто выполните

pkill sox

вместо (используйте pkill -INT soxдля отправки того же сигнала, что и Ctrl+C ).

Если вы измените сценарий запуска на

#!/bin/bash

NOW=$( date '+%F_%H:%M:%S' )

filename="/home/pi/gets/$NOW.wav"
sox -t alsa plughw:1  "$NOW.wav" & sox_pid="$!"

printf 'sox pid is %d\n' "$sox_pid"

wait

# Alternatively (instead of "wait", if you want to kill sox after six seconds):
# sleep 6 && kill "$sox_pid" 

echo "$filename"

Вы получите PID процесса sox, напечатанный на терминале, и вы можете использовать его для выполненияkill pid(с заменой pidэтим числом ).

Частое использование &вызова soxпереводит его в фоновый режим. PID этой фоновой задачи автоматически сохраняется в $!, а приведенный выше код назначает его sox_pid, который позже распечатывается.

Команда waitожидает завершения команды sox(, выполняемой в фоновом режиме ).


Как мы обсуждали в предыдущем сеансе:Двойные -кавычки всех расширений переменных.

0
05.11.2019, 23:45
1 ответ

Это зависит от того, какая файловая система установлена ​​на вашем разделе. Для ext2/ext3 и ReiserFS вы можете найти помощь в Bad block HOWTO для smartmontools .

По сути, вы делаете вот что:

  1. Запустите самопроверку жесткого диска с помощью smartctl, она сообщит вам, сколько времени это займет.
  2. После завершения самопроверки просмотрите результат самопроверки и распознайте первый поврежденный блок. Если плохого блока нет, все готово.
  3. Определите раздел и смещение внутри раздела для плохого блока.
  4. С помощью debugfsопределить, находится ли это смещение внутри файла, и если да, то в каком файле.
  5. Запишите что-нибудь поверх плохого блока, используя dd. Жесткий диск заменит плохой блок запасным блоком.
  6. Перезапустите с 1., чтобы получить следующий поврежденный блок.

Вы можете найти подробности в вышеупомянутом HOWTO.

1
28.01.2020, 02:39

Теги

Похожие вопросы