Создание отдельных сценариев для запуска после отдельных перезагрузок

Я хочу запустить несколько сценариев после загрузки. Когда машина загружается, запускается один сценарий и принудительно перезагружается. Затем, после перезагрузки, запускался другой сценарий, а затем перезагружался. Нужно, чтобы это повторилось примерно четыре раза. Возможно ли это?

1
задан 10 August 2020 в 19:37

1 ответ

Да, это возможно. Вы можете сохранить текущий статус системы в файл журнала. Затем главный сценарий может прочитать последний записанный статус и условно запустить определенный сценарий или функцию. Вот пример такого сценария:

$ cat ~/status-reboot.sh
#!/bin/bash

STATUS_LOG="$HOME/our.status.log"

# Determinate whether the log file exists ? get the status : set status0
if [[ -f $STATUS_LOG ]]
then
        CURRENT_STATUS="$(cat "$STATUS_LOG")"
else
        CURRENT_STATUS="stage0"
        echo "$CURRENT_STATUS : $(date)"
        echo "$CURRENT_STATUS" > "$STATUS_LOG"
        # You could reboot at this point,
        # but probably you want to do action_1 first
fi

# Define your actions as functions
action_1()
{
        # do the 1st action

        CURRENT_STATUS="stage1"
        echo "$CURRENT_STATUS : $(date)"
        echo "$CURRENT_STATUS" > "$STATUS_LOG"
        exit # You could reboot at this point
}

action_2()
{
        # do the 2nd action

        CURRENT_STATUS="stage2"
        echo "$CURRENT_STATUS : $(date)"
        echo "$CURRENT_STATUS" > "$STATUS_LOG"
        exit # You could reboot at this point
}

case "$CURRENT_STATUS" in
stage0)
  action_1
  ;;
stage1)
  action_2
  ;;
stage2)
  echo "The script '$0' is finished."
  ;;
*)
  echo "Something went wrong!"
  ;;
esac

Вот как он работает в командной строке:

$ ./status-reboot.sh
stage0 : Thu Aug  6 22:45:29 EEST 2020
stage1 : Thu Aug  6 22:45:29 EEST 2020

$ ./status-reboot.sh
stage2 : Thu Aug  6 22:45:33 EEST 2020

$ ./status-reboot.sh
The script './status-reboot.sh' is finished.

$ ./status-reboot.sh
The script './status-reboot.sh' is finished.

Я думаю, он должен работать без проблем с записью crontab следующим образом:

@reboot sleep 15 && "$HOME/status-reboot.sh" >> "$HOME/our.progress.log"
  • Пожалуйста, используйте полные пути к командам в ваших сценариях используется с crontab.

Ссылка: tldp.org - Использование операторов case

0
ответ дан 11 August 2020 в 20:09

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

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