安装脚本并重新启动并继续

安装脚本并重新启动并继续

我想创建一个如下脚本:

command_1
command_2
...
command_n

restart

command_n+1
command_n+2
...
command_m

在 bash 中可能吗?

答案1

在这种情况下,您将创建一个文件来存储您的最后一个命令。并创建一个脚本来检查该文件是否存在且包含一行。如果是,则上次运行脚本时它必须完成。

当文件不存在或者为空时,不执行任何操作。当文件包含命令时,运行后续命令。

# Determine if last_command.txt exists
if [ -f last_command.txt ]; then
    # Extract the last line out of the file
    last_command=$(head -n 1 last_command.txt)

    # Check if last_command is set, that is the next command has to be executed.
    if [ ! -z $last_command ]; then 
        # Excecute the next command. 
    fi
else
   # Do nothing.
fi

将下一行放在重启命令之前。

# Writes <Last command> to last_command.txt. Care for proper permissions!
echo "<Last command>" > last_command.txt

reboot

答案2

我创建了两个文件 script_before_rebootscript_after_reboot

script_before_reboot

#!/bin/bash
cale=`dirname $0`
sudo update-rc.d -f script_after_reboot remove
cp $cale"/script_after_reboot" /etc/init.d/
sudo chmod +x /etc/init.d/script_after_reboot
sudo update-rc.d script_after_reboot defaults 90

sudo rm /etc/rc0.d/K90script_after_reboot
sudo rm /etc/rc1.d/K90script_after_reboot
sudo rm /etc/rc3.d/S90script_after_reboot
sudo rm /etc/rc4.d/S90script_after_reboot
sudo rm /etc/rc5.d/S90script_after_reboot
sudo rm /etc/rc6.d/K90script_after_reboot

command_1
command_2
...
command_n
sudo reboot

script_after_reboot

#!/bin/bash
command_1
command_2
...
command_n
sudo update-rc.d -f script_after_reboot remove
# or, if you need another reboot :
# sudo update-rc.d -f script_after_reboot remove && sudo reboot
exit 0

这样就可以script_before_reboot以 root 权限运行 ( sudo /path/script_before_reboot)。重启后,脚本script_after_reboot将从其符号链接 运行/etc/rc2.d/script_after_reboot。执行后,此脚本将自动删除,同时删除位于 中的其自身符号链接/etc/rc2.d。就是这样。

相关内容