私は自分で作成したフォーク爆弾の被害者でしたが、ログオフする以外にそれを止める方法がわかりませんでした。(ProcMon などのツールは、新しく開始されたプロセスよりも先に進めるには遅すぎました)。
将来的に「制御下」に保つために、MSYS2 (MinGW32) システム内のユーザー プロセスの最大数を 256 から 50 に減らしたいと考えています。
これらのコマンドは私の.bashrc:
ulimit -S -c 0 # Don't want coredumps.
ulimit -S -u 50 # limit 50 processes
export FUNCNEST=44 # limit function recursion
そして、次のような端末出力が得られます:
++ ulimit -S -c 0
++ ulimit -S -u 50
bash: ulimit: max user processes: cannot modify limit: Invalid argument
++ export FUNCNEST=44
++ FUNCNEST=44
最初の制限コマンド(コアダンプのサイズ)は機能します。最大ユーザープロセス数失敗します。
私は管理者グループのメンバーです。私のシステムにはSUやSUDOコマンドがなく、rootとしてログオンする方法(または切り替える方法)もわからないので、これで十分な権限があることを願っています。/etc/セキュリティ/システム全体の制限のディレクトリ。MSYS2 は Windows XP SP3 にインストールされています。
+ id User
uid=197614(User) gid=197121(None) groups=11(Authenticated Users),197121(None),197616(HelpLibraryUpdaters),544(Administrators),545(Users)
何が間違っているのか、または回転するシェルの数を制限する方法を説明していただけますか?
あるいは、進行中のフォーク爆弾を停止する方法をお勧めしますか?
これがulimit -a表示:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) 2040
cpu time (seconds, -t) unlimited
max user processes (-u) 256
virtual memory (kbytes, -v) unlimited
これがulimit -Ha表示:
+ ulimit -Ha
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 3200
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) 256
virtual memory (kbytes, -v) unlimited
これがulimit -Sa表示:
+ ulimit -Sa
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) 2040
cpu time (seconds, -t) unlimited
max user processes (-u) 256
virtual memory (kbytes, -v) unlimited