Domanda

Ho il seguente script:

cat > /tmp/script.sh <<EndOfScript
#!/bin/sh
ulimit -n 8192
run_app
EndOfScript

che gira senza problemi a livello locale, è sempre ok. Ma se provo a farlo funzionare in modalità remota tramite ssh:

scp /tmp/script.sh user@host:/tmp/script.sh
ssh user@host "chmod 755 /tmp/script.sh; /tmp/script.sh"

ho ottenuto l'errore:

ulimit: open files: cannot modify limit: Operation not permitted

Ho provato anche il seguente comando:

ssh user@host "ulimit -n 8192"

stesso errore.

Sembra che l'esecuzione di comandi remoti ssh è far rispettare un limite rigido 1024 limite nofile, ma non riesco a trovare il modo di modificare questo valore predefinito. Ho cercato di modificare /etc/security/limits.conf e sshd restart, ancora lo stesso errore.

È stato utile?

Soluzione 2

Fiannly capito la risposta: aggiungere quanto segue a / etc / initscript

ulimit -c unlimited
ulimit -HSn 65535
# Execute the program.
eval exec "$4"

Altri suggerimenti

Invece di usare la soluzione di /etc/initscript (e non fare un errore di battitura in quel file .. :), se si desidera solo sshd per onorare le impostazioni effettuate in /etc/security/limits.conf, è necessario assicurarsi che avete UsePAM yes in /etc/ssh/sshd_config, e liste /etc/pam.d/sshd session required pam_limits.so (o in altro modo include un altro file che lo fa).

Questo dovrebbe essere tutto quello che c'è ad esso.

Nelle versioni più vecchie od OpenSSH (<3.6 qualcosa) c'era anche un problema con UsePrivilegeSeparation che impediva i limiti di essere onorati, ma è stato risolto nelle versioni più recenti.

ulimit richiede privilegi di superutente per funzionare.

Io vi suggerisco di chiedere all'amministratore del server per modificare il valore per voi sul server che si sta tentando di eseguire lo script su.

Lui / Lei può farlo modificando /etc/secutiry/limits.conf su Linux. Ecco un esempio che potrebbe aiutare:

*               soft    nofile          8192
*               hard    nofile          8192

Dopo di che, non è necessario riavviare sshd. Basta il logout e login di nuovo.

Io vi suggerisco di fare la stessa domanda nel ServerFault però. Otterrete risposte relative meglio sul lato server lì.

Controlla gli script di start up (/etc/profile, ~/.??*) per una chiamata a ulimit. IIRC, una volta che è stato imposto un limite, non può essere ampliata più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top