Является ли sigspec для 0 EXIT или SIGEXIT или выхода?

У вас уже есть один поврежденный файл, и существует известная проблема с диском. Проблема может либо остаться прежней, либо усугубиться :, «излечить» ее крайне маловероятно. Итак, нет, это небезопасно.

Тем не менее, известная -ненадежная резервная копия по-прежнему (незначительно )лучше, чем отсутствие резервной копии вообще :она может позволить вам восстановить хотя бы часть ваших данных, если вы потеряете ноутбук.

Если вы продолжаете использовать этот диск, вам следует попытаться считывать все файлы, для которых вы сделали резервную копию :, возможно, не ежедневно, но обязательно еженедельно.

И вы должны в любом случае спросить себя:

  • Насколько важны для вас данные? Больше, чем стоимость нового диска? Во сколько раз больше?
  • Сколько времени необходимо для восстановления данных из неудачной резервной копии, сколько для вас стоит? В ситуации, когда ваш ноутбук уже потерян или уничтожен? Не приведет ли это к тому, что вы пропустите важное дело? Сколько стресса и беспокойства это вызовет? Стоит ли рисковать?

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

Обновление:

Каждое сообщение logical block NNNNN, lost async page writeозначает, что операционная система приказала диску записать блок данных на диск и получила от диска сообщение I failed to do it properly.

Теоретически это может означать, что в записанном выводе был перевернут только один бит, или что весь блок теперь представляет собой случайную тарабарщину. Реальность, вероятно, находится где-то посередине между этими двумя крайностями.

Современные диски обычно прозрачно обрабатывают сбои записи, помечая блок как сбой и вместо него используя резервный блок. Тот факт, что диск фактически сообщает о сбое, означает, что эта резервная емкость уже исчерпана :, что означает, что на диске уже имеется довольно большое количество сбойных блоков.

Поскольку ваша команда smartctlсообщает:

SMART support is:     Unavailable - device lacks SMART capability.

Нет другого способа узнать подробности, кроме как попытаться прочитать все данные, сравнить их с оригиналом и подсчитать ошибки.

NTFS и ext4 являются довольно устойчивыми типами файловых систем, но ни одна из них не может существовать бесконечно долго, если физический носитель ненадежен. :Если происходит сбой в расположении некоторых важных метаданных файловой системы, целые файлы или каталоги могут стать недоступными.

Данные этих потерянных файлов могут все еще физически присутствовать на диске, если они расположены в блоках, которые еще не вышли из строя, но без метаданных файловой системы вам потребуется программное обеспечение для восстановления данных, чтобы найти правильные блоки, соответствующие к каждому отсутствующему файлу. Даже в этом случае, если файлы фрагментированы или используются в формате, который неизвестен программе восстановления, нет 100% гарантии, что программа восстановления сможет найти в точности нужные блоки и -собрать их в неповрежденные файлы.

Кто-то сказал, :«Диски по своей сути являются неисправными машинами, -хранение данных — это просто побочный эффект». В конце концов любой вращающийся диск выйдет из строя из-за механического износа. Портативные жесткие диски также подвергаются большему количеству ударов и толчков, чем установленные в настольные или серверные системы.

0
11.09.2020, 14:33
2 ответа

Язык команд оболочки, ловушка в спецификации POSIX читается как

The condition can be EXIT, 0 (equivalent to EXIT), or a signal specified using a symbolic name, without the SIG prefix, as listed in the tables of signal names in the <signal.h> header defined in XBD Headers; for example, HUP, INT, QUIT, TERM. Implementations may permit names with the SIG prefix or ignore case in signal names as an extension. Setting a trap for SIGKILL or SIGSTOP produces undefined results.

Bash разрешает singals иметь префикс SIG,

Signal names are case insensitive and the SIG prefix is optional. If a sigspec is EXIT (0) the command arg is executed on exit from the shell.

, но поскольку EXIT не является сигналом (, см. man 7 signalили ), вы не можете использовать SIGEXIT даже с Bash.

2
18.03.2021, 23:05

Просто попробуй. Баш скажет вам:

paul $ trap 'echo Foop' EXIT
paul $ trap 'echo Foop' SIGEXIT
bash: trap: SIGEXIT: invalid signal specification
paul $ 

«Настоящие» имена сигналов могут быть как с частью SIG..., так и без нее. Но нулевой сигнал на самом деле не существует (и не имеет имени):kill -0проверяет наличие PID, но не отправляет никакого сигнала. Bash выполняет действие ловушки, но фактического сигнала --нет, он просто знает, что прекратил обработку сценария.

2
18.03.2021, 23:05

Теги

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