mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-09-08 13:46:33 +00:00
~修复 Docker 删除重建容器后丢失开机自启状态的问题:将 s6 自启标记持久化到 configs 卷,并在启动时通过 S6_STAGE2_HOOK 同步
This commit is contained in:
@@ -1,3 +1,22 @@
|
||||
# s6 / Docker:自启状态以 configs 卷内标记为准,并同步到 s6 contents.d
|
||||
|
||||
enable_s6_autostart_marks() {
|
||||
mkdir -p "$CRASHDIR/configs" /etc/s6-overlay/s6-rc.d/user/contents.d
|
||||
touch "$CRASHDIR/configs/.autostart" /etc/s6-overlay/s6-rc.d/user/contents.d/afstart
|
||||
}
|
||||
|
||||
disable_s6_autostart_marks() {
|
||||
rm -f "$CRASHDIR/configs/.autostart" /etc/s6-overlay/s6-rc.d/user/contents.d/afstart
|
||||
}
|
||||
|
||||
# 将旧版仅写在可写层的 s6 标记迁移到 configs
|
||||
migrate_s6_autostart_mark() {
|
||||
if [ -f /etc/s6-overlay/s6-rc.d/user/contents.d/afstart ] && [ ! -f "$CRASHDIR/configs/.autostart" ]; then
|
||||
mkdir -p "$CRASHDIR/configs"
|
||||
touch "$CRASHDIR/configs/.autostart"
|
||||
fi
|
||||
}
|
||||
|
||||
check_autostart(){
|
||||
if [ "$start_old" = ON ];then
|
||||
[ ! -f "$CRASHDIR"/.dis_startup ] && return 0
|
||||
@@ -7,7 +26,8 @@ check_autostart(){
|
||||
elif ckcmd systemctl; then
|
||||
[ "$(systemctl is-enabled shellcrash.service 2>&1)" = enabled ] && return 0
|
||||
elif grep -q 's6' /proc/1/comm; then
|
||||
[ -f /etc/s6-overlay/s6-rc.d/user/contents.d/afstart ] && return 0
|
||||
migrate_s6_autostart_mark
|
||||
[ -f "$CRASHDIR/configs/.autostart" ] && [ ! -f "$CRASHDIR"/.dis_startup ] && return 0
|
||||
elif rc-status -r >/dev/null 2>&1; then
|
||||
rc-update show default | grep -q "shellcrash" && return 0
|
||||
else
|
||||
|
||||
@@ -12,7 +12,7 @@ allow_autostart() {
|
||||
fi
|
||||
|
||||
ckcmd systemctl && systemctl enable shellcrash.service >/dev/null 2>&1
|
||||
grep -q 's6' /proc/1/comm && touch /etc/s6-overlay/s6-rc.d/user/contents.d/afstart
|
||||
grep -q 's6' /proc/1/comm && enable_s6_autostart_marks
|
||||
rc-status -r >/dev/null 2>&1 && rc-update add shellcrash default >/dev/null 2>&1
|
||||
rm -rf "$CRASHDIR"/.dis_startup
|
||||
}
|
||||
@@ -20,7 +20,7 @@ allow_autostart() {
|
||||
disable_autostart() {
|
||||
[ -d /etc/rc.d ] && cd /etc/rc.d && rm -rf *shellcrash >/dev/null 2>&1 && cd - >/dev/null
|
||||
ckcmd systemctl && systemctl disable shellcrash.service >/dev/null 2>&1
|
||||
grep -q 's6' /proc/1/comm && rm -rf /etc/s6-overlay/s6-rc.d/user/contents.d/afstart
|
||||
grep -q 's6' /proc/1/comm && disable_s6_autostart_marks
|
||||
rc-status -r >/dev/null 2>&1 && rc-update del shellcrash default >/dev/null 2>&1
|
||||
touch "$CRASHDIR"/.dis_startup
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ forwhat() {
|
||||
fi
|
||||
|
||||
ckcmd systemctl && [ "$(cat /proc/1/comm)" = "systemd" ] && systemctl enable shellcrash.service >/dev/null 2>&1
|
||||
grep -q 's6' /proc/1/comm && enable_s6_autostart_marks
|
||||
rm -rf "$CRASHDIR"/.dis_startup
|
||||
autostart=enable
|
||||
# 检测IP转发
|
||||
|
||||
+2
-1
@@ -11,6 +11,7 @@
|
||||
. "$CRASHDIR"/libs/set_config.sh
|
||||
. "$CRASHDIR"/libs/set_cron.sh
|
||||
. "$CRASHDIR"/libs/check_cmd.sh
|
||||
. "$CRASHDIR"/libs/check_autostart.sh
|
||||
. "$CRASHDIR"/libs/compare.sh
|
||||
. "$CRASHDIR"/libs/logger.sh
|
||||
. "$CRASHDIR"/libs/web_save.sh
|
||||
@@ -54,7 +55,7 @@ start)
|
||||
systemctl start shellcrash.service || . "$CRASHDIR"/starts/start_error.sh
|
||||
elif grep -q 's6' /proc/1/comm; then
|
||||
bfstart && /command/s6-svc -u /run/service/shellcrash && {
|
||||
[ ! -f "$CRASHDIR"/.dis_startup ] && touch /etc/s6-overlay/s6-rc.d/user/contents.d/afstart
|
||||
[ ! -f "$CRASHDIR"/.dis_startup ] && enable_s6_autostart_marks
|
||||
afstart &
|
||||
}
|
||||
elif rc-status -r >/dev/null 2>&1; then
|
||||
|
||||
Reference in New Issue
Block a user