Установить скрипт с перезагрузкой и продолжить

Я хочу создать скрипт:

command_1
command_2
...
command_n

restart

command_n+1
command_n+2
...
command_m

Это возможно в bash?

3
задан 31 January 2013 в 23:05

2 ответа

В этом случае вы создаете файл, в котором храните свою последнюю команду. И создайте скрипт, который проверяет, существует ли файл и содержит ли он строку. Если это так, последний раз ваш скрипт запускался и он должен завершиться.

Если файл не существует или пуст, не делайте ничего. Когда файл содержит команду, запустите следующую команду.

# 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
0
ответ дан 31 January 2013 в 23:05

Я создаю два файла: 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 выполнения с корневыми полномочиями (sudo /path/script_before_reboot). После перезагружают сценарий script_after_reboot выполнения от его символьной ссылки /etc/rc2.d/script_after_reboot. После выполнения этот сценарий автоматически удален, вместе с его собственной символьной ссылкой, найденной в /etc/rc2.d.Это все.

1
ответ дан 31 January 2013 в 23:05

Другие вопросы по тегам:

Похожие вопросы: