私はubuntu 12.04を使用していて、ulimit -nを実行して1024を表示しています。開いているファイルの制限を1024から65535に増やしたいので、次のコマンドを試しました。
Sudo ulimit -n 65535
しかし、私は次のエラーが表示されます:
Sudo: ulimit: command not found
ファイル制限を1024から65535に増やす方法は?任意の助けをいただければ幸いです。
ulimit
はcd
のようなシェル組み込みであり、別個のプログラムではありません。 Sudo
は実行するバイナリを探しますが、ulimit
バイナリがないため、エラーメッセージが表示されます。シェルで実行する必要があります。
ただし、制限を65535に上げるにはrootである必要がありますが、おそらくプログラムをrootとして実行したくないでしょう。そのため、制限を引き上げた後、現在のユーザーに切り替える必要があります。
これを行うには、次を実行します。
Sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"
そして、ルート権限なしで、制限が引き上げられた新しいシェルを取得します。 exec
により、新しいシェルはプロセスをSudo
特権に置き換えます。そのため、シェルを終了した後、誤ってrootになってしまうことはありません。
過去にこのような問題に対処しなければなりませんでした。シェルスクリプトにはsetuidメカニズムがないため(安全でないため)、setuidを使用して単純なCラッパーを作成するだけで十分であり、システムコールを使用して実行中のプロセスのulimitsを変更してから特権を削除してシェルを実行しますスクリプト。