Вы только что пострадали от разделение слова - Используйте больше Quotes™ и используете массивы, если Вы хотите отправить несколько параметров в команду:
LOG_PARAMS=("--color" "--pretty=format:$FORMAT" "--abbrev-commit" "--no-walk")
...
git log "${LOG_PARAMS[@]}" "$(commits)"
Это работает на меня без "$(commits)"
часть, которую я предполагаю, является другой функцией, которую Вы создали.
На ум приходят две вещи:
Восстановление после паники ядра
Паника ядра по определению не может быть устранена без перезапуска ядра.
Восстановление после зависаний, которые оставляют вас без доступа к терминалу
Если система не отвечает, и вы застряли без возможности выполнить команды для восстановления, единственное, что вы можете сделать, это перезагрузиться. Обычно лучше избегать включения и выключения питания вручную. Для таких ситуаций в ядре Linux есть поддержка Magic SysRq , которую можно использовать для перезагрузки машины в экстренных случаях.
Пока параметр CONFIG_MAGIC_SYSRQ
включен в конфигурации ядра и включен параметр kernel.sysrq
sysctl
, вы можете отправлять команды непосредственно ядру с помощью волшебные комбинации клавиш SysRq:
Обратите внимание, что Alt + SysRq ниже означает , нажмите и удерживайте Alt , затем нажмите и удерживайте SysRq (обычно клавиша PrintScrn ).
SIGTERM
всем процессам, кроме init
, давая им возможность корректно завершить работу SIGKILL
всем процессам, кроме init
, заставив их завершить работу Alt + SysRq + b : перезагрузка или
Alt + SysRq + o : выключение
Мнемоника для волшебного SysRq комбинации клавиш для попытки плавной перезагрузки:
" R eboot E ven I f S ystem U окончательно B ход "
Для безголовых серверов есть даже iptables target , позволяющий удаленные последовательности SysRq по сети.
Восстановление из не загружаемого состояния
Если система уже была переведена в состояние, в котором обычная загрузка невозможна (например, в результате неудачного обновления системы, поврежденной файловой системы и т. Д.), То единственный способ получить доступ консоль восстановления в системе может перезагружаться с использованием соответствующих параметров времени загрузки.
Изменить параметры ядра при загрузке
Некоторые параметры ядра (например, audit
для включения / отключения аудита ядра) может быть установлен только тогда, когда ядро загружается во время загрузки.
Когда мне нужно убедиться, что система может загрузиться в нужном состоянии.
Однажды я работал с системой, в которой был настроен какой-то демон во время ее работы. После того, как она проработала несколько лет, перебой питания заставил ее перезагрузиться, но демон не участвовал в процессе запуска и никто не знал, как она была настроена несколькими годами ранее. Система не работала несколько дней, пока мы выясняли, как ее переконфигурировать.
Если вы имеете в виду запланированные изменения в конфигурации программного обеспечения и предполагаете, что оборудование идеально работает (я такого еще не видел) и программное обеспечение без ошибок ( вы знаете ...), то только ошибка в ядре или драйвере заставит вас перезагрузиться. :)
Кроме этого ... Я не уверен, можно ли заменить init
без переключения в однопользовательский режим и без каких-либо магических действий, которые по сути мало чем отличаются от перезагрузки.