Ինչ եք գիտակցում ulimits-ի մասին և ինչպես օգտագործել դրանք Linux համակարգերում?
sobes.tech AI
Պատասխան AI-ից
Ulimits (օգտագործողի սահմանափակումներ) — դա սահմանափակումներ են, որոնք սահմանում են Linux օպերացիոն համակարգի գործընթացները ռեսուրսների սպառման համար: Դրանք օգնում են կանխել համակարգի ռեսուրսների սպառումը մեկ գործընթացի կողմից և ապահովել կայունությունը:
Հիմնական ռեսուրսները, որոնք կարելի է սահմանափակել ulimits-ով՝
- CPU ժամանակ (վայրկյաններ): Մաքսիմալ CPU աշխատանքային ժամանակը գործընթացի համար:
- Ֆայլի չափը (բլոկներ): Մաքսիմալ ֆայլի չափը, որը կարող է ստեղծել օգտվողը:
- Տվյալների հատվածի չափը (կիլոբայթներ): Մաքսիմալ տվյալների հատվածի չափը գործընթացի:
- Ստակ չափը (կիլոբայթներ): Մաքսիմալ ստակ գործընթացի:
- Կոր բայթ ֆայլի չափը (բլոկներ): Կոր-դամպի մաքսիմալ չափը:
- Ռեզիդենտ սեթի չափը (կիլոբայթներ): Մաքսիմալ ռեզիդենտ հիշողության չափը գործընթացի (սովորաբար չի աջակցվում կամ ունի միայն "թեթև" սահմանափակում):
- Պրոցեսների թիվը: Մաքսիմալ պրոցեսների թիվը, որը կարող է ստեղծել օգտվողը:
- Բաց ֆայլեր: Մաքսիմալ ֆայլերի թիվը, որը կարող է բացել գործընթացը:
- Ապամոքված հիշողություն ([կիլոբայթներ]): Մաքսիմալ հիշողության ծավալը, որը կարող է լինել բլոկավորված RAM-ում:
- Մաքս օգտվողի պրոցեսներ: Մաքսիմալ պրոցեսների թիվը, որը հասանելի է կոնկրետ օգտվողին:
- Սիգնալների սպասում: Մաքսիմալ թվով սիգնալներ, որոնք կարող են սպասել հերթում կոնկրետ պրոցեսի համար:
- Հաղորդագրությունների հերթի չափը (բայթներ): Մաքսիմալ հաղորդագրությունների հերթի չափը POSIX:
- Անցյալ ժամանակի առաջնահերթությունը: Մաքսիմալ իրական ժամանակի առաջնահերթությունը, որը կարող է սահմանվել:
- Նայիչ առաջնահերթությունը: Մաքսիմալ "թեթև" առաջնահերթության արժեքը:
- Անցյալ ժամանակի փակված հիշողություն (կիլոբայթներ): Մաքսիմալ չափը հիշողության, որը փակված է իրական ժամանակի խնդիրների համար:
Ulimits-ները լինում են երկու տեսակի՝
- Թեթև սահմանափակում (Soft limit): Ընթացիկ, ակտիվ կիրառվող սահմանափակում:
- Խիստ սահմանափակում (Hard limit): Մաքսիմալ հնարավոր սահմանափակումը, որը սահմանում է ադմինիստրատորը:
Ընթացիկ ulimits-ների դիտում՝
Օգտագործեք ulimit հրամանը շելում (օրինակ՝ bash):
# Ցույց տալ բոլոր թեթև սահմանափակումները
ulimit -a
# Ցույց տալ բաց ֆայլերի խիստ սահմանափակումը
ulimit -Hn
Ulimits սահմանելու ձևը՝
Ulimits-ները կարելի է ժամանակավոր սահմանել ընթացիկ սեսիայի կամ պրոցեսի համար, կամ մշտական:
Անցյալ սահմանափակում:
Օգտագործեք ulimit հրամանը շելում:
# Սահմանել բաց ֆայլերի թեթև սահմանափակումը 4096
ulimit -Sn 4096
# Սահմանել պրոցեսների քանակի խիստ սահմանափակումը 100
ulimit -Hu 100
Մշտական սահմանափակում:
Խմբագրել /etc/security/limits.conf ֆայլը կամ ֆայլերը /etc/security/limits.d/ թղթապանակում:
# <domain> <type> <item> <value>
# Դոմենը կարող է լինել: user (@group), group (@group), wildcard (*)
# Type - կարող է լինել soft, hard, - (երկուսն էլ)
# Item - ռեսուրսի տեսակ (nofile, nproc և այլն)
# Value - սահմանափակման արժեք
* soft nofile 4096 # Բոլոր օգտվողները, soft սահմանափակումը բաց ֆայլերի համար 4096
@mygroup hard nproc 256 # mygroup խմբի համար, hard սահմանափակումը պրոցեսների համար 256
myuser - stack 8192 # myuser օգտվողի համար, երկու սահմանափակում՝ ստակ 8192 կԲ
Փոփոխությունների հետո /etc/security/limits.conf ֆայլում՝ անհրաժեշտ է վերա մուտք գործել համակարգ՝ փոփոխությունները ուժի մեջ մտնելու համար:
Ulimits հաճախ օգտագործվում են՝
- "fork bombs" կանխելու համար (պրոցեսներ, որոնք ստեղծում են բազմաթիվ դուստր պրոցեսներ):
- Հիշողության սահմանափակումներ, որոնք սպառում են պրոցեսները՝ կանխելու համար "out of memory" իրավիճակները:
- Բաց ֆայլերի քանակի սահմանափակումներ, որոնք կարևոր են ցանցային հավելվածների և տվյալների բազաների համար:
- CPU ռեսուրսների սպառման վերահսկողություն:
Ulimits-ների օգտագործումը կարևոր մաս է համակարգի hardening-ի և կայունության ապահովման համար՝ արտադրական միջավայրում հավելվածների աշխատանքը կանխատեսելի և կայուն դարձնելու համար։