プログラミング素人のはてなブログ

技術屋の末端。プログラミングも電気回路も専門外です。 コードに間違いなど見つけられたら、気軽にコメントください。 VC#、python3、ラズパイ始めました。

ラズパイを終夜運転する他、ラズパイでも使えるLinuxの基本コマンド

twitter.com

このブログでも紹介している、というか現在の私のメインワークのtwitter botですが、ラズパイで運用しています。
ラズパイはそれ自身もRaspbianというLinux OSの一種なので、これ自身でプログラミングからサーバーとしてまで運用できます。しかし、windowsのPCをつかうほうが何かと開発環境として高級で、PCとしての処理能力も高いことは言うまでもありません。
したがって、Windows上で作成したプログラムをssh(teratermなど)でラズパイに転送し、pythonプログラムを走らせるということを行っています。

ここで、sshpythonプログラムを走らせて、そのままWindowsをログオフすると、プログラムが止まってしまいます。
これを、pythonを終了せずに接続を切りたいと思っても通常は出来ません。
これは親子関係にあるプロセスは親(ここではwindowsteraterm)が切られると、子も切られるという原則に従うからです。
ちょっとこれは、Linux素人がラズパイを使う上で躓くポイントだと思うので、その他のLinuxの基本コマンドとともにまとめておきたいと思います。

まず、Windous(もしくはssh)をログオフしてもpythonを残しておく方法です。teratermなどから

$ nohup python3 *****.py bg

として実行します。($ ははじめからsshコンソールに表示されていますので、nohup以下を入力します。)
これで、teratermを切断しても、Windowsをログオフしてもプロセスが残ります。

次に、止めるときはpsコマンドでプロセス番号を確認して、killします。

$ ps aux

f:id:s51517765:20171225223053j:plain

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で起動します。
f:id:s51517765:20171225224229j:plain

反対にアップロードは、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]