2009-12-11 24 views
5

SSHリモートコマンドの実行とulimitの

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

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

scp /tmp/script.sh [email protected]:/tmp/script.sh 
ssh [email protected] "chmod 755 /tmp/script.sh; /tmp/script.sh" 

私はエラーを得た:

ssh [email protected] "ulimit -n 8192" 

同じエラー:

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

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

sshリモートコマンドの実行では、nofile limitに1024ハード制限が適用されているようですが、このデフォルト値を変更する方法がわかりません。私は/etc/security/limits.confを変更してsshdを再起動しようとしましたが、それと同じエラーです。

+1

最後に、私は、正しい答えを見つけます。/ etc/initスクリプトに次の行を追加します。 のulimit -c無制限 のulimit -HSn 65535 #のプログラムを実行します。 eval exec "$ 4" –

答えて

3

Fiannlyが答えを考え出した:

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

ありがとうございます。不思議なことに、ulimitのmanページで-Hと-Sオプションを見つけることができません。 – smartnut007

2

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

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

Linuxで/etc/secutiry/limits.confを変更することで、これを行うことができます。

*    soft nofile   8192 
*    hard nofile   8192 

その後、sshdを再起動する必要はありません。単にログアウトしてもう一度ログインしてください。

でも、同じ質問をServerFaultにお願いします。そこでは、サーバー側のより良い回答が得られます。

+1

私は/etc/security/limits.confを修正し、sshdを再起動し、マシンを再起動しました。まだnofileの上限が1024より大きくなることはありません。 –

+0

limits.confに関連する行を投稿できますか?エラーが含まれている可能性があります。sshdプロセスにはulimitが適用されている必要があるので、起動スクリプトなどにulimitの設定がないかどうかを確認してください。 – wds

+0

答えに必要なものを追加しました。 –

0

ulimitへの呼び出しには、起動スクリプト(/etc/profile~/.??*)を確認してください。 IIRCでは、一度制限を課すと、それ以上は拡大できません。

+0

再起動で制限をリセットしますか? – mcandre

+0

起動中に 'ulimit'コマンドが実行されない場合のみ。新しいシェルウィンドウを作成すると、 'ulimit'はこのシェルとすべての子に対してのみアクティブになります。この場合、新しいシェルウィンドウを開始すると、すでに制限なしにセッションが作成されます。 'ulimit'はスタートアップスクリプトにあります。あなたが何かできるようになる前に、すべてのシェルが影響を受けるので、再起動は役に立ちません。まず、コマンドを無効にする必要があります。 –

11

代わりの/etc/initscriptの回避策を使用して(と、そのファイルのタイプミスをしないinitスクリプト/の/ etcに以下を追加します。.. :)、あなたならばsshd/etc/security/limits.confで行った設定を反映させたい場合は、UsePAM yes/etc/ssh/sshd_configで、/etc/pam.d/sshdsession required pam_limits.soであることを確認する必要があります。

それはすべてそこにあるはずです。

古いバージョンのopenssh(< 3.6)では、UsePrivilegeSeparationに問題があり、制限が適用されないようになっていましたが、新しいバージョンで修正されました。

+1

これらの行とそのファイルの両方のファイルをチェックしました。 OpenSSH_5.8p1で実行するDebian-7ubuntu1、OpenSSL 1.0.0e 2011年9月6日。OPと同じ問題:| | – kellogs

+0

私はこの年齢の情報を探していました - ありがとう! –

+0

私は数日前からさまざまな修正を探していますが、/ etc/ssh/sshd_configの "UsePAM yes"はまさに私が見逃していたものです。どうもありがとうございます! –

関連する問題