Сначала cd
в желаемый родительский каталог.
Затем воспользуйтесь командой find
, чтобы запустить вашу команду awk
:
find -type f -exec awk '{if (NF>4){print $1, $2, $3 , "0" } else {print $0}}' {} +
-type f
ограничит поиск файлов f
вместо файлов и каталогов -exec somecommand {} +
запускает команду , и помещает пути к файлам, найденным там, где вы пишете {}
+
считается более эффективным, поскольку он запускает только один экземпляр awk
при установке результаты поиска в качестве аргументов в {}
, тогда как другой способ его запуска (здесь не показан) будет запускать awk один раз для каждого имени файла и считается менее эффективным AFAIK reboot -f
— это команда, которая использовалась в старых системах. Я бы не стал его использовать.
Более безопасным методом будет sudo shutdown -r now
. Альтернативой выключению машины является sudo shutdown -P now
. В обоих случаях now
можно заменить числовым значением, чтобы определить время начала отключения.
См. выключение (8)полную документацию.
Суть 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 и выяснив, какие фактические типы перезагрузки используются...
Существует также возможность переключаться между различными типами перезагрузки в параметрах загрузки. Такое ощущение, что вы делаете довольно косвенное предположение... но кажется, что передача конкретной опции перезагрузки - лучшая надежда, если только этот волосатый кусок кода ядра не сможет найти какое-то хитрое решение для вашей системы.