I Linux kan du ändra det maximala antalet öppna filer. Du kan ändra det här antalet med hjälp av kommandot ulimit. Det ger dig möjlighet att kontrollera de resurser som är tillgängliga för skalet eller den process som startas av det.
Läs också: I den här korta handledningen kommer vi att visa dig hur du kontrollerar din nuvarande gräns för öppna filer och filbeskrivningar, men för att göra det måste du ha root-åtkomst till ditt system.
Först ska vi se hur vi kan ta reda på det maximala antalet öppnade filbeskrivningar på ditt Linuxsystem.
Find Linux Open File Limit
Värdet lagras i:
# cat /proc/sys/fs/file-max818354
Siffran som du kommer att se visar det antal filer som en användare kan ha öppnat per inloggningssession. Resultatet kan skilja sig åt beroende på ditt system.
På min CentOS-server var gränsen till exempel satt till 818354, medan gränsen på Ubuntu-servern som jag kör hemma var satt till 176772.
Om du vill se de hårda och mjuka gränserna kan du använda följande kommandon:
Check Hard Limit in Linux
# ulimit -Hn4096
Check Soft Limits in Linux
# ulimit -Sn1024
För att se de hårda och mjuka värdena för olika användare kan du helt enkelt byta användare med ”su” till den användare vars gränser du vill kontrollera.
Till exempel:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
Hur man kontrollerar gränser för systembredda filbeskrivare i Linux
Om du kör en server kan vissa av dina program kräva högre gränser för öppnade filbeskrivare. Ett bra exempel på detta är MySQL/MariaDB-tjänster eller Apache-webbservern.
Du kan öka gränsen för öppnade filer i Linux genom att redigera kerneldirektivet fs.file-max
. För detta ändamål kan du använda verktyget sysctl.
Sysctl används för att konfigurera kärnans parametrar vid körning.
För att till exempel öka gränsen för öppna filer till 500000 kan du använda följande kommando som root:
# sysctl -w fs.file-max=500000
Du kan kontrollera det aktuella värdet för öppnade filer med följande kommando:
$ cat /proc/sys/fs/file-max
Med ovanstående kommando förblir ändringarna som du har gjort endast aktiva till nästa omstart. Om du vill tillämpa dem permanent måste du redigera följande fil:
# vi /etc/sysctl.conf
Lägg till följande rad:
fs.file-max=500000
Självklart kan du ändra antalet efter dina behov. För att verifiera ändringarna igen använder du:
# cat /proc/sys/fs/file-max
Användarna måste logga ut och logga in igen för att ändringarna ska träda i kraft. Om du vill tillämpa gränsen omedelbart kan du använda följande kommando:
# sysctl -p
Set User Level Open File limits in Linux
De ovanstående exemplen visade hur man ställer in globala gränser, men du kanske vill tillämpa gränser per användare. För det ändamålet måste du som användare root redigera följande fil:
# vi /etc/security/limits.conf
Om du är en Linux-administratör föreslår jag att du blir mycket bekant med den filen och vad du kan göra med den. Läs alla kommentarer i den eftersom den ger stor flexibilitet när det gäller att hantera systemresurser genom att begränsa användare/grupper på olika nivåer.
De rader som du bör lägga till tar följande parametrar:
<domain> <type> <item> <value>
Här är ett exempel på att ställa in en mjuk och hård gräns för användaren marin:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Sluttliga tankar
Den här korta artikeln visade dig ett grundläggande exempel på hur du kan kontrollera och konfigurera gränser på global- och användarnivå för det maximala antalet öppna filer.
Vi skrapade bara på ytan, men jag uppmuntrar dig starkt att ta en mer detaljerad titt och läsa om /etc/sysctl.conf och /etc/security/limits.conf och lära dig hur du använder dem. De kommer att vara till stor hjälp för dig en dag.