نمایش نتایج: از شماره 1 تا 4 از مجموع 4

موضوع: شکل در پر شدن logهای سیستم

  
  1. #1
    نام حقيقي: sara.ok

    عضو غیر فعال شناسه تصویری saraweblog
    تاریخ عضویت
    Feb 2006
    محل سکونت
    Tehran
    نوشته
    83
    سپاسگزاری شده
    5
    سپاسگزاری کرده
    6

    Icon14 شکل در پر شدن logهای سیستم

    با سلام!
    من یک وب سرور دارم که هفته ای یکبار log هاش به اندازه 30g پر میشه و درایو c من رو پر میکنه منظورم logخای داخل system32 در شاخه ویندوز هست چکار کنم که مجبور نباشم برم دستی این log ها را پاک کنم راحی هست که جایی ست کنم که فرضا تا 5g که پرشد خودش پاک کنه یا بره روی بقیه logها wr کنه؟



    موضوعات مشابه:

  2. #2
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,546
    سپاسگزاری شده
    6792
    سپاسگزاری کرده
    1032
    نوشته های وبلاگ
    4
    با یک اسکریپت که به صورت Schedule اجرا شود می توانید تنظیم کنید که هر روز، فایل های قدیمی تر از n روز پاک شوند.


    محمد حکیمی
    hakimi [a t] gmail.com

  3. #3
    نام حقيقي: عبدالزهرا

    عضو غیر فعال
    تاریخ عضویت
    Dec 2008
    محل سکونت
    tehran
    نوشته
    47
    سپاسگزاری شده
    10
    سپاسگزاری کرده
    13
    میشه اسکریپت رو بنویسید و یه منبع اسکریپت نویسی هم معرفی بفرمایید؟



  4. #4
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,546
    سپاسگزاری شده
    6792
    سپاسگزاری کرده
    1032
    نوشته های وبلاگ
    4
    اسکریپتی برای حذف فایل های موجود در یک فولدر که تاریخ آخرین ویرایش آنها از تاریخ تعیین شده قدیمی تر باشد:

    کد:
    '====================
    '
    ' NAME:    PurgeFiles.vbs
    '
    ' AUTHOR:    Mohammad Hakimi
    ' DATE:    20050925
    ' Modified:    20080318
    '
    ' COMMENT:PURGEFILES.vbs uses the LastModifiedDate of a file and deletes it
    '    if it is older that the specified number of days.
    '        
    ' USAGE:    CScript.exe purgefiles.vbs <rootfolder> <maxdaysold> [/R] [/S] [/T] [/V]
    '                                 [/L:logfile] [/E]
    '
    ' <rootfolder> - Specifies the directory to start purging files.
    ' <maxdaysold> - Specifies how old a file can be in Days before it is purged.
    ' [/E] - Report status and results to the Event Log.
    ' [/L:logfile] - Specifies a file to output the results to.
    ' [/R] - Deletes the rootfolder if it is empty.
    ' [/S] - Deletes any empty subdirectories.
    ' [/T] - Test Mode - does not delete any files or directories.
    ' [/V] - Verbose Mode - shows detailed information to the screen.
    ' /? - Displays USAGE message.
    '
    '====================
    
    Const EVENT_SUCCESS = 0
    Const EVENT_ERROR = 1
    Const EVENT_WARNING = 2
    Const EVENT_INFORMATION = 4
    
    Dim objFSO, objWSH, objLogFile
    Dim argCount, iArg, flg
    Dim RootFolder, MaxDaysOld, Logfile
    Dim iDelFiles, iDelDirs
    Dim bDeleteRoot, bDeleteSub,bVerbMode, bTestMode, bEventLog
    
    On Error Resume Next
    
    Set objWSH = CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    argCount = WScript.Arguments.Count
    iArg = 0
    
    ' Check to see if the user is asking for help.
    If argCount > 0 Then
        flg = LCase(WScript.Arguments(0))
        If (flg="help") Or (flg="/h") Or (flg="\h") Or (flg="-h") Or (flg="h") Or _
         (flg="/?") Or (flg="\?") Or (flg="-?") Or (flg="?") Then
            Call ShowUsage
        End If
    End If
    
    ' Make sure that we have at least 2 arguments.    
    If argCount < 2 Then
        Call Fail("Usage: " & WScript.ScriptName & " /? for help.")
    End If
    
    ' Initialize variables.
    iDelFiles = 0
    iDelDirs = 0
    bDeleteSub = False
    bDeleteRoot = False
    bVerbMode = False
    bTestMode = False
    bEventLog = False
    
    ' Verify that the first argument is a folder and it exists.
    RootFolder = NextArgument
    If Not objFSO.FolderExists(RootFolder) Then
        Call Fail("Can't find " & chr(34) & RootFolder & chr(34) & ".")
    End If
    
    ' Verify that the second argument is a valid number of days.
    MaxDaysOld = NextArgument
    If IsNumeric(MaxDaysOld) Then
        If (MaxDaysOld >= 1) Then
            MaxDaysOld = Int(MaxDaysOld)
        Else
            Call Fail("Invalid MAXDAYSOLD parameter.")
        End If
    Else
        Call Fail("Invalid MAXDAYSOLD parameter.")
    End If
    
    ' If we have more than 2 arguments then error out.
    If Not IsEmpty(NextArgument)Then
        Call Fail("Usage: " & WScript.ScriptName & " /? for help.")
    End If
    
    ' Open the logfile if it was an option.
    If Not IsEmpty(Logfile) Then
        Set objLogFile = objFSO.CreateTextFile(Logfile, True)
        Call CheckError
    End If
    
    ' Everything should be ok so proceed with the purging.
    Call LogToEventLog("Script has started...", EVENT_INFORMATION)
    Call LogEvent("PurgeFiles.vbs has started..." & vbCrLf)
    Call ScanFolder(RootFolder)
    
    ' Show the results. If there were any errors then the script would have exited already.
    Call LogToEventLog("Script has ended..." & vbCrLf & "Deleted Files: " & _
                     iDelFiles & vbCrLf & "Deleted Folders: " & iDelDirs, _
                     EVENT_INFORMATION)
    
    Call LogEvent(vbCrLf & "PurgeFiles.vbs is complete." & vbCrLf & "Deleted Files: " & _
                 iDelFiles & vbCrLf & "Deleted Folders: " & _
                 iDelDirs)
    
    ' Clean up.
    Set objWSH = Nothing
    Set objFSO = Nothing
    If Not IsEmpty(Logfile) Then objLogFile.Close
    
    ' Exit the script.
    WScript.Quit 0
    
    '====================
    Sub ScanFolder(sFolderName)
    
    Dim objFolder, objSubFolders, objFiles
    Dim Folder, File
    Dim ret
    
    On Error Resume Next
    
    Set objFolder = objFSO.GetFolder(sFolderName)
    Set objSubFolders = objFolder.SubFolders
    Set objFiles = objFolder.Files
    
    For Each Folder In objSubFolders
        ScanFolder (Folder.Path)
    Next
    
    For Each File In objFiles
        ret = DaysOld(File.Path)
        ' If the file older then the wanted # of days then delete it.
        If ret > MaxDaysOld Then
            If bTestMode = False Then
                If StrComp(File.Path, Logfile, vbTextCompare) <> 0 Then
                    Call LogEvent(File.Path & " is " & ret & " days old. - FILE DELETED.")
                    objFSO.DeleteFile File, True
                    Call CheckError
                End If
            End If
            iDelFiles = iDelFiles + 1
        End If
    Next
    
    ' If the folder is empty the delete the folder.
    If objFiles.Count <= 0 Then
        If sFolderName = RootFolder Then
            If bDeleteRoot = True Then
                If bTestMode = False Then
                    Call LogEvent(sFolderName & " is empty. - FOLDER DELETED")
                    objFSO.DeleteFolder sFolderName, True
                    Call CheckError
                End If
                iDelDirs = iDelDirs + 1
                Exit Sub
            Else: Exit Sub
            End If
        End If
        If bDeleteSub = True Then
            If bTestMode = False Then
                Call LogEvent(sFolderName & " is empty. - FOLDER DELETED")
                objFSO.DeleteFolder sFolderName, True
                Call CheckError
            End If
            iDelDirs = iDelDirs + 1
            Exit Sub
        Else: Exit Sub
        End If
    End If
    
    End Sub
    
    '====================
    Function DaysOld(sFileName)
    
    Dim objFile
    
    On Error Resume Next
    
    Set objFile = objFSO.GetFile(sFileName)
    Call CheckError
    
    ' Return the difference in days.
    DaysOld = Int(Now() - objFile.DateLastModified)
    
    End Function
    
    '====================
    ' Extract argument value from command line, processing any option flags.
    Function NextArgument
    
    Dim arg
    
    Do ' Loop to pull in option flags until an argument value is found.
        If iArg >=argCount Then Exit Function
        arg = WScript.Arguments(iArg)
        iArg = iArg + 1
        If (AscW(arg) <> AscW("/")) And (AscW(arg) <> AscW("-")) Then Exit Do
        Select Case UCase(Right(arg, Len(arg) -1))
            Case "E" : bEventLog = True
            Case "R" : bDeleteRoot = True
            Case "S" : bDeleteSub = True
            Case "T" : bTestMode = True
            Case "V" : bVerbMode = True
            Case Else
                If UCase(Mid(arg, 2, 2)) = "L:" Then
                    LogFile = Mid(arg,4)
                Else
                    Call Fail("Invalid option flag: " & arg)
                End If
        End Select
    Loop
    
    NextArgument = arg
    
    End Function
    
    '====================
    Sub ShowUsage
    
    WScript.Echo "CScript.exe " & WScript.ScriptName & " <rootfolder> <maxdaysold> [/R] [/S] [/T] [/V]" & vbCrLf & _
                 vbTab & vbTab & vbTab & vbTab & vbTab & " [/L:logfile]" & vbCrLf & vbCrLf & _
                 " rootfolder" & vbTab & "Specifies the directory to start purging files." & vbCrLf & _
                 " maxdaysold" & vbTab & "Specifies how old a file can be in Days before it is purged." & vbCrLf & _
                 " /E" & vbTab & vbTab & "Report status and results to the Event Log." & vbCrLf & _
                 " /L:logfile" & vbTab & vbTab & "Specifies a file to output the results to." & vbCrLf & _
                 " /R" & vbTab & vbTab & "Deletes the rootfolder if it is empty." & vbCrLf & _
                 " /S" & vbTab & vbTab & "Deletes any empty subdirectories." & vbCrLf & _
                 " /T" & vbTab & vbTab & "Test Mode - does not delete any files or directories." & vbCrLf & _
                 " /V" & vbTab & vbTab & "Verbose Mode - shows detailed information to the screen." & vbCrLf & _
                 " /?" & vbTab & vbTab & "Displays this message." & vbCrLf & vbCrLf & _
                 WScript.ScriptName & " will not delete any directories by default."
    WScript.Quit 1
    
    End Sub
    
    '====================
    Sub CheckError()
    
    Dim msg
    
    If Err.Number = 0 Then Exit Sub
    msg = Err.Source & " " & Hex(Err) & ": " & Err.Description
    
    Call Fail(msg)
    
    End Sub
    
    '====================
    Sub LogEvent(sMessage)
    
    If bVerbMode Then WScript.Echo(sMessage)
    If IsObject(objLogFile) Then objLogFile.WriteLine(sMessage)
    
    End Sub
    
    '====================
    Sub LogToEventLog(sMessage, nValue)
    
    If bEventLog Then objWSH.LogEvent nValue, WScript.ScriptName & ": " & sMessage
    
    End Sub
    
    '====================
    Sub Fail(sMessage)
    
    If bEventLog Then LogToEventLog sMessage, EVENT_ERROR
    If IsObject(objLogFile) Then
        objLogFile.WriteLine(WScript.ScriptName & ": " & sMessage)
        objLogFile.Close
    End If
    WScript.Echo WScript.ScriptName & ": " & sMessage
    
    WScript.Quit(1)
    
    End Sub
    منظورتان از منبع برای اسکریپت نویسی را متوجه نشدم. اسکریپت ها به زبان VBScript هستند. اگر این زبان را یاد بگیرید می توانید اسکریپت های مورد نظرتان را بنویسید.


    محمد حکیمی
    hakimi [a t] gmail.com

کلمات کلیدی در جستجوها:

پر شدن log file

درایو c پر شده چکار کنم

پر شدن log سیستم

برچسب برای این موضوع

مجوز های ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •