Перезагрузка -FA Безопасный способ холодной перезагрузки?

Сначала cd в желаемый родительский каталог.

Затем воспользуйтесь командой find , чтобы запустить вашу команду awk :

find -type f -exec awk '{if (NF>4){print $1, $2, $3 , "0" } else {print $0}}' {} +

Explanation

  • по умолчанию уже рекурсивно, поэтому она будет выполняться для всех подзаголовков. -directories
  • -type f ограничит поиск файлов f вместо файлов и каталогов
  • , синтаксис -exec somecommand {} + запускает команду , и помещает пути к файлам, найденным там, где вы пишете {}
  • , параметр + считается более эффективным, поскольку он запускает только один экземпляр awk при установке результаты поиска в качестве аргументов в {} , тогда как другой способ его запуска (здесь не показан) будет запускать awk один раз для каждого имени файла и считается менее эффективным
1
27.07.2018, 22:02
2 ответа

AFAIK reboot -f— это команда, которая использовалась в старых системах. Я бы не стал его использовать.
Более безопасным методом будет sudo shutdown -r now. Альтернативой выключению машины является sudo shutdown -P now. В обоих случаях nowможно заменить числовым значением, чтобы определить время начала отключения.

См. выключение (8)полную документацию.

0
27.01.2020, 23:43

Суть reboot -fзаключается в том, чтобы обойти все шаги завершения работы, выполняемые вашей системой инициализации в ситуациях, когда эти шаги завершаются сбоем или ожидаются сбоя :-). Я настоятельно рекомендую не использовать его вне этого случая.

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

(systemdбудет совершенно другим шариком воска, и эффекты могут различаться... Это еще одна причина, по которой вам следует опасаться тыкать reboot -f. Это довольно неясная деталь, и очевидно, что вы не нашли никакой задокументированной связи между ней и эффектом, который вы наблюдали ).


АФАЙКТ,комментарий в man 2 reboot, относящийся к ядру 2.1.122 и старой архитектуре i386, остается верным. По крайней мере, начиная с ядра v4.17 и новой унифицированной архитектуры x86 как для 32 -, так и для 64 -бит.

Нацелено ли ядро ​​на «теплую» или «холодную» перезагрузку, определяется reboot_mode. И единственное место, где это установлено, определяется опцией ядра reboot=, например. reboot=cold.

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

https://elixir.bootlin.com/linux/v4.17/source/Documentation/admin-guide/kernel-parameters.txt#L3732

https://elixir.bootlin.com/linux/v4.17/source/kernel/reboot.c#L518

https://elixir.bootlin.com/linux/v4.17/source/arch/x86/kernel/reboot.c#L545


Если вы посмотрите на последнюю ссылку, теоретически возможно, что один из типов перезагрузки в резервной цепочке не сработал после того, как все остальные upstartсценарии инициализации были остановлены (или наоборот?? ). Таким образом, вызов reboot -fвручную использует другой тип перезагрузки, и он различается в зависимости от того, как он соблюдает reboot_mode. (В вашей конкретной системе? ).

Если вы можете сообщить о разнице между поведением при перезагрузке Linux и Windows, это может заинтересовать разработчиков ядра. Хотя их больше всего заинтересовало бы, если бы Linux полностью не перезагружался :). Я хотел бы подтвердить приведенное выше дикое предположение, перекомпилировав несколько вызовов printk ()и sleep и выяснив, какие фактические типы перезагрузки используются...

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

1
27.01.2020, 23:43

Теги

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