我想创建一个如下脚本:
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_reboot
:script_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
。就是这样。