1
2

プロセスって何?聞いたことあるけどよくわからない人へ

Last updated at Posted at 2024-06-03

はじめに

皆さんはプロセスについてどれくらい知っていますか?
業務で耳にすることはあっても、その実態が掴めずにいる方もいるのではないでしょうか?

私は2020年の4月に異業種からエンジニアへ転職して約4年ほどバックエンド開発に携わってきました。その中で、「プロセス」、「PID」、「プリフォーク」などのキーワードを耳にしましたが、雰囲気で理解している程度でした。

そんな時、PHPerKaigi2024で「サーバーとは何かを理解して、コンテナ1つで実行しよう」と言う登壇を拝見し、「プロセス?スレッド?よくわかんねぇけどもっと知りたい!」と思いました。そして、プロセスの解像度を上げる為に学習を決意しました。

その後、良い本を探していたところ「なるほどUnixプロセス ― Rubyで学ぶUnixの基礎」という本に出会いました。読んでみると他の人にもお勧めしたいと感じる本だったので、学んだことの一部を紹介し、プロセスの理解を深める手助けになればと思います。

実際に動かして試してみる

コンテナの外
docker run --rm --name ruby -it ruby /bin/bash

rubyのコンテナを立てて、bashを起動します。

コンテナの中
irb

irbInteractive Rubyの略で、ターミナル上でRubyを1行ずつ実行できるようになります.

irb
puts Process.pid

このコマンドでプロセスID(PID)を出力します。あとで確認するために、このPIDを覚えておいてください。

次に、別のタブや別ウインドウで同じrubyコンテナにアタッチしてみましょう。

コンテナの外
docker exec -it ruby bash

アタッチしたら、現在のプロセスを表示してみます。

コンテナの中
ps -A
ps -A の出力
  PID TTY          TIME CMD
    1 pts/0    00:00:00 bash
    7 pts/0    00:00:00 irb
    9 pts/1    00:00:00 bash
  394 pts/1    00:00:00 ps

irbがPID7で動いており、puts Process.pid で出力されたPIDと一致することが確認できます。

まとめ

手順は簡単でしたね。このように、実際に動かしてみることで「こうなるんだ」という感覚を掴みつつプロセスへの理解を深めることができます。全てを完全に理解したわけではありませんが、この本を通じてプロセスというものの解像度が上がったと感じています。

「プロセスよくわかんないけど理解りてぇ〜」という人には非常にお勧めできる本です。興味を持った方はぜひ読んでみてください。

ちなみに以下のようなことが学べると書いてあります。
どれか一つでも当てはまったらぜひ!

  • ファイルディスクリプタって何? どう動いているの?
  • デーモンプロセスが必要な場合と、そうではない場合の判断の仕方
  • fork(2)を使って子プロセスを生成する、とは?
  • プロセスを終了させる方法が4つもある
  • スクリプトから外部コマンドを実行する際の懸念事項とその回避方法
  • プロセス生成のコストと落とし穴について
  • 見よう見まねじゃない、シグナルハンドラの定義の仕方
  • ResqueとUnicornの内部ではUnixプロセスをどう扱ってるか

補足

私は普段PHPを触っていますが、Rubyで書かれていることに対して特に読みにくいと感じることはありませんでした。むしろ、少しRubyのコードに触れられるので一石二鳥かもしれません。

ちなみに、rubyのコンテナはDebian系のディストリビューションなので、パッケージはaptで追加します。

apt-get update

その後に、

apt-get install man

すると良いです。コンテナで簡単なコード書くことがあると思うので、vimとコマンドのマニュアルを見る為のmanは入れておくと便利だと思います。

この記事を通じて、プロセスについての理解が深まり、興味を持っていただければ幸いです。

ちなみに英語だとタダで読めるっぽいです。
https://workingwithruby.com/

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2