Я подозреваю, что grub2 -mkconfig
сортирует ядра в обратном порядке, предполагая, что они в основном содержат монотонно увеличивающиеся номера версий. Итак, начните подбирать теги в соответствии с этим соглашением.
В Борне -как снаряды,
exec 3< "$device"
Открывает устройство на файловом дескрипторе 3 оболочки.
Это было бы более или менее эквивалентно C:
fd = open(device, O_RDONLY);
if (fd < 0) handler_error(...);
if (fd != 3) { dup2(fd, 3); close(fd); }
(ksh93
также делает fcntl(3, F_SETFD, FD_CLOEXEC)
на этом fd ).
Чтобы закрыть:exec 3<&-
В zsh
, ksh93
и bash
эквивалент fd = open(device, O_RDONLY)
можно также записать как:
exec {fd}< "$device"
Где дескриптор файла будет первым свободным выше 9 и сохранен в $fd
.
Чтобы закрыть:exec {fd}<&-
Замените <
на >
вместо O_WRONLY|O_CREAT|O_TRUNC
и <>
вместо O_RDWR|O_CREAT
и >>
вместо O_WRONLY|O_CREAT|O_APPEND
.
zsh
также имеетsysopen
встроенную функцию (в модуле zsh/system
), где вы можете точно указать флаги.
Обратите внимание, что в оболочках, совместимых с POSIX, exec
является специальной встроенной командой , если файл не может быть открыт, это фатальная ошибка, когда он не -интерактивный (завершает сценарий. ). Вы можете отключить это с помощью команды command
.
if command exec 3< "$device"; then
do-what-you-need-to-do
else
handle-the-error-yourself
fi
while sleep 3600; do :; done >/dev/your_watchdog
Я понял (из echo
и touch
рабочих и cat
сбоев ), что устройство должно быть открыто в режиме только для записи.