在 Bash 脚本中途重新启动

在 Bash 脚本中途重新启动

我正在编写一个 bash 脚本来在 Ubuntu 中设置一些服务。我需要reboot在某些步骤之间使用一些系统。问题是运行reboot脚本也会中断。有没有办法让脚本保留下来并继续设置?

答案1

这取决于你的系统。我可以举一个 Ubuntu 的例子来说明你可以做什么。

这样的脚本看起来应该是这样的/usr/local/bin/this_script

#!/bin/bash
if [ ! -f  /usr/share/this_script.progress ] ; then
    echo 1 >  /usr/share/this_script.progress
    cat > /etc/systemd/system/this_script.service <<EOF
[Unit]
Description=this script service

[Service]
ExecStart=/usr/local/bin/this_script

[Install]
WantedBy=multi-user.target
EOF
    systemctl enable this_script
    echo 2 >  /usr/share/this_script.progress
fi
progress=$(</usr/share/this_script.progress)

case $progress is
(1) echo "This should not happen!"
    ;;
(2) echo 3 >  /usr/share/this_script.progres
    action_for first stage
    reboot
    ;;
(3) echo 4 >  /usr/share/this_script.progres
    action_for second stage
    reboot
    ;;
(4) closing_actions
    systemctl disable this_script
    rm -f /usr/share/this_script.progres /etc/systemd/system/this_script.service
    ;;
esac

注意:未经测试;可能存在一些我没有想到的问题。

相关内容