このブログでも紹介している、というか現在の私のメインワークのtwitter botですが、ラズパイで運用しています。
ラズパイはそれ自身もRaspbianというLinux OSの一種なので、これ自身でプログラミングからサーバーとしてまで運用できます。しかし、windowsのPCをつかうほうが何かと開発環境として高級で、PCとしての処理能力も高いことは言うまでもありません。
したがって、Windows上で作成したプログラムをssh(teratermなど)でラズパイに転送し、pythonプログラムを走らせるということを行っています。
ここで、sshでpythonプログラムを走らせて、そのままWindowsをログオフすると、プログラムが止まってしまいます。
これを、pythonを終了せずに接続を切りたいと思っても通常は出来ません。
これは親子関係にあるプロセスは親(ここではwindowsやteraterm)が切られると、子も切られるという原則に従うからです。
ちょっとこれは、Linux素人がラズパイを使う上で躓くポイントだと思うので、その他のLinuxの基本コマンドとともにまとめておきたいと思います。
まず、Windous(もしくはssh)をログオフしてもpythonを残しておく方法です。teratermなどから
$ nohup python3 *****.py bg
として実行します。($ ははじめからsshコンソールに表示されていますので、nohup以下を入力します。)
これで、teratermを切断しても、Windowsをログオフしてもプロセスが残ります。
次に、止めるときはpsコマンドでプロセス番号を確認して、killします。
$ ps aux
pi Userでpython3 のプロセスがあり、プロセスIDが22150であることが分かります。
$ kill -9 ****
ここでは kill -9 22150と入力します。
もう一度、psコマンドを呼ぶと、プロセスが消えていることが確認できるはずです。
nohupモードで走らせたpythonプログラムでは、print()やエラーメッセージなど、コンソール画面の出力は"nohup.out"に出力されます。
あとでこのnohup.outを確認することで動作結果を確認することができます。
カレントフォルダにあるファイルの一覧はlsで表示されます。
$ ls
テキストファイルはnanoというアプリで表示/編集できます。
(nanoでの編集はめんどくさいのであまり使ったことはありません)
$ nano nohup.out
nanoの表示の終了は「ctrl」+「x」
Linux標準のnanoでもテキストの確認はできますが、Windowsにダウンロードするほうが見やすいです。
teratermのSCPという機能を利用します。ファイルメニューの¥SSH SCPで起動します。
反対にアップロードは、teratermのコンソール画面にドラッグ&ドロップでできます。
その他、よく使うコマンドを一気に紹介。
カレントディレクトリの表示
$ pwd
ファイルの削除(警告なし)
$ rm -f ***
ラズパイのシャットダウン
$ sudo shutdown -h
ラズパイの再起動
$ sudo shutdown -r now
※2018/01/29 追記
ラズパイからYes or Noを訊かれたとき"大文字のY"だったら、そのまま空欄でエンターでも"Y"と判断される。
Do you want to continue? [Y/n]