Вращение лога скрипта Bash - PullRequest
       3

Вращение лога скрипта Bash

0 голосов
/ 07 декабря 2018

Не могли бы вы помочь мне исправить мое назначение ротации журналов?

Мой bash-скрипт должен принимать обязательный целочисленный параметр и необязательный строковый параметр.Целое число - это количество предыдущих журналов, которые нужно сохранить, а строка - это путь к каталогу, в котором хранятся журналы (по умолчанию - log).В этой программе я должен проверить, что целочисленный параметр предоставляется и является числом.Если указан второй параметр, убедитесь, что указан путь к каталогу и у меня есть доступ для записи в него.Не беспокойтесь об отдельных файлах журналов, имеющих разрешения на запись.

Вот несколько примеров запуска программы.Строки, начинающиеся с «>», являются ответами программы.

Строки, начинающиеся с «#», не печатаются, а представляют собой описание того, какое действие выполняет программа.

./logrot
    
> number of days of logs to keep is required to be a non-negative integer
    
./logrot -3
    
> number of days of logs to keep is required to be a non-negative integer
./logrot 5 Not_A_Writeable_Directory
    
>  Not_A_Writeable_Directory must be a path to a log directory with write access for $USER
./logrot 1
    
#moves log/*.0.log to log/*.1.log
    
#creates new log/*.0.log
    
#deletes all other .log files
./logrot 2 otherfolder
#moves otherfolder/*.1.log to otherfolder/*.2.log
#moves otherfolder/*.0.log to otherfolder/*.1.log
#creates new otherfolder/*.0.log
#deletes all other .log files

Код моего bash-скрипта:

#!/bin/bash

if [-z "$1"] || ["1" -lt "0"]; then
    echo "number of days of logs to keep is required to be a non-negative integer"
    exit
    else
    count="$1"
fi

if [-z "$2"]; then
    dir=~/log
    else
    dir=$2
fi

if [ ! -d "$dir"]: then
    #echo "$dir must be a path to a log directory with write access for $USER
    #exit
    mkdir ~/log
    chmod 777 ~/log
    touch ~/log/*.0.log
fi

for (( i=$count-1; i>=0; i--))
    do
    next=$(($i+1))
    if [ ! -f "$dir/*.$i.log"]; then
    echo "Directory $dir/*.$i.log does not exist"
    else
    mv $dir/*.$i.log $dir/*.$next.log
    echo "moves $dir/*.$i.log to $dir/*.$next.log"
    exit
fi

done

touch $dir/*.0.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...