ulimit
é um shell embutido, não um programa:
$ type ulimit
ulimit is a shell builtin
O que isso significa é que ulimit
pode não funcionar da mesma maneira em todos os shell.
O shell padrão no Ubuntu é o Bash, e é o shell que você usa no terminal.
No entanto, no seu script, você está usando sh
, que (por padrão) é fornecido pelo Dash, um shell semelhante, mas diferente do Bash. Comparar:
$ bash
$ ulimit -u
29901
$ dash
$ ulimit -u
dash: 1: ulimit: Illegal option -u
Existem pelo menos duas soluções para o seu problema:
- altere seu shebang de
#!/bin/sh
para#!/bin/bash
; - use
-p
em vez de-u
.
Eu recomendaria a primeira solução, porque o Bash tem muito mais recursos do que o Dash. A desvantagem é que o Bash é mais lento, mas o seu script não é crítico para o desempenho, isso não será um problema.
Para obter mais informações sobre a diferença entre ulimit
do Bash e ulimit
do Dash, você pode ver man bash
e man dash
e, em seguida, executar uma pesquisa digitando /ulimit
. Além disso, o Bash fornece um help
incorporado que você pode usar como uma alternativa para a página do manual.