Por encadeamento de comentários sobre a pergunta:
#!/bin/bash
while [[ 1 -eq 1 ]]; do
everything_in_the_original_script
sleep 60
done
Eu tenho o seguinte script e preciso que isso seja executado a cada minuto no meu servidor Windows. O caminho do arquivo é d / TFTP / script.sh, então eu queria saber se eu posso inserir um loop while ou algum outro método para que eu possa ter isso rodando em segundo plano a cada minuto
#!/bin/bash
declare -A arr_map
arr_map=([AR]=Switches [SW]=Switches [LR]=Switches [AP]=Default [GV]=Default [DR]=Default [GV]=Default [VN]=Default [MGMT]=Default [GW]=Routers)
# Iterate through indexes of array
for keyword in "${!arr_map[@]}"; do
# Search files containing the "-$keyword" pattern in the name
# like "-GW" or "-AR". This pattern can be tuned to the better matching.
for filename in *-"$keyword"*; do
# if file exists and it is regular file
if [ -f "$filename" ]; then
destination=${arr_map["$keyword"]}/"$filename"
# Remove these echo commands, after checking resulting commands.
echo mkdir -p "$destination"
echo mv -f "$filename" "$destination"
mkdir -p "$destination"
mv -f "$filename" "$destination"
#echo in front of mkidr and move
fi
done
done
Por encadeamento de comentários sobre a pergunta:
#!/bin/bash
while [[ 1 -eq 1 ]]; do
everything_in_the_original_script
sleep 60
done
Como alternativa, se você quiser que cada iteração tome 60 segundos no total, esse script baseará seu código no código e ficará em modo de espera somente por 60 segundos (se o código demorar mais que 60 segundos, ele não irá dormir) ...
sleep_time=60
while true; do
start_secs=$(date +'%s')
everything_in_the_original_script
end_secs=$(date +'%s')
elapsed=$((end_secs - start_secs))
[[ $elapsed -le $sleep_time ]] || elapsed=$sleep_time
sleep $((sleep_time - elapsed))
done