Ho uno script Perl che esegue varie fasi di installazione per configurare una casella di sviluppo per la nostra azienda. Esegue vari script di shell, alcuni dei quali bloccati a causa di un numero inferiore a quello richiesto ulimit
s (in particolare, stack size -s
nel mio caso).Come impostare un ulimit all'interno di uno script Perl che si applica ai suoi figli?
Pertanto, vorrei impostare uno ulimit
applicabile a tutti gli script (children
) avviato dal mio Perl principale, ma non sono sicuro di come ottenerlo: qualsiasi tentativo di chiamare ulimit dallo script impostalo solo su quella specifica shell figlio, che esce immediatamente.
Sono consapevole che posso chiamare ulimit
prima ho eseguito lo script Perl o utilizzare /etc/security/limits.conf
, ma non voglio che l'utente sappia niente di tutto questo - dovrebbero solo sapere come eseguire lo script, che dovrebbe prendersi cura di tutto questo per loro.
Posso anche eseguire ulimit
ogni volta che eseguo un comando, come questo ulimit -s BLA; ./cmd
ma non voglio duplicarlo ogni volta e mi sento come se ci fosse una soluzione migliore, più pulita là fuori.
Un'altra pazzesca "soluzione" è creare uno script wrapper chiamato BLA.sh che stabilisca ulimit e chiami BLA.pl, ma ancora una volta, è un hack nella mia mente e ora avrei 2 script (potrei anche fai in modo che BLA.pl si chiami da solo con "ulimit -s BLA; ./BLA.pl --foo" e agisca diversamente a seconda che veda --foo o meno ma che sia anche più hacker di prima).
Infine, apparentemente potrei installare BSD :: Risorsa ma vorrei evitare l'uso di dipendenze esterne.
Quindi cos'è IL modo per impostare ulimit all'interno di uno script Perl e farlo applicare a tutti i bambini?
Grazie.
basta usare BSD :: Risorsa. in alternativa, compila il tuo modulo XS per fare lo stesso. Non so perché lo faresti, comunque. – ysth