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/shpara#!/bin/bash; - use
-pem 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.