Попробуйте создать относительно небольшой раздел журнала и добавить его в / etc / fstab
с опцией sync
и / var / log
путь монтирования:
...<previos fstab lines>...
UUID=<UUID of created partition> /var/log ext4 rw,sync 0 0
Это заставит вашу систему записывать журнал непосредственно на блочное устройство без кэширования записей, поэтому сообщения журнала записываются в момент их появления и не сбрасываются при перезагрузке. {{ 1}} Но помните, что синхронная запись в журнал может потребовать большого количества операций ввода-вывода и не подходит для длительного использования на производственных серверах.
Это неприятный хак, но, по крайней мере, он позволяет вам поместить export
команду над определением функции, где ее легче увидеть.
# a function to create a dummy function and export it
export_function() { eval "function $1 { :; }; export -f $1"; }
# then
export_function foo
foo() { echo "here is the *real* function"; }
Хорошо, я думаю, что это разумный и надежный способ сделать это:
#!/usr/bin/env bash
if [[ ! "$SHELLOPTS" =~ "allexport" ]]; then
set -a;
all_export=nope;
fi
ores_git_merge_with_integration(){
install_ores_gitflow;
command "$FUNCNAME" "$@"
}
ores_git_tools(){
install_ores_gitflow;
command "$FUNCNAME" "$@"
}
if [ "$all_export" == "nope" ]; then
set +a;
fi
в вашем скрипте bash потенциально может сгруппировать все ваши экспортируемые функции и окружить их командами set -a / set +.
Цель проверки $SHELLOPTS
env var состоит в том, чтобы увидеть, не был ли включен набор -a, и если это не так, нам нужно отключить его, когда мы закончим.