LoginSignup
28
19

More than 3 years have passed since last update.

あれ・・・実行しているプロセスが表示されない?の理由

Posted at

はじめに

ConohaVPSなどで,VPSを借り,自分のPCのVSCodeなどからSSHでアクセスをすることができます.
このとき,VSCodeの端末とシェルが,インターネットを通じてVPSの端末につながることになります.

このとき,例えば

$ nohup python main.py &

のnohupコマンドを用いることで,VPSのバックグラウンドで処理を実行し,かつVSCode側の端末を閉じても処理を継続することができます.

VSCode側を閉じる前は
bash
$ ps

psコマンドで,pythonが実行されていることが確認できます.

問題点

VSCode側の端末を閉じた後,再びVPSにつなぎ直すと

$ ps
  PID TTY          TIME CMD
28883 pts/0    00:00:00 bash
29006 pts/0    00:00:00 ps

上記のようにPythonの実行コマンドが消えています・・・
このとき,自分は「端末を閉じてしまったからnohupコマンドでもプロセスが落ちてしまうんだ・・・」と思っていました><

原因

VSCode側の端末を新しく開いているため,この新しい端末のシェルから発生したプロセスのみ,ps単体のコマンドでは表示されます.
そのため,閉じてしまった端末でnohup実行していたプロセスは,端末を失った状態で実行されておりpsでは表示されませんでした.

$ ps aux

と打つと,

  • a 自分以外のユーザのプロセスも表示
  • x 今の端末以外のプロセスも表示
  • u ユーザーフォーマットで表示

とより詳細な情報が表示されます.

$ ps aux | grep python
root       652  0.0  0.0 267080     4 ?        Ssl  Apr16   0:00 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
root       952  0.0  0.0 424304   280 ?        Ssl  Apr16   0:09 /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P
root     28572 31.3 32.7 538180 160184 ?       R    07:47  17:45 python make_plot_chart_about_fail.py
root     28989  0.0  0.1  12108   972 pts/0    R+   08:43   0:00 grep --color=auto python

上記のように,auxの場合でpythonを実行すると,きちんとpythonコマンドがバックグラウンドで端末を失いながら,頑張っていました><
ありがとう・・・ありがとう・・・(藤岡弘)

まとめ

  • ps auxのほうが情報量が多い(ほかのプロセスや詳細情報を知りたいなど,時と場合ですね)
  • Linuxの知識をもっとつけよう・・・!

参考文献

28
19
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
28
19