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

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、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]