質問

私は次のスクリプトを持っています:

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

ローカルでスムーズに実行され、それは常にokです。しかし、私はSSHを介してリモートでそれを実行しようとした場合:

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

私はエラーを得ます:

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

私はまた、次のコマンドを試してみました。

ssh user@host "ulimit -n 8192"

同じエラーます。

そのsshのリモートコマンドの実行がNOFILE制限の1024ハードリミットを施行されたように見えますが、私は、このデフォルト値を変更する方法を見つけることができません。私は/etc/security/limits.confを再起動SSHDを変更しようとした、まだ同じエラーます。

役に立ちましたか?

解決 2

Fiannlyは答えを考え出します。/ etc / initスクリプト

に以下を追加します
ulimit -c unlimited
ulimit -HSn 65535
# Execute the program.
eval exec "$4"

他のヒント

の代わりに、/etc/initscriptの回避策を使用して(と、そのファイルのタイプミスをしない.. :)、あなたはちょうどあなたがsshdで行った設定を称えるために/etc/security/limits.confは、あなたがUsePAM yes/etc/ssh/sshd_configていることを確認する必要がありたい場合や/etc/pam.d/sshdリストはsession required pam_limits.so(あるいはそうする他のファイルが含まれます)。

これがあるべきすべてのことにあります。

古いバージョンでのOpenSSH(<3.6何かを)OD限界が表彰される防止のUsePrivilegeSeparationとの問題もあったが、それは新しいバージョンで修正された。

ulimitの実行にはスーパーユーザ権限が必要です。

私はあなたが上でスクリプトを実行しようとしているサーバー上で、あなたのためにその値を変更するために、サーバー管理者に依頼することができお勧めします。

彼/彼女は、Linux上で/etc/secutiry/limits.conf変更することによって、それを行うことができます。ここでは役立つかもしれない例があります:

*               soft    nofile          8192
*               hard    nofile          8192

その後、あなたはSSHDを再起動する必要はありません。ただ、ログアウトして再度ログインします。

私はしかし ServerFaultのの中に同じ質問をするためにあなたをお勧めします。あなたはそこに優れたサーバー側関連の回答を得るでしょう。

/etc/profileへの呼び出しのために起動スクリプト(~/.??*ulimit)を確認してください。制限が課された後IIRC、それはもはや広げることができません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top