Я решил (или, скорее, обошел) это, не используя unionfs и вместо этого используя aufs - другую файловую систему union.
Установите пакет AUFS и его модуль ядра из linux -image-extra-virtual:
sudo apt-get install aufs-tools linux-image-extra-virtual
Соответствующая строка в моем fstab теперь выглядит так:
usr /usr aufs udba=reval,br:/.filesystems/usr/rw:/.filesystems/usr/ro 0 0
squashfs установлен на /.filesystems/usr/ro в предыдущей строке, что сделало эту работу заменой тревожных шагов в другой файловой системе union .
Вы можете создать скрипт, который вызывает другие скрипты организованно, как показано ниже. Это ваш cron файл,
30 6,14 * * 1-5 / home / user / scripts /ABC.sh
Тогда скрипт A-B-C.sh определяется как
#!/bin/bash
# Run script A,B,C
# execute script A
./home/user/scripts/A.sh
#execute script B
./home/user/scripts/B.sh
enter code here
#execute script C
./home/user/scripts/C.sh
Если вы хотите \ не хотите запускать скрипт B.sh и C.sh в случаях, когда сценарий A.sh имеет некоторую ошибку, тогда вы можете включить отслеживание ошибок с использованием переменных, значение которых вы можете сохранить как 0 или 1. Затем, если предыдущий скрипт не завершится так, как ожидается, вы можете принять необходимое решение о том, что делать со следующим скриптом. Пример следующий:
#!/bin/bash
# Run script A,B,C
# Exit code and default run code initialization
exit_A=0
exit_B=0
def_B=1
def_C=1
#----------------------------------------------
# execute script A
. ./home/user/scripts/A.sh $exit_A #make sure to change the value of exit_A to 1 if A finishes as expected.
if [$exit_A==1] && [def_B==1] #only if A finishes without error and B is ok
then
#execute script B
. ./home/user/scripts/B.sh $exit_B
else
<do something like log>
fi
if [$exit_B==1] && [def_C==1] #only if B finishes without error and C is ok
then
#execute script C
. ./home/user/scripts/C.sh $exit_C
else
<do something like log>
fi
now="$(date +'%d/%m/%Y-%T')"
#make a log in a file (print can be used for better formatting)
echo -e $now,$exit_A,$exit_B,$exit_C >> /home/user/log/script_log.txt
В приведенном выше сценарии переменные передаются через скрипты. Используйте с осторожностью и испытанием перед использованием кода.
Более элегантный способ создания этого задания cron будет:
30 6,14 * * 1-5 /home/user/scripts/A.sh && /home/user/scripts/B.sh && /home/user/scripts/C.sh
Это приведет к тому, что три задания будут выполняться последовательно. Вы можете сделать $HOME/scripts/A.sh, если у вас есть соответствующие переменные.
Для базового управления заданиями, например. что скрипт-2 работает только в том случае, если сценарий 1 успешно, вы можете добавить строку для exit = 0 для записи временного файла, такого как /tmp/script-1_success.
Затем в начале скрипта -2, попросите его проверить, существует ли / tmp / script-1_success. Если нет, уходите.
Вы можете создать скрипт, который вызывает другие скрипты организованно, как показано ниже. Это ваш cron файл,
30 6,14 * * 1-5 / home / user / scripts /ABC.sh
Тогда скрипт A-B-C.sh определяется как
#!/bin/bash
# Run script A,B,C
# execute script A
./home/user/scripts/A.sh
#execute script B
./home/user/scripts/B.sh
enter code here
#execute script C
./home/user/scripts/C.sh
Если вы хотите \ не хотите запускать скрипт B.sh и C.sh в случаях, когда сценарий A.sh имеет некоторую ошибку, тогда вы можете включить отслеживание ошибок с использованием переменных, значение которых вы можете сохранить как 0 или 1. Затем, если предыдущий скрипт не завершится так, как ожидается, вы можете принять необходимое решение о том, что делать со следующим скриптом. Пример следующий:
#!/bin/bash
# Run script A,B,C
# Exit code and default run code initialization
exit_A=0
exit_B=0
def_B=1
def_C=1
#----------------------------------------------
# execute script A
. ./home/user/scripts/A.sh $exit_A #make sure to change the value of exit_A to 1 if A finishes as expected.
if [$exit_A==1] && [def_B==1] #only if A finishes without error and B is ok
then
#execute script B
. ./home/user/scripts/B.sh $exit_B
else
<do something like log>
fi
if [$exit_B==1] && [def_C==1] #only if B finishes without error and C is ok
then
#execute script C
. ./home/user/scripts/C.sh $exit_C
else
<do something like log>
fi
now="$(date +'%d/%m/%Y-%T')"
#make a log in a file (print can be used for better formatting)
echo -e $now,$exit_A,$exit_B,$exit_C >> /home/user/log/script_log.txt
В приведенном выше сценарии переменные передаются через скрипты. Используйте с осторожностью и испытанием перед использованием кода.
Более элегантный способ создания этого задания cron будет:
30 6,14 * * 1-5 /home/user/scripts/A.sh && /home/user/scripts/B.sh && /home/user/scripts/C.sh
Это приведет к тому, что три задания будут выполняться последовательно. Вы можете сделать $HOME/scripts/A.sh, если у вас есть соответствующие переменные.
Для базового управления заданиями, например. что скрипт-2 работает только в том случае, если сценарий 1 успешно, вы можете добавить строку для exit = 0 для записи временного файла, такого как /tmp/script-1_success.
Затем в начале скрипта -2, попросите его проверить, существует ли / tmp / script-1_success. Если нет, уходите.