Что, если бы вы сделали это вот так?
#/bin/bash
input1='20160101'
input2='10' #(Note: These are inputs to each of the scripts I want to run)
scriptdir='/path/to/somewhere'
for q in {00..23}
do
hh="${q}"
echo "$hh"
( bash "$scriptdir/Hour$hh.csh" "$input1" "$input2" ) &
sleep 30
done
wait
echo "All done!"
Как было указано в комментариях, &
приводит к тому, что ваш sleep
также выполняется в фоновом режиме, и поэтому ваш скрипт не будет ждать его завершения, прежде чем перейти к следующей итерации цикла. Также ваш массив hourr
не нужен
Это может сработать:
handle=$(nft list ruleset -a | grep "$your_rule" | grep "#" | awk '{print $NF}')
test -n "$handle" && nft delete rule filter output handle "$handle"
nft insert rule filter output position XX...
Создайте пользовательскую таблицу и заменяйте ее каждый раз. Обновления таблицы атомарны, если выполняются одним вызовом nft
.
Итак, измените правила в моей программе, повторно -сгенерируйте таблицу, вызовите nft
.
Тайм-ауты элементов могут стать нужным вам решением. Вы можете поместить адреса или порты в набор, из которого они будут автоматически удалены по истечении срока действия.
Тайм-ауты могут быть указаны в часах, минутах, секундах или в комбинации, такой как 2h10m5s.
Цитата и пример из вики nftables:
% nft add table inet myfilter
% nft add set inet myfilter myset {type ipv4_addr\; flags timeout\; }
% nft add element inet myfilter myset {10.0.0.1 timeout 10s }
Результат:
% nft list ruleset
table inet myfilter {
set myset {
type ipv4_addr
flags timeout
elements = { 10.0.0.1 timeout 10s expires 8s}
}
}
Источник:https://wiki.nftables.org/wiki-nftables/index.php/Element_timeouts