恐怖のFork爆弾 in Xサーバー with VSCode
サーバー周りの作業は危険がいっぱい☆
予告通りにフォーク爆弾(笑)の記事です、ハイ。土日にお仕事が入ろうがお薬で筋肉痛だろうが書いちゃうのです。
他にも色々書きたいものがいっぱいですからね!
無知なのに 無茶するから…
事の発端
お勉強を兼ねているので、そうは言っても感はあるのですがね。だいぶ前にPythonでDiscordのBOTを作成したのですが、そいつの改変作業をしていた時、突然ヤツは発生しました。瞬く間にプロセスを埋め、一切のSSH接続すら「させねーよ!?」なアイツ…そう、俗に言う「Fork爆弾」です。
起きてから「なんだこれ!なんだこれ!!」っつって調べて初めて知ったワードなのはヒミツ
一旦こいつが発生してしまうと、その後は日を置こうが何度アクセスしようが…
-bash: fork: retry: 子プロセスがありませんヤッベええええ
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: 子プロセスがありません
-bash: fork: retry: リソースが一時的に利用できません
ネット調べによれば、上位権限の別アカウントでログインして、悪さしているプロセスをガンガンkillしていくか、サーバー自体を再起動するしかないそうです。
発生させちゃったのはXサーバーなんですが(ほんとすんません!!)、お問い合わせで相談をしたところ、ものすごく丁寧にご対応いただけました……テュキ…一生ついていきます……(
同じ轍はふむまい
何度もご迷惑をかけるものでもありません、まずは原因究明です。
今までは全然Fork爆弾なんて起きなかったのですが、そういえばデバッガーを使用せず逐一プロセスIDを調べてはkillしていました。
いちいち調べんのめんどくせーな
↓
killallなるものがあるのか…なぜかうまく使えない!!(無知ってこわい)
↓
デバッガー…そうかデバッガーって使い方よくわからんかったけど再起動楽ちんにするための機能だったのか(絶対それだけではない)
みたいな経緯を経て、しかるべき設定もせずほいほいデバッガーの再起動を押しまくってトライアンドエラーを行っていたのが原因だったのかな?と思っています。
もしやこれでは…?
VS Code で Python をデバッグする
こちらの記事に記載されているコードの
"request": "launch",
を
"request": "attach",
に変えれば既に実行しているプロセスでやってくれるっぽい…?
なので"request": "launch",に戻した後に再生と再起動を押していくと
![]() |
初期設定では"configurations":は 空っぽ でしてよ奥さん… |
ふははは、これで解決だと思ったか、ばかめ!
よくわからんけどちゃんと設定もしたし「これで解決かな?」と思ったら、「Failed to attach」というエラーが出てデバッガー起動ができなくなりました…なので"request": "launch",に戻した後に再生と再起動を押していくと
![]() |
なんか増えてない^p^?? |
えええ、どうなっとん…
すまない、今の俺にはこれが限界のようだ…
なんかよくわからないですが、とりあえず理解が深まるまでは従来のプロセスID調べてkillで対処しようかと思います。デバッガーは頭の悪いゼラチンには…オーバーテクノロジーだったようです…( ˘ω˘ )
プロセスエクスプローラーはリアルタイムでプロセス監視してるっぽいので、まじでdiscord.pyのコード改変の仕方の問題な気がしてきましたが、そのうちデバッガー正常に扱える術を発見できたらこの記事に追記しようと思います…
VSCodeでPerlデバッグ
言語違うんでプラグインも違うんすけど、なんかこちらの記事の「プロセスfork」っちゅう項目がヒントになりそう…今回エディタ落としても開発用BOT止まんなかったしな…