Как очиститься, контент всего использования файлов находит команду

Я запустил бы путем проверки, что услуги SQL Server работают. Они, возможно, были остановлены во время установки.

Средства администрирования> Сервисы

0
задан 2 October 2012 в 08:26
3 ответа

Чтобы очистить все find / var / application-logs -type f -name "* .log" находит, используйте следующее:

find /var/application-logs -type f -name "*.log" -exec tee {} \; </dev/null

Если ваша версия find поддерживает в нем используйте + вместо \; , чтобы использовать один проход tee для всех файлов. В качестве альтернативы, если достаточно указать глобуса оболочки:

tee /var/application-logs/*.log </dev/null
6
ответ дан 4 December 2019 в 11:11

. Если вы хотите остановить рост ваших журналов, используйте logrotate . Не следует слепо протирать журналы только потому, что они заполнены.

1
ответ дан 4 December 2019 в 11:11

Я столкнулся с похожей ситуацией, когда мне пришлось удалить журналы контейнера Docker с расширением «.log" с помощью команды или сценария оболочки (это было для конкретного сценария)

Вот сценарий

#!/bin/bash

#SHELL SCRIPT TO DELETE THE CONTENT OF THE DOCKER CONTAINER LOG FILES

#Declaring Array
file_list=()

#While loop to read log file name
 while IFS= read -d $'\0' -r file ; do
     file_list=("${file_list[@]}" "$file")
 done < <(find /var/lib/docker/containers/ -type f -name "*.log" -print0)

#Printing log file names
 echo "${file_list[@]}"

#Deleting the content of the log files
 for f in "${file_list[@]}";do
    if [ -f $f ]
    then
      : > "$f"
    fi
 done

Объяснение элементов Bash


file_list=() представляет собой массив, содержащий результаты find /var/lib/docker/containers/ -type f -name "*.log"

В то время как цикл используется для чтения имен файлов журнала

while IFS= read -d $'\0' -r file ; do
     file_list=("${file_list[@]}" "$file")
 done < <(find /var/lib/docker/containers/ -type f -name "*.log" -print0)

, где подпроцесс find используется Команда while через <

и IFS= read -d $'\0' -r file - это условие while

, которое считывает одну строку ввода из команда find.

echo "${file_list[@]}" предназначена для печати имени файла, хранящегося в массиве.

for f in "${file_list[@]}";do
    if [ -f $f ]
    then
      : > "$f"
    fi
 done

В приведенном выше цикле for-(if) фрагмент, цикл считывает каждый файл из массива ${file_list[@]} и оператор if then очищает содержимое файла, используя : > "$f"

1
ответ дан 1 October 2020 в 08:55

Теги

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