~からhttps://stackoverflow.com/a/17483998/156458
制限を65535に上げるにはrootが必要ですが、rootとしてプログラムを実行したくありません。したがって、制限を増やした後は、現在のユーザーに戻す必要があります。
これを行うには、次を実行します。
sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"
~から次の方法でコアファイルの制限サイズが変更されないのはなぜですか?、次のことをしたいと思います。
sudoが実行するシェルに新しい制限値を使用してコマンドを入れる必要がありますか?
例えば
$ sudo sh -c "ulimit -c 1024 && sleep 100" ^\Quit $ ls core
ulimit -c 1024
スーパーユーザー権限が必要で、sleep 100
必須ではありません。
sleep 100
スーパーユーザー権限ではなく変更された制限値でコマンドを実行するようにコマンドを変更するにはどうすればよいですか?
修正する:
私はHaukeの再生でコマンドを試しましたが、失敗した理由がLinuxで機能していなかったためと疑い、まだ彼の意図が何を使用しているのか疑問にsudo -c
思いました。sudo -c
$ sudo sh -c "ulimit -c 1024 && sudo -u nobody -c \"sleep 100\""
[sudo] password for t:
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
次の2つのコマンドを試しましたがsleep 100
。なぜ?
$ sudo bash -c "ulimit -c 1024 && exec su $LOGNAME && sleep 100"
$ sudo bash -c "ulimit -c 1024 && exec bash -c \"su $LOGNAME; sleep 100\" "
$
次のコマンドはコアファイルを生成します。しかし、sudo
2番目は基本的に制限をクリアしませんか?sudo
実行環境を常にまたは常に清掃していると聞きました。
$ ulimit -c
0
$ sudo sh -c "ulimit -c 1024 && sudo -u nobody sleep 100"
私が見つけたhttp://jdebp.eu./Softwares/nosh/guide/ulimit.html~からhttps://unix.stackexchange.com/a/446619/674とシェルスクリプトを使って同様のことを達成する方法が疑問に思います。:
ほとんどのシェルには接続されておらず、追加の対話型機能を持つulimitコマンドが組み込まれています。組み込みコマンドについては、各シェルのマニュアルを参照してください。このコマンドは、exec(1) および nosh(1) でより一般的に使用されます。
ありがとうございます。
ベストアンサー1
sudo sh -c "ulimit -c 1024 && sudo -u nobody -c \"sleep 100\""