[Golang] [Linux] - Barcha ochiq fayllarni joriy foydalanuvchi tomonidan qanday olish mumkin

Kundaliklar hajmi kvota kattaroq bo'lsa, ba'zi jurnallarni o'chirib tashlamoqchiman, lekin uni o'chirishdan oldin jurnalning ochilishini tekshirish kerak.

Barcha ochiq fayllarni joriy foydalanuvchi tomonidan qanday olish mumkin?

0
qo'shib qo'ydi muallif bansi, manba
qo'shib qo'ydi muallif bansi, manba
faqat mening birinchi fikrimni tekshiring va bu erda ba'zi bir misollar va btw, siz logrotate jurnallarni avtomatik ravishda siqish va arxivlash uchun, keyin uni o'chirish (skript bilan bo'lishi mumkin)
qo'shib qo'ydi muallif bansi, manba
faqat mening birinchi fikrimni tekshiring va bu erda ba'zi bir misollar va btw, siz logrotate jurnallarni avtomatik ravishda siqish va arxivlash uchun, keyin uni o'chirish (skript bilan bo'lishi mumkin)
qo'shib qo'ydi muallif bansi, manba
boshqa variant bo'lsa, sizning muhitingizda sed yoki tail bo'lsa, ochiq bo'lsa ham, jurnal faylining yuqori qismidagi satrlarni xavfsiz olib tashlashingiz mumkin.
qo'shib qo'ydi muallif bansi, manba
boshqa variant bo'lsa, sizning muhitingizda sed yoki tail bo'lsa, ochiq bo'lsa ham, jurnal faylining yuqori qismidagi satrlarni xavfsiz olib tashlashingiz mumkin.
qo'shib qo'ydi muallif bansi, manba
"/ Proc" parse orqali barcha ochiladigan faylni olishim mumkin. Yaxshi yo'l borligini bilmoqchiman
qo'shib qo'ydi muallif tacy_lee, manba
"/ Proc" parse orqali barcha ochiladigan faylni olishim mumkin. Yaxshi yo'l borligini bilmoqchiman
qo'shib qo'ydi muallif tacy_lee, manba
Rahmat bansi, men docker konteyner muhitida ishlaydigan agentni amalga oshirishni istayman, u juda ko'p jarayonga ega emas, shuningdek crontab
qo'shib qo'ydi muallif tacy_lee, manba
Rahmat bansi, men docker konteyner muhitida ishlaydigan agentni amalga oshirishni istayman, u juda ko'p jarayonga ega emas, shuningdek crontab
qo'shib qo'ydi muallif tacy_lee, manba

9 javoblar

Tahrirlash/tafovut (Qarang: proc (5) ... ), ehtimol, eng samarali usul bo'lib, lsof nima qiladi.

Foydalanuvchilar tomonidan ishlaydigan jarayonlarni topish uchun avval barcha (raqamli) kataloglarni skanerlashingiz mumkin, barcha kataloglarda /proc/ pid /fd katalogidan foydalaning.

BTW, ushbu log fayllarni o'ylamasdan va olib tashlashingiz mumkin. Agar yadro ochilgan bo'lsa, yadro to'g'ri ishlaydi.

But perhaps you should ask your sysadmin to setup disk quotas. See quota(1) & quotaon(8).

Perhaps using & configuring logrotate should be enough.

1
qo'shib qo'ydi

Tahrirlash/tafovut (Qarang: proc (5) ... ), ehtimol, eng samarali usul bo'lib, lsof nima qiladi.

Foydalanuvchilar tomonidan ishlaydigan jarayonlarni topish uchun avval barcha (raqamli) kataloglarni skanerlashingiz mumkin, barcha kataloglarda /proc/ pid /fd katalogidan foydalaning.

BTW, ushbu log fayllarni o'ylamasdan va olib tashlashingiz mumkin. Agar yadro ochilgan bo'lsa, yadro to'g'ri ishlaydi.

But perhaps you should ask your sysadmin to setup disk quotas. See quota(1) & quotaon(8).

Perhaps using & configuring logrotate should be enough.

1
qo'shib qo'ydi

Tahrirlash/tafovut (Qarang: proc (5) ... ), ehtimol, eng samarali usul bo'lib, lsof nima qiladi.

Foydalanuvchilar tomonidan ishlaydigan jarayonlarni topish uchun avval barcha (raqamli) kataloglarni skanerlashingiz mumkin, barcha kataloglarda /proc/ pid /fd katalogidan foydalaning.

BTW, ushbu log fayllarni o'ylamasdan va olib tashlashingiz mumkin. Agar yadro ochilgan bo'lsa, yadro to'g'ri ishlaydi.

But perhaps you should ask your sysadmin to setup disk quotas. See quota(1) & quotaon(8).

Perhaps using & configuring logrotate should be enough.

1
qo'shib qo'ydi

Agar siz bash scripting qilsangiz, lsof sizning ehtiyojingizga mos bo'lishi mumkin. Agar siz X-foydalanuvchi foydalanuvchi bilan qiziqmoqchi bo'lsangiz, lsof -uX hiylani bajarishingiz kerak.

0
qo'shib qo'ydi

Agar siz bash scripting qilsangiz, lsof sizning ehtiyojingizga mos bo'lishi mumkin. Agar siz X-foydalanuvchi foydalanuvchi bilan qiziqmoqchi bo'lsangiz, lsof -uX hiylani bajarishingiz kerak.

0
qo'shib qo'ydi

"/ Proc" parse orqali barcha ochiq fayllarni olish:

func getOpenfiles() (openfiles map[string]bool) {
    files, _ := ioutil.ReadDir("/proc")
    openfiles = make(map[string]bool)
    for _, f := range files {
        m, _ := filepath.Match("[0-9]*", f.Name())
        if f.IsDir() && m {
            fdpath := filepath.Join("/proc", f.Name(), "fd")
            ffiles, _ := ioutil.ReadDir(fdpath)
            for _, f := range ffiles {
                fpath, err := os.Readlink(filepath.Join(fdpath, f.Name()))
                if err != nil {
                    continue
                }
                openfiles[fpath] = true
            }
        }
    }
    return openfiles
}
0
qo'shib qo'ydi

"/ Proc" parse orqali barcha ochiq fayllarni olish:

func getOpenfiles() (openfiles map[string]bool) {
    files, _ := ioutil.ReadDir("/proc")
    openfiles = make(map[string]bool)
    for _, f := range files {
        m, _ := filepath.Match("[0-9]*", f.Name())
        if f.IsDir() && m {
            fdpath := filepath.Join("/proc", f.Name(), "fd")
            ffiles, _ := ioutil.ReadDir(fdpath)
            for _, f := range ffiles {
                fpath, err := os.Readlink(filepath.Join(fdpath, f.Name()))
                if err != nil {
                    continue
                }
                openfiles[fpath] = true
            }
        }
    }
    return openfiles
}
0
qo'shib qo'ydi

"/ Proc" parse orqali barcha ochiq fayllarni olish:

func getOpenfiles() (openfiles map[string]bool) {
    files, _ := ioutil.ReadDir("/proc")
    openfiles = make(map[string]bool)
    for _, f := range files {
        m, _ := filepath.Match("[0-9]*", f.Name())
        if f.IsDir() && m {
            fdpath := filepath.Join("/proc", f.Name(), "fd")
            ffiles, _ := ioutil.ReadDir(fdpath)
            for _, f := range ffiles {
                fpath, err := os.Readlink(filepath.Join(fdpath, f.Name()))
                if err != nil {
                    continue
                }
                openfiles[fpath] = true
            }
        }
    }
    return openfiles
}
0
qo'shib qo'ydi

"/ Proc" parse orqali barcha ochiq fayllarni olish:

func getOpenfiles() (openfiles map[string]bool) {
    files, _ := ioutil.ReadDir("/proc")
    openfiles = make(map[string]bool)
    for _, f := range files {
        m, _ := filepath.Match("[0-9]*", f.Name())
        if f.IsDir() && m {
            fdpath := filepath.Join("/proc", f.Name(), "fd")
            ffiles, _ := ioutil.ReadDir(fdpath)
            for _, f := range ffiles {
                fpath, err := os.Readlink(filepath.Join(fdpath, f.Name()))
                if err != nil {
                    continue
                }
                openfiles[fpath] = true
            }
        }
    }
    return openfiles
}
0
qo'shib qo'ydi