J'utilisais ubuntu 12.04, sur lequel je lance ulimit -n, il affiche 1024, Je souhaite augmenter la limite de fichiers ouverts de 1024 à 65535, j'ai donc essayé la commande suivante:
Sudo ulimit -n 65535
mais j'obtiens l'erreur suivante:
Sudo: ulimit: command not found
Comment augmenter la limite de fichiers de 1024 à 65535? Toute aide serait appréciée.
ulimit
est un shell intégré comme cd
, pas un programme séparé. Sudo
cherche un binaire à exécuter, mais il n'y a pas de binaire ulimit
, c'est pourquoi vous obtenez le message d'erreur. Vous devez l'exécuter dans un shell.
Cependant, même si vous devez être root pour augmenter la limite à 65535, vous ne voudrez probablement pas exécuter votre programme en tant que root. Donc, après avoir augmenté la limite, vous devriez revenir à l'utilisateur actuel.
Pour cela, lancez:
Sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"
et vous obtiendrez un nouveau shell, sans privilèges root, mais avec la limite levée. La variable exec
fait en sorte que le nouveau shell remplace le processus par les privilèges Sudo
. Ainsi, une fois que vous avez quitté ce shell, vous ne vous retrouverez plus accidentellement en tant que root.
J'ai eu à traiter de tels problèmes par le passé. Puisqu'il n'y a pas de mécanisme setuid pour les scripts Shell (car il n'est pas sécurisé), j'ai trouvé qu'il était suffisant d'écrire un simple wrapper en C avec un setuid, puis d'utiliser un appel système pour modifier les ulimits du processus en cours avant de supprimer des privilèges et d'exécuter votre Shell. scénario.