<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ タグ「コマンドヘルプ」を含む投稿［6件］ - でんげき☆ Network Service ]]></title>
	<link>https://room.dengeki.jp/tegalog.cgi</link>
	<description><![CDATA[ Raspberry Pi 4 で運用実験中 ]]></description>
	<language>ja</language>
	<copyright>Copyright 2025</copyright>
	<lastBuildDate>Thu, 05 Jun 2025 14:05:45 +0900</lastBuildDate>
	<generator><![CDATA[ <!-- てがろぐ Version: -->Powered by <a href="https://www.nishishi.com/cgi/tegalog/" rel="noreferrer" target="_top">てがろぐ</a> Ver 4.4.5 ]]></generator>
	<!-- BEGIN ENTRIES -->
	<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ Android と PC のための adb メモ ]]></title>
	<description><![CDATA[ Android と PC のための adb メモ<br /><img class="embeddedimage " width="240" height="240" src="https://room.dengeki.jp/images/20220321135913-admin.png" alt="20220321135913-admin.png"><br />　<br />Android Debug Bridge（adb）なるものがあります　Debug Bridge なんて聞くと「なんか面倒くさそうだな…」って思いがちだけど…一般利用者的な使い方でも「知っておくと得をする」ような便利な機能があるっていうか忘れがちな使い方をまとめて忘れ物防止メモって感じで書き留めておきます<br /><br />　　：<br /><br />一般的には Android 端末と PC を USB ケーブルで繋ぎます　なんかここんとこ Wi-Fi を使ってケーブル無しで繋ぐ手法が確立されてきてるようだけど…その話は後述って感じで<br /><br /><img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591336-admin.png" alt="2022032113591336-admin.png"> <img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591335-admin.png" alt="2022032113591335-admin.png"><br />まずはスマホ側の設定ってことで「設定」メニューから「システム」→「端末情報」と進みます　※機種により若干の操作法の違い有り<br /><br /><img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591334-admin.png" alt="2022032113591334-admin.png"><br />その中にある「ビルド番号」を連打する<br /><br /><img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591333-admin.png" alt="2022032113591333-admin.png"><br />既に有効にしてあったんでアレだけど…これで「開発者向けオプション」を有効にできます<br /><br />※機種によっては「設定」メニューからいきなり「デバイス情報」って入る場合や「詳細設定」の中に入っている場合とかがあるようです　まぁその辺はそれっぽい項目を選びつつ「ビルド番号」を探し出してそれを連打してください（汗<br /><br /><img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591332-admin.png" alt="2022032113591332-admin.png"> <img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591331-admin.png" alt="2022032113591331-admin.png"><br />次に「設定」メニューから「システム」→「詳細設定」と進むと「開発者向けオプション」が現れます　※これも機種によって進むべきメニュー項目が違う場合があるんで…あちこち探して辿り着いてください（汗<br /><br /><img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591330-admin.png" alt="2022032113591330-admin.png"> <img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591329-admin.png" alt="2022032113591329-admin.png"><br />「開発者向けオプション」内にある「USBデバッグ」をオンにして許可する　これで端末側の設定は概ね完了です<br /><br />　　：<br /><br />お次は PC 側の設定ってことで…本来 adb ってやつは Android Studio って開発ツールに含まれているものなんでそれをセットアップする必要があるんだけど単に adb だけを使いたい人向けにシンプルなパッケージが用意されているんでそれを入れることにします<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591328-admin.png" alt="2022032113591328-admin.png"><br /><span class="decorationC" style="color:green;">sudo apt install adb</span><br /><br />なお動作検証っていうか…基本的に <a class="url labeledlink" href="http://ubuntutym2.u-toyama.ac.jp/xubuntu/20.04/release/" rel="noopener noreferrer" target="_blank">xubuntu 20.04 LTS</a> を USB メモリに書き込んだものをお試しモードっていうかライブ起動して諸々を試しています　画像の撮り忘れなんかで…本番環境の <a class="url labeledlink" href="https://ubuntu-mate.org/download/" rel="noopener noreferrer" target="_blank">Ubuntu MATE 20.04 LTS</a> を使う場合もありますがその辺はご了笑ください汗<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591327-admin.png" alt="2022032113591327-admin.png"><br />インストールが完了したら先ほどの「USBデバッグ」をオンにした Android と PC を USB ケーブルで繋ぎ <span class="decorationC" style="color:green;">adb start-server</span> してみましょう　daemon started successfully と出れば成功です<br />この操作は省略してもいいのですが…接続した Android 機と PC とのやりとりを管理するデーモン（adbd）の起動を明確に確認できるので知っておいていいと思います<br />ちなみにデーモン（adbd）を終了する際には <span class="decorationC" style="color:green;">adb kill-server</span> します　いろいろな端末を繋ぎつつ作業してると稀に動作が不安定になる場合とかあるようなので…いったんデーモンを終了させて再び起動させるとうまくいく時があります<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/2022032113591326-admin.png" alt="2022032113591326-admin.png"><br />そんな adb ですが 1 台の PC に複数台の Android を接続することができます　接続した Android(のシリアル) は <span class="decorationC" style="color:green;">adb devices</span> で確認することができます<br /><br /><img class="embeddedimage " width="736" height="605" src="https://room.dengeki.jp/images/2022032113591325-admin.png" alt="2022032113591325-admin.png"><br />そのシリアルを adb の -s オプションを使って指定するとその Android 機を操作できます　画像はそれぞれの Android 内の proc フォルダ内にある cpuinfo ファイルの末尾 10 行くらいを表示させた一例です<br />なお PC に 1 台だけ Android 機を接続して使用する際にはこの -s オプションは不要です　今後は説明の簡略化っていうか 1 台だけの接続にして -s オプションは省略した感じでいきます<br /><br />　　：<br /><br />それでは adb のよく使うコマンドの説明をちょびっとだけ…<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591324-admin.png" alt="2022032113591324-admin.png"><br /><span class="decorationC" style="color:green;">adb shell</span> で接続した Android 機にログイン(？)できます　コマンドライン上の操作で Linux 系のコマンドが使えます<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591323-admin.png" alt="2022032113591323-admin.png"><br /><span class="decorationC" style="color:green;">adb shell コマンド名</span> だと PC 側の端末上で接続した Android 機のコマンドを実行できます　実行結果を PC 側のファイルにリダイレクトしたりパイプに送り込んだりできます<br />ちなみにここで試している pm コマンドはパッケージ・マネージャ系のコマンドですね　これに list package なる引数を与えて起動するとその端末にインストールされているアプリの一覧を確認できます　ここではその結果から grep を用いて必要な行だけ抽出して表示させています<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591322-admin.png" alt="2022032113591322-admin.png"> <img class="embeddedimage " width="1442" height="1118" src="https://room.dengeki.jp/images/2022032113591321-admin.png" alt="2022032113591321-admin.png"><br />パッケージの一覧を確認できたってことで…それじゃ Android 機からファイルを取ってくる adb pull を使って apk(アプリ) を抜いてみましょう<br />目的とするアプリの ID(？) を指定することで apk ファイルを取得できます　これはブラウザを使い <a class="url labeledlink" href="https://play.google.com/store/apps" rel="noopener noreferrer" target="_blank">Google Play</a> で目的のアプリを表示させたアドレス欄にも表示されているんでその辺を参考にして grep で絞り込むといいでしょう<br />そうして出てきた中から <span class="decorationC" style="color:red;">/data/app/〜/base.apk</span> を選択してコピーして <span class="decorationC" style="color:green;">adb pull /data/app/〜/base.apk</span> として実行すると PC 側に base.apk として持ってこれます<br /><br />この apk ファイルはそのまま Android 機にインストールすることができます　インストールする場合は目的の Android 機に繋ぎ替えた後に <span class="decorationC" style="color:green;">adb install base.apk</span> とすれば ok です<br /><br /><img class="embeddedimage " width="800" height="1280" src="https://room.dengeki.jp/images/2022032113591320-admin.png" alt="2022032113591320-admin.png"> <img class="embeddedimage " width="800" height="1280" src="https://room.dengeki.jp/images/2022032113591319-admin.png" alt="2022032113591319-admin.png"><br />モノは試しに <a class="url labeledlink" href="https://www.amazon.co.jp/gp/product/B01J6RPOJY" rel="noopener noreferrer" target="_blank">Fire HD 10 タブレット (10インチHDディスプレイ) 32GB - Alexa搭載</a> にインストールしてみました　もともと Amazon apps 版の <a class="url labeledlink" href="https://fairydoll.jp/" rel="noopener noreferrer" target="_blank">フェアリードール</a> が入ってたんだけど…それとは別にインストールすることができました<br />Amazon Fire には Google Play が入ってないんだけどこの手法を使えばアプリのインストールが可能です…が多くの場合ハードやセキュリティの制約などで入れられないことが多いです　まぁどうしてもの非常時に入ったらイイナ！って感じで覚えておくといいかもです（汗<br /><br />　　：<br /><br />アプリのバックアップの別の手法として <span class="decorationC" style="color:green;">adb backup アプリID</span> ってのもあるようですね　ただこれは機種ごとのセキュリティ設定が強く影響するのか…同じアプリでも G 社の Android だとうまくいくけど S 社のそれだとうまくいかないなんてことがあるようです<br />まぁもしうまくバックアップすることができたとして…出来上がった *.ab ファイルを展開するツールが存在するっぽい？<br /><a class="url labeledlink" href="https://github.com/nelenkov/android-backup-extractor" rel="noopener noreferrer" target="_blank">android-backup-extractor</a> ってものらしく <a class="url labeledlink" href="https://github.com/nelenkov/android-backup-extractor/releases" rel="noopener noreferrer" target="_blank">abe.jar</a> ってのがそれらしいです　Java 環境が必要で <span class="decorationC" style="color:green;">java -jar abe.jar unpack 解凍元.ab 解凍先.tar</span> で展開できるようです<br /><br />　　：<br /><br />Android 機のスクリーンショットを PC で撮ってそのファイルを PC に保存するなんてこともできるようです<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/2022032113591311-admin.png" alt="2022032113591311-admin.png"><br />例えば <span class="decorationC" style="color:green;">adb exec-out screencap -p &gt; ss$(date +%Y%m%d%H%M%S).png</span> なんてすると実行した日時を付加した ss が PNG で PC に直接保存できます　スマホの「電源 + 音量ダウン」のボタン同時押しがそれなりに使いにくいんで…微妙なタイミングを要するスクリーンショットを撮りたい時などに重宝すると思います<br /><br />　　：<br /><br />Android 機の画面を PC 上で表示させられる scrcpy ってのがあるらしいです　これは <span class="decorationC" style="color:green;">sudo apt install scrcpy</span> で入れることができるようだけど…<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591318-admin.png" alt="2022032113591318-admin.png"><br />我が家の環境ではエラーが出て動きませんでした<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591317-admin.png" alt="2022032113591317-admin.png"><br />それじゃ別の手法で！ってことで snap 版の scrcpy を <span class="decorationC" style="color:green;">sudo snap install scrcpy</span> で入れてみました　ちなみに apt で入れる scrcpy の方が PATH の優先順位が高いんで <span class="decorationC" style="color:green;">/snap/bin/scrcpy</span> って感じのフルパス指定で起動してみます<br /><br /><img class="embeddedimage " width="1280" height="800" src="https://room.dengeki.jp/images/2022032113591316-admin.png" alt="2022032113591316-admin.png"><br />snap 版の scrcpy だとうまく動きました！　思ってたより動きもスムーズでいい感じです！(&gt;_&lt;)ｗ<br />そんな snap 版の scrcpy を毎回毎回フルパス指定で起動するのも面倒だな…って事なんで snap の別名設定を使ってみることにします<br /><br /><img class="embeddedimage " width="579" height="412" src="https://room.dengeki.jp/images/2022032113591315-admin.png" alt="2022032113591315-admin.png"><br />設定は <span class="decorationC" style="color:green;">sudo snap alias 元のコマンド名 新しいコマンド名</span> でできるようなんで <span class="decorationC" style="color:green;">sudo snap alias scrcpy Scrcpy</span> って感じで頭文字を大文字にしてみました　エイリアスを確認する際には <span class="decorationC" style="color:green;">snap aliases</span> とするようです<br /><br />　　：<br /><br />同様に Android 機の音声を PC 上で再生させられる sndcpy ってのがあるらしいです　これは <a class="url labeledlink" href="https://github.com/rom1v/sndcpy" rel="noopener noreferrer" target="_blank"> rom1v / sndcpy</a> の Get the app から sndcpy-v1.1.zip (※20220321現在) を落としてきて展開して…その中の sndcpy (シェルスクリプト) を実行すればいいようです<br /><br /><img class="embeddedimage " width="1280" height="800" src="https://room.dengeki.jp/images/2022032113591314-admin.png" alt="2022032113591314-admin.png"><br />先ほどの Scrcpy と sndcpy を同時に使ってみた例　音声は 0.5 秒くらい(？)遅れてきてるみたいですね　あーあと sndcpy を使用する場合には PC に vlc (メディアプレイヤ) を入れておく必要があるようです<br />スマホとかの小さい画面とショボいスピーカーの音声を PC 側に出すと見やすくて音もよくてとてもゴキゲンです！　追加投資は USB ケーブルだけ！って手軽さがいいですね！<br /><br />　　：<br /><br />そんな USB ケーブルで PC と Android 機を繋ぎっぱなしってのもなんか邪魔くさいんで…その辺をネットワーク (Wi-Fi等) でどうにかする手法があるようです　<span class="decorationC" style="color:red;">※使用するにあたり…最初の設定段階では USB ケーブルで繋いでおく必要があります</span><br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/2022032113591313-admin.png" alt="2022032113591313-admin.png"> <img class="embeddedimage " width="1080" height="1839" src="https://room.dengeki.jp/images/2022032113591312-admin.png" alt="2022032113591312-admin.png"><br />まず <span class="decorationC" style="color:green;">adb tcpip 5555</span> で listen するポートを 5555 に設定します　ポート番号は 5555～5585 の範囲で奇数番号のポートが使用できるらしい？<br />次に <span class="decorationC" style="color:green;">adb connect 192.16x.x.x32</span> で Android 機の IP アドレスを指定して接続します　Android 機の IP アドレスは「設定」→「ネットワークとインターネット」→「Wi-Fi」→「接続済みのAP」→「詳細設定」等で確認できます　※使用機種によりメニュー構成が若干違います<br /><br />connected to 192.16x.x.x32:5555 などと表示され接続したら…この時点で USB ケーブルを抜いても ok です<br />あとは adb shell なりの adb コマンドをネットワーク経由で使用できます<br /><br />　　：<br /><br />さらに最近では最初からネットワークで全てが完了する「ワイヤレス デバッグ」も使用できるようになりつつあります　<span class="decorationC" style="color:red;">※ Android OS 11 以降で adb も新しいものが必要になります</span><br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202203211359136-admin.png" alt="202203211359136-admin.png"><br /><span class="decorationC" style="color:green;">sudo apt install adb</span> で入れたものは Ver. 1.0.39 で…これは古いので使えません　じゃぁどうしよう？ってことで…それじゃ Android Studio を入れてみましょう<br /><br /><img class="embeddedimage " width="1120" height="819" src="https://room.dengeki.jp/images/202203211359135-admin.png" alt="202203211359135-admin.png"> <img class="embeddedimage " width="1120" height="819" src="https://room.dengeki.jp/images/202203211359134-admin.png" alt="202203211359134-admin.png"><br /><a class="url labeledlink" href="https://developer.android.com/studio" rel="noopener noreferrer" target="_blank">Android Studio のダウンロードページ</a> のダウンロードボタンを押下して…お決まりの了解したぜ！チェックした後にダウンロードします　ダウンロードしたファイルを解凍して <span class="decorationC" style="color:green;">android-studio/bin/studio.sh</span> を実行するとインストールが開始します　本気で使う気がないのなら…まぁこの辺は適当でいいと思います（汗<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202203211359136-admin.png" alt="202203211359136-admin.png"><br />標準的なインストールを行うと ~/Android/Sdk/platform-tools/ の中に adb が用意されるのでこれを使ってみます　Ver. 1.0.41 でした<br /><br /><img class="embeddedimage " width="720" height="1467" src="https://room.dengeki.jp/images/2022032113591310-admin.png" alt="2022032113591310-admin.png"><br />お次は Android OS 11 以降の設定を行います　「設定」→「システム」→「開発者向けオプション」→「ワイヤレス デバッグ」をオンにして…その項目をタップする<br /><br /><img class="embeddedimage " width="720" height="1467" src="https://room.dengeki.jp/images/202203211359139-admin.png" alt="202203211359139-admin.png"><br />タップしたらワイヤレス デバッグの設定に入れるので…「ペア設定コードによるデバイスのペア設定」をタップする<br /><br /><img class="embeddedimage " width="720" height="1467" src="https://room.dengeki.jp/images/202203211359138-admin.png" alt="202203211359138-admin.png"><br />すると必要な情報が表示されるので…これをもとに adb で接続設定していきます　なお古い adb と混同するをアレなんで <span class="decorationC" style="color:red;">~/Android/Sdk/platform-tools/adb</span> って感じのフルパスでコマンドを起動しています<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202203211359133-admin.png" alt="202203211359133-admin.png"><br />先ほど表示されてた IP アドレスとポート番号で <span class="decorationC" style="color:green;">~/Android/Sdk/platform-tools/adb pair 192.16x.x.x31:43015</span> って感じで実行します　するとペアリング・コードを聞かれるのでそれを入力します　※ここでは 226441 でした　これでペアリング設定は完了です<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202203211359132-admin.png" alt="202203211359132-admin.png"> <img class="embeddedimage " width="720" height="1467" src="https://room.dengeki.jp/images/202203211359137-admin.png" alt="202203211359137-admin.png"><br />お次は実際に接続します　これは <span class="decorationC" style="color:green;">~/Android/Sdk/platform-tools/adb connect 192.16x.x.x31:40643</span> って感じで実行します　先ほどのペアリング設定のポート番号とは別のポート番号になるので注意してください<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202203211359131-admin.png" alt="202203211359131-admin.png"> <br />成功すればこれでワイヤレス接続が完了しています　後は <span class="decorationC" style="color:green;">~/Android/Sdk/platform-tools/adb shell</span> するなり色々をネットワーク経由で行えます　少々手順が多くて面倒かなーって思いつつ…まぁ慣れてしまえば USB ケーブルを接続するより楽ちんかなーってイメージです<br />ただし先述の scrcpy や sndcpy は(20220321現在)対応していない感じでした　この辺が早く対応してくれればなーって思います<br /><br />※ 追記 ※<br />テストした環境の PATH 設定の都合で Ver. 1.0.39 の adb が参照されていたので…その辺をどうにかしたら sndcpy は動きました　Android Studio で入れた Ver. 1.0.41 を優先的に使えるよう PATH を以下のように設定しました<br /><span class="decorationC" style="color:green;">export PATH=&quot;/home/$USER/Android/Sdk/platform-tools:$PATH&quot;</span>　※ 標準的(？)な Android Studio のインストールを行った場合<br />一時的な設定ならコマンドラインで上記のように実行するもよし…再起動後とかも永続的に使いたいのであれば ~/.profile を編集して…最終行辺りに上記のパス設定を追加しておくといいでしょう<br /><br />ちなみに scrcpy は apt 版(Ver. 1.12.1)と snap 版(Ver. 1.23)のどちらもワイヤレス環境では動作しませんでした(-_-；)<br /><br />　　：<br /><br />そんなこんなな adb の使い方いろいろでした　他にも音量の操作やら特定のイベントシグナルの送信などなどアプリ開発のデバッグに有用な機能が用意されているのですが…まぁ末端ユーザでは概ね必要のない機能なのでその辺はもっとプロの方が発する情報をご参照くださいってことで <a href="https://room.dengeki.jp/tegalog.cgi?tag=%41%6e%64%72%6f%69%64" class="taglink" title="Android">#Android</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%55%62%75%6e%74%75" class="taglink" title="Ubuntu">#Ubuntu</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%98%e3%83%ab%e3%83%97" class="taglink" title="コマンドヘルプ">#コマンドヘルプ</a> -- Posted by 猫山ぽるか 〔6454文字〕 No.23 ]]></description>
	<link>https://room.dengeki.jp/tegalog.cgi?postid=23</link>
	<guid>https://room.dengeki.jp/tegalog.cgi?postid=23</guid>
	<category>info</category>
	<pubDate>Mon, 21 Mar 2022 13:59:13 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ スケジュール実行 cron は 13 日の金曜日の夢を見るか… ]]></title>
	<description><![CDATA[ スケジュール実行 cron は 13 日の金曜日の夢を見るか？<br /><img class="embeddedimage " width="240" height="240" src="https://room.dengeki.jp/images/20211211080738-admin.png" alt="20211211080738-admin.png"><br />　<br />「〇〇〇〇は△△△△の夢を見るか？」ってフレーズを見かけるとなんかえっちな気分になっちゃう！って光栄マイコンシステムのストロベリーなんとか世代のひいおじいちゃんが云ってたけど…自称：ゆとりのない平成のゆとり的なオレ様的にはしょーみなンてるんか全く意味わかんないですｗ　まじまじｗｗｗ<br />まぁそんな茶番はおいといて…諸々の bot 大好きな人々に愛されるスケジュール実行の cron についての諸々です<br /><br />cron - daemon to execute scheduled commands (Vixie Cron)<br />スケジュールされたコマンドを実行するデーモンって事らしいですね（機械翻訳<br /><br />このスケジュールの確認・設定をするには crontab なるコマンドを使います<br />スケジュールの確認 <span class="decorationC" style="color:green;">crontab -l</span><br />スケジュールの設定 <span class="decorationC" style="color:green;">crontab -e</span><br /><br />設定の初回起動時のみ使用するエディタを聞かれるらしい？　なおこの使用するエディタは以下のコマンドで再設定できるようです<br /><span class="decorationC" style="color:green;">select-editor</span><br /><br />Select an editor. &nbsp;To change later, run &apos;select-editor&apos;.<br />&nbsp; 1. /bin/ed<br />&nbsp; 2. /bin/nano&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="decorationC" style="color:red;">&lt;---- easiest</span><br />&nbsp; 3. /usr/bin/vim.tiny<br /><br />Choose 1-3 <span class="decorationC" style="color:red;">&#91;2&#93;</span>: <br /><br />なんか「<span class="decorationC" style="color:red;">&lt;---- easiest</span>」と「<span class="decorationC" style="color:red;">&#91;2&#93;</span>」ってのが現在設定されているエディタっぽく見えるけどそうじゃなくて…何も入力せずに Enter した時に選択されるデフォルト値を表示しているようです　紛らわしいですね(-_-；)<br /><br />　　：<br /><br />では実際に <span class="decorationC" style="color:green;">crontab -e</span> して設定してみましょう<br />新たなスケジュールを設定する場合は…新しい行として以下の書式を追加します<br /><br /><span class="decorationC" style="color:green;">* * * * * コマンド</span><br /><br />5 個並んだ「*」は順番に… 分 時 日 月 曜日 を指しています<br />「*」は設定可能な全ての値になってるんで…上記の「* * * * * コマンド」は <b class="decorationB">全ての分</b> の <b class="decorationB">全ての時</b> の <b class="decorationB">全ての日</b> の <b class="decorationB">全ての月</b> の <b class="decorationB">全ての曜日</b> って意味となり「毎分(だいたい 0 秒くらい)にコマンドを実行」となります<br />もうちょっと細かく設定した例っていうか…<br /><br /><span class="decorationC" style="color:green;">1 * * * * コマンド</span><br />毎月の毎日の毎時の 1 分にコマンドを実行<br /><br /><span class="decorationC" style="color:green;">1 2 * * * コマンド</span><br />毎月の毎日の 2 時 1 分にコマンドを実行<br /><br /><span class="decorationC" style="color:green;">1 2 3 * * コマンド</span><br />毎月の 3 日の 2 時 1 分にコマンドを実行<br /><br /><span class="decorationC" style="color:green;">1 2 3 4 * コマンド</span><br />4 月 3 日の 2 時 1 分にコマンドを実行<br /><br />曜日は少々特殊な扱いになってるってるんでアレだけど…例えば<br /><span class="decorationC" style="color:green;">* * * * 6 コマンド</span> もしくは<br /><span class="decorationC" style="color:green;">* * * * sat コマンド</span> で毎月の<b class="decorationB">毎土曜日</b>の毎時の毎分にコマンドを実行します<br />数字と曜日は 0=sun, 1=mon, 2=tue, 3=wed, 4=thu, 5=fri, 6=sat, 7=sun に対応しています　大文字小文字は関係ないようです<br /><br />　　：<br /><br />もっと細やかな設定をしてみましょう　例えば勤務時間内にありがちな設定っていうか 8 時から 17 時までの毎時 0 分にコマンドを実行するって例だと…<br /><span class="decorationC" style="color:green;">0 8,9,10,11,12,13,14,15,16,17 * * * コマンド</span><br /><span class="decorationC" style="color:green;">0 8-17 * * * コマンド</span><br />設定したい内容を「,(カンマ)」で区切って列挙するとか「-(ハイフン)」で 8 から 17 までって感じで指定します<br /><span class="decorationC" style="color:green;">0 8-12,13-17 * * * コマンド</span><br />こんな感じで範囲指定を列挙することもできるようです<br /><br />ただし分なり時なりの境い目をまたいで設定する場合には注意が必要です　例えば毎時の 50 分から次の 10 分までって場合だと…<br /><span class="decorationC" style="color:green;">50-10 * * * * コマンド</span><br />この指定では動きません　この場合だと…<br /><span class="decorationC" style="color:green;">50-59,0-10 * * * * コマンド</span><br />こんな感じで途中に「,(カンマ)」を入れて区切ってやらないとダメなようです　ちなみに「,(カンマ)」で列挙する場合には数の大小の順番は関係ないらしいです<br /><br />　　：<br /><br />さらに細やかな設定をしてみましょう　例えば（どのような状況でそのような必要があるのかイマイチ思い浮かばないけど）偶数日（2 で割り切れる日）の 10 時 20 分のみコマンドを実行するって例だと…<br /><span class="decorationC" style="color:green;">20 10 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 * * コマンド</span><br /><span class="decorationC" style="color:green;">20 10 2-30/2 * * コマンド</span><br />こんな感じで指定できます　まぁ「全ての偶数日」って事なんで「2-30/2」なんて指定じゃなく「*/2」でもイケるようです<br />ちなみに「全ての奇数日」ってしたいのあれば「1-31/2」って感じになるみたいです<br />　　：<br /><br />月初にコマンドを実行したい時っていうか月初は 1 日に決まってるんでその辺は簡単だってことで…じゃぁ月末にコマンドを実行したい時はどうしたらいいんでしょうか<br />カレンダーをざっと眺めて 12 ヶ月分の設定を用意しとけば…って「あーでも 2 月の月末は 28 日だけじゃなくてうるう年とかどうしよう！！」ってなるんでもうちょっと手の込んだ設定でどうにかしてみましょう<br />この場合っていうか cron の設定だけでは毎月の月末を判定することはできません　なので<b class="decorationB">コマンド側</b>でその辺をどうにか対処してみます<br /><br /><span class="decorationC" style="color:green;">* * 28-31 * * /usr/bin/test $(/bin/date -d &apos;+1 day&apos; +%d) -eq 1 && コマンド</span><br />いきなりややこしい感じになって申し訳ないかんじで（汗<br />これは月末としてなり得る 28 日 から 31 日にかけて <span class="decorationC" style="color:green;">/bin/date</span> に「翌日」を出力させた後に <span class="decorationC" style="color:green;">/usr/bin/test</span> でそれが「月初」を意味する「1」であるかを判定して「1」であれば <span class="decorationC" style="color:green;">&&</span> でくっつけたコマンドを実行するって意味になります<br /><br />cron 内での使用に限った話じゃないけど…この <span class="decorationC" style="color:green;">&&</span> でコマンドを並べると「直前のコマンドが正常終了した場合に次のコマンドを実行」って動作をします　例えば Web サイトの証明書の更新コマンドを実行して…それが成功して更新コマンドが正常終了した時のみ Web サーバを再起動するなんて処理を 1 行にまとめて書けるんで便利だと思います<br /><br />　　：<br /><br />そんな感じの複雑な判定を求められるスケジュール設定っていうか…少し特別動作をする「曜日」の設定についての注意事項を少々<br />例えば「13 日の金曜日の 0 時 0 分にコマンドを実行」なんてありがちなスケジュール設定をしたいと思いました<br /><span class="decorationC" style="color:green;">0 0 13 * fri コマンド</span><br />これでバッチリだぜ！！(&gt;_&lt;)ｗって思いたい所ですが…これでは思った動作をしません<br />これだと「毎月の 13 日」と「毎月の金曜日」の両方でコマンドが実行されてしまします<br /><br />何となくこれまで見てきた cron の動作的に「設定した項目の全てに合致した AND 的な動作」を期待しがちなんだけど…「日の設定」と「曜日の設定」に関しては「どちらか一方でも合致したら動く OR 的な動作」になってしまうようです　※ただし「*」での設定は除く<br /><br /><span class="decorationC" style="color:green;">0 0 13 * * /usr/bin/test $(/bin/date +\%w) -eq 5 && コマンド</span><br /><span class="decorationC" style="color:green;">0 0 * * fri /usr/bin/test $(/bin/date +\%d) -eq 13 && コマンド</span><br />そんな 13 日の金曜日を判定するには上記のように設定します<br />※ 0=sun, 1=mon, 2=tue, 3=wed, 4=thu, 5=fri, 6=sat, 7=sun<br /><br />前者は<b class="decorationB">毎月の 13 日</b>に <span class="decorationC" style="color:green;">/bin/date</span> を使って曜日を出力させてそれが<b class="decorationB">金曜日かどうか</b>を判定する手法<br />後者は<b class="decorationB">毎月の金曜日</b>に <span class="decorationC" style="color:green;">/bin/date</span> を使って日付を出力させてそれが<b class="decorationB"> 13 日かどうか</b>を判定する手法です<br />後者の手法は「毎月の金曜日」って感じで月に 4〜5 回ほど動作することになって無駄が多いんで…この場合は前者の「毎月の 13 日」って設定の方が好ましいと思います<br /><br />　　：<br /><br />あと cron の設定でミスりやすい点と云うかコマンドや入出力に使用するファイルへのパスですかね<br />コマンドというかスクリプトを作ってる時にありがちなんだけど…どこかのフォルダをカレントディレクトリに設定してスクリプトをテストしていて「できた！さぁ cron に設定しよう！」ってしたら思った動作をしない時があるんですよね<br />これは cron が実行するカレントディレクトリが往々にしてテストしていたフォルダと違う事により指定したファイルを読めない・書けないって事が原因にあるようです<br />なので cron で実行されるコマンド（スクリプト）はフルパスで指定して…かつ読み書きするファイルなどもフルパスで設定する必要があります　うっかりしてるとやらかしがちなミスなんで注意していきタイネ！<br /><br />※なお今回紹介した <span class="decorationC" style="color:green;">/usr/bin/test</span> と <span class="decorationC" style="color:green;">/bin/date</span> のパスは我が家でのもので…環境によって違う場合があるので事前に which コマンド等で調べてから使用してください <a href="https://room.dengeki.jp/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%20%50%69" class="taglink" title="Raspberry Pi">#&#91;Raspberry Pi&#93;</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%98%e3%83%ab%e3%83%97" class="taglink" title="コマンドヘルプ">#コマンドヘルプ</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%63%72%6f%6e" class="taglink" title="cron">#cron</a> -- Posted by 猫山ぽるか 〔3967文字〕 No.12 ]]></description>
	<link>https://room.dengeki.jp/tegalog.cgi?postid=12</link>
	<guid>https://room.dengeki.jp/tegalog.cgi?postid=12</guid>
	<category>info</category>
	<pubDate>Sat, 11 Dec 2021 08:07:38 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ ラズパイの Apache で CPU 情報を取得する vcg… ]]></title>
	<description><![CDATA[ ラズパイの Apache で CPU 情報を取得する vcgencmd が CGI で動かない問題を解決する<br /><img class="embeddedimage " width="240" height="240" src="https://room.dengeki.jp/images/20211205061157-admin.png" alt="20211205061157-admin.png"><br />　<br />Raspberry Pi 4 (ラズパイ) に CPU のクロック周波数や温度やらを取得する vcgencmd なるコマンドが用意されています<br />CPU などなどのクロック周波数を表示<br /><span class="decorationC" style="color:green;">for src in arm core h264 isp v3d uart pwm emmc pixel vec hdmi dpi ; do echo -e &quot;$src:\t$(vcgencmd measure_clock $src)&quot; ; done</span><br />CPU の温度を表示<br /><span class="decorationC" style="color:green;">vcgencmd measure_temp</span><br />利用可能・不可能なコーデックの表示<br /><span class="decorationC" style="color:green;">for codec in H264 MPG2 WVC1 MPG4 MJPG WMV9 ; do &nbsp;echo -e &quot;$codec:\t$(vcgencmd codec_enabled $codec)&quot; ; done</span><br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/20211205053433-admin.png" alt="20211205053433-admin.png"><br />実行例<br /><br />その他にもいろいろあるんで…詳しくは <a class="url labeledlink" href="https://elinux.org/RPI_vcgencmd_usage" rel="noopener noreferrer" target="_blank">解説ページをご覧ください</a> って感じの vcgencmd コマンドなんですが Apache 上の CGI として実行させようとすると失敗するんでその辺をどうにかしてみます<br /><br />まぁ結論から云ってしまうと…グループ video に Apache が実行するユーザである www-data が入っていないから動かないって事らしいです<br /><span class="decorationC" style="color:green;">cat /etc/group | grep video</span><br /><b class="decorationB"><span class="decorationC" style="color:red;">video</span>:x:44:pi</b><br /><br />ちなみに Apache が実行するユーザは /etc/apache2/envvars で指定しているようです<br />export APACHE_RUN_USER=www-data<br />export APACHE_RUN_GROUP=www-data<br /><br />試しにコマンドラインでユーザを www-data に切り替えて確認してみましょう<br /><span class="decorationC" style="color:green;">sudo su -s /bin/bash www-data</span><br /><span class="decorationC" style="color:green;">vcgencmd measure_temp</span><br /><b class="decorationB">VCHI initialization failed</b><br />やはり使えないみたいですね…<br /><br />それじゃグループ video にユーザ www-data を追加していきましょう　まぁコマンド一発なんですが<br /><span class="decorationC" style="color:green;">sudo usermod -aG video www-data</span><br />これで追加できます　確認すると…<br /><span class="decorationC" style="color:green;">cat /etc/group | grep video</span><br /><b class="decorationB"><span class="decorationC" style="color:red;">video</span>:x:44:pi,www-data</b><br />グループ video にユーザ www-data が追加されました<br /><br />それでは再びユーザを www-data に切り替えて確認してみましょう<br /><span class="decorationC" style="color:green;">sudo su -s /bin/bash www-data</span><br /><span class="decorationC" style="color:green;">vcgencmd measure_temp</span><br /><b class="decorationB">temp=28.2&apos;C</b><br />ちゃんと使えるようになりました<br /><br />　　：<br /><br />しかし Apache 上の CGI として vcgencmd コマンドを実行しても「VCHI initialization failed」のエラーが出続けます　なんで？？<br />いろいろと試していて…まぁはっきりとした理由は不明なんですが Apache を再起動させたらこの問題が解決しました<br /><span class="decorationC" style="color:green;">sudo systemctl restart apache2</span><br />これで Apache 上の CGI として vcgencmd コマンドが使えるようになりました　何か別の所に問題があるかもだけど…我が家の環境ではこの手法で解決できました<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202112050534331-admin.png" alt="202112050534331-admin.png"><br />そんな操作の過程のスクリーンショットをぺたり　<del class="decorationD"><small class="decorationT">改竄の余地のないよう作業の過程を全て収録してあります</small></del><br /><br />※参考資料　グループからユーザを削除するには…<br />トラブルの解決中っていうか…いろいろやってて勢い余って必要のないユーザをグループに追加しちゃった！(&gt;_&lt;)ｑって時なんかにグループからユーザを削除する場合には以下のようにします<br />例えばグループ <span class="decorationC" style="color:red;">video</span> に追加されたユーザ <span class="decorationC" style="color:blue;">www-data</span> を削除する場合は<br /><span class="decorationC" style="color:green;">sudo gpasswd -d <span class="decorationC" style="color:blue;">www-data</span> <span class="decorationC" style="color:red;">video</span></span><br />こんな感じに操作します　先ほどの <span class="decorationC" style="color:green;">usermod</span> の場合とユーザ名とグループ名の指定が逆になってるので注意が必要です　なんなら <span class="decorationC" style="color:green;">gpasswd -a</span> でグループにユーザを追加することができるらしいんですが…どっちを使うといいんだろうね<br /><br />　　：<br /><br />さてさてそんな vcgencmd を使ってこんな感じで動かしています<br />&nbsp;<img class="embeddedimage" src="https://yqn.f5.si/pic/pi4.png" alt="(キャプション自動取得対象外)">　その都度都度で PNG 画像を生成しています<br />Web サーバの処理やら画像の生成などで一時的にクロック高めな感じですがアイドル時は 600MHz くらいになってるようです<br />そんなこんなで何かの都合でラズパイを再セットアップした際に悩まないようなメモでした <a href="https://room.dengeki.jp/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%20%50%69" class="taglink" title="Raspberry Pi">#&#91;Raspberry Pi&#93;</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%41%70%61%63%68%65" class="taglink" title="Apache">#Apache</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%98%e3%83%ab%e3%83%97" class="taglink" title="コマンドヘルプ">#コマンドヘルプ</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%43%47%49" class="taglink" title="CGI">#CGI</a> -- Posted by 猫山ぽるか 〔2063文字〕 No.11 ]]></description>
	<link>https://room.dengeki.jp/tegalog.cgi?postid=11</link>
	<guid>https://room.dengeki.jp/tegalog.cgi?postid=11</guid>
	<category>info</category>
	<pubDate>Sun, 05 Dec 2021 05:34:33 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3 ]]></title>
	<description><![CDATA[ ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3<br /><img class="embeddedimage " width="200" height="200" src="https://room.dengeki.jp/images/20211203180402-admin.png" alt="20211203180402-admin.png"><br />　<br />・ラズパイとファイルのやり取りしたい<br />・ラズパイのアプリを PC 上で実行する？<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">ラズパイとファイルのやりとりしたい</b> <b class="decorationB">-----</b><br /><br />ファイル共有に samba サーバを建てるほどじゃないんだけど… PC とちょっとしたファイルのやりとりをしたい！って場面はちょくちょくあると思います　そんな時は scp コマンドを使うと良いみたいです<br /><br />使い方<br /><span class="decorationC" style="color:green;">scp &#91;オプション&#93; コピー元 コピー先</span><br /><br />オプションはいろいろあるけど…よく使うものを勝手に抜粋（汗<br /><span class="decorationC" style="color:green;">-p</span>　元のファイルの変更時間とアクセス時間およびモードを維持します<br /><span class="decorationC" style="color:green;">-r</span>　ディレクトリ全体を再帰的にコピーします<br /><br />PC からラズパイにファイルを送信する　その１<br /><span class="decorationC" style="color:green;">scp ./dir/filename.ext pi@hostname:</span><br />PC 上の ./dir/filename.ext ってファイルをラズパイにコピーする　この場合…ユーザ pi のホームフォルダ (/home/pi) に filename.ext がコピーされる<br /><br />ラズパイから PC にファイルを受信する　その１<br /><span class="decorationC" style="color:green;">scp pi@hostname:/var/www.html/index.html ./</span><br />ラズパイ上の /var/www.html/index.html が PC 上のカレントフォルダに index.html としてコピーされる<br /><br />PC からラズパイにフォルダを送信する　その２<br /><span class="decorationC" style="color:green;">scp -pr ./pic pi@hostname:</span><br />PC 上の ./pic ってフォルダとその中身の全てをファイル更新日時・モードを保持したままラズパイにコピーする　この場合…ユーザ pi のホームフォルダ (/home/pi) に pic フォルダを作成してコピーする<br /><br />ラズパイから PC にフォルダを受信する　その２<br /><span class="decorationC" style="color:green;">scp -pr pi@hostname:/etc/apache2 ./</span><br />ラズパイ上の /etc/apache2 ってフォルダとその中身の全てをファイル更新日時・モードを保持したまま PC に apache2 フォルダを作成してコピーする<br />※ ただし /etc/apache2 はユーザ pi で読めるけど…逆に書き込もうとすると root 権限が無いんで失敗しますが<br /><br />hostname は IP アドレスでも OK です　ファイル名にはワイルドカードも使えるようです<br /><br />2018 年 4 月頃のアップデートで Windows 10 に OpenSSH ってのが導入されているらしく…その時に scp コマンドが入ったようです<br /><img class="embeddedimage " width="800" height="636" src="https://room.dengeki.jp/images/20211024175230-admin.png" alt="20211024175230-admin.png"><br /><img class="embeddedimage " width="1056" height="800" src="https://room.dengeki.jp/images/202110241752301-admin.png" alt="202110241752301-admin.png"><br />試しに使ってみたところちゃんとコピーできたようです<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">ラズパイのアプリを PC 上で実行する？</b> <b class="decorationB">-----</b><br /><br />ラズパイ上で動くアプリケーションの画面を PC 上に持ってくることができるようです<br /><br />使い方<br /><span class="decorationC" style="color:green;">ssh &#91;オプション&#93; pi@hostname</span><br /><br />オプションはいろいろあるけど…よく使うものを勝手に抜粋（汗<br /><span class="decorationC" style="color:green;">-Y</span>　信頼できるX11転送を有効にします<br /><span class="decorationC" style="color:green;">-C</span>　データ転送を圧縮します<br /><br />普通に SSH による接続なんですが…ファイルマネージャ (pcmanfm) とかのグラフィカルなアプリケーションの実行画面を PC 上で再現できるようになるようです<br />SSH でログインした後にコマンドラインに実行したいアプリケーションのコマンドを打ち込み実行します<br /><span class="decorationC" style="color:green;">pcmanfm</span> ：ファイルマネージャ<br /><span class="decorationC" style="color:green;">lxtask</span> ：タスクマネージャ<br /><span class="decorationC" style="color:green;">lxterminal</span> ：LXTerminal<br />例えば上記のようなコマンドです<br /><br /><img class="embeddedimage " width="1600" height="1200" src="https://room.dengeki.jp/images/20211024175159-admin.png" alt="20211024175159-admin.png"><br />Ubuntu MATE 上に再現されたラズパイのアプリケーション画面　心もち再現しきれてないものもあるけどご愛嬌かな<br />ファイルマネージャからイメージビューワなんかを起動するとその画面も PC 上に出てきます<br />ただしログインしたユーザ権限で動作できるアプリケーションに限るようです<br />macOS 系ではできたって話を聞いたことがあります　Windows 系ではできないかも知れません（汗<br /><br />そろそろネタが尽きてきたかな…って感じで長々とお疲れさまでした！ <a href="https://room.dengeki.jp/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%20%50%69" class="taglink" title="Raspberry Pi">#&#91;Raspberry Pi&#93;</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%98%e3%83%ab%e3%83%97" class="taglink" title="コマンドヘルプ">#コマンドヘルプ</a><br /><small class="decorationS"><br />　　●<span class="decorationM" style="background-color:lightpink;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=6" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=5" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=4" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=3" class="postidlink">ラズパイで Apache2 サーバを建ててゆるい設定をする</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=2" class="postidlink">モニタ無しでラズパイを VNC 接続できるとこまでセットアップ</a></span><br /></small> -- Posted by 猫山ぽるか 〔2042文字〕 No.6 ]]></description>
	<link>https://room.dengeki.jp/tegalog.cgi?postid=6</link>
	<guid>https://room.dengeki.jp/tegalog.cgi?postid=6</guid>
	<category>info</category>
	<pubDate>Sun, 24 Oct 2021 16:41:43 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2 ]]></title>
	<description><![CDATA[ ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2<br /><img class="embeddedimage " width="200" height="200" src="https://room.dengeki.jp/images/20211203175809-admin.png" alt="20211203175809-admin.png"><br />　<br />・テキストエディタ nano の超基本の使い方<br />・ユーザを切り替えて root で作業したい<br />・ラズパイは sudo した時にパスワードを聞かれないのは何故？<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">テキストエディタ nano の超基本の使い方</b> <b class="decorationB">-----</b><br /><br />端末上(LX Terminal等)でテキストファイルを編集するには vi か nano を使うことになるんだけど… vi は操作感が少々特殊でとっつきにくいんでその辺が判りやすい nano を使うことが多いのかな？って事でその nano を初めて使う方向けの超基本の使い方の解説です<br /><br />コマンド名は <span class="decorationC" style="color:green;">nano</span> です　管理者権限で使いたい時は <span class="decorationC" style="color:green;">sudo nano</span> って感じで使います<br /><span class="decorationC" style="color:green;">nano</span> もしくは <span class="decorationC" style="color:green;">sudo nano</span> とコマンド名のみで起動すると「新規ファイル」の編集として起動します　<span class="decorationC" style="color:green;">nano 「ファイル名」</span> とファイル名を付けて起動すると「ファイル名のファイル」を編集します<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202110181533153-admin.png" alt="202110181533153-admin.png"><br /><span class="decorationC" style="color:green;">nano</span> とだけ打ち込み起動した状態<br />よく使う（と思われる）コマンドが下部に記載されています<br />この中の 「<span class="decorationM" style="background-color:white;">^G</span> ヘルプ」 とか 「<span class="decorationM" style="background-color:white;">^X</span> 終了」 の「^」意味は以下のようになっています<br /><br /><small class="decorationS">ショートカットキーの記法は以下の通りです。<span class="decorationC" style="color:red;">(^)</span>で表記されているショートカットは<span class="decorationC" style="color:red;">Ctrlキー</span>を押すか、<span class="decorationC" style="color:red;">Escキーを二回続けて押す</span>ことを表してします。<span class="decorationC" style="color:green;">(M-)</span>で表記されているショートカットは<span class="decorationC" style="color:green;">Altキー</span>、<span class="decorationC" style="color:green;">Cmdキー</span>、<span class="decorationC" style="color:green;">Escキー</span>などのメタキーを押して入力します。<br />&nbsp;また、Escキーを二回押した後に000から255までの十進数を入力することで、コードに対応する文字を入力することができます。以下のキーストロークは主なエディタのウィンドウで使用できます。代替のキーストロークは括弧で囲って表記されます。</small><br /><br />試しに <span class="decorationC" style="color:red;">Ctrl</span> キーを押しながら <span class="decorationC" style="color:red;">G</span> キーを押してみましょう<br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202110181533152-admin.png" alt="202110181533152-admin.png"><br />nano のヘルプが表示されました<br />長くて表示しきれてないんでキーボードの ↑ キーと ↓ キーを使ってスクロールさせます<br />ヘルプの終了は <span class="decorationC" style="color:red;">Ctrl</span> キーを押しながら <span class="decorationC" style="color:red;">X</span> キーを押します<br />いっぱいコマンドがあって覚えきれなさそうだけど…実際には「ちょっと編集を」って感じなんで数個のコマンドを使うだけになると思います<br /><br />そんなよく使うコマンド例<br /><br /><span class="decorationC" style="color:red;">Ctrl</span> + <span class="decorationC" style="color:red;">X</span> ：nano の終了　ファイルに変更がなければそのまま終了します　変更があれば保存するか破棄するか聞いてきます<br /><span class="decorationC" style="color:red;">Ctrl</span> + <span class="decorationC" style="color:red;">O</span> ：ファイルの書き込み　新規ファイルとして編集していればファイル名を聞いてきます　既存ファイルを編集していればそのファイル名が表示されそこに保存します<br /><span class="decorationC" style="color:red;">Ctrl</span> + <span class="decorationC" style="color:red;">S</span> ：ファイルを確認なしで保存する　慣れてくるとこれをよく使います<br /><span class="decorationC" style="color:red;">Ctrl</span> + <span class="decorationC" style="color:red;">W</span> ：文字列の検索　指定した文字列が見つかればカーソルがその文字列の場所に移動する　さらに次の文字列を探す場合には <span class="decorationC" style="color:green;">Alt</span> + <span class="decorationC" style="color:green;">W</span> もしくは <span class="decorationC" style="color:green;">Alt</span> + <span class="decorationC" style="color:green;">↓</span> で…逆向きに探す場合には <span class="decorationC" style="color:green;">Alt</span> + <span class="decorationC" style="color:green;">Q</span> もしくは <span class="decorationC" style="color:green;">Alt</span> + <span class="decorationC" style="color:green;">↑</span> と操作します<br /><span class="decorationC" style="color:red;">Ctrl</span> + <span class="decorationC" style="color:red;">&#47;</span> ：文字列の置換　探す文字列を指定した後に置き換える文字列を指定します　見つかった時に「１箇所置換」するか「全部を置換」するかを聞いてきます<br /><span class="decorationC" style="color:green;">Alt</span> + <span class="decorationC" style="color:green;">&#35;</span> ：コメント行の切り替え　カーソルがいる行の先頭に <span class="decorationC" style="color:lightseagreen;">&#35;</span> を付ける/付けないを繰り返す　わりと便利なんでよく使う<br /><br />だいたいこんなもんですかね　しょーみもっと込み入った編集をしたい時には GUI で操作できる <span class="decorationC" style="color:green;">mousepad</span> とかを使ったほうが判りやすくて便利だと思います　ただ <span class="decorationC" style="color:green;">nano</span> は諸々の設定作業なんかで「使わない訳にはいかない」テキスト・エディタなんで最低限の操作は覚えておきたいものです<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">ユーザを切り替えて root で作業したい</b> <b class="decorationB">-----</b><br /><br />サーバの設定をしてる時とかに…いちいち sudo + コマンド ってやるんがめんどくさい！！(-_-&#35;)って時に感情に任せて root にチェンジして作業したいと思ったことはありませんか？　私はたまにあります…って事なんでその辺の話を少々<br /><br /><img class="embeddedimage " width="1056" height="800" src="https://room.dengeki.jp/images/202110181533155-admin.png" alt="202110181533155-admin.png"><br />通常はユーザ pi で作業してるんだけどこれをユーザ切り替えの su コマンドを使って管理者 root になろうとするんだけど…認証失敗して root になれません　これは root にパスワードが設定されてないんで「パスワードによる認証ができない」ってのが原因のようです<br /><br />まぁこれを解決するには root にパスワードを設定すればいいんだけど…世間的にはセキュリティ云々の事情で root にパスワードを設定すべきではないって事なんでちょっと躊躇しちゃいますね　※ root にパスワードを設定すると SSH などで root ログインできるようになるんで好ましくないらしいのです<br /><br />しかしこれが実機の前に居るのであれば別の方法でどうにかできます　LXTerminal を sudo で起動してみましょう<br /><br /><img class="embeddedimage " width="1056" height="800" src="https://room.dengeki.jp/images/202110181533154-admin.png" alt="202110181533154-admin.png"><br /><span class="decorationC" style="color:green;">sudo x-terminal-emulator</span><br />無事(？)に root に切り替えることができました<br />でもまぁ何でもできる管理者 root なんで…くれぐれも慎重な操作をお願いします（汗<br /><br />※ 追記 ※<br />別のシェルでログインを試みるって手法をもっと試してみるっていうか…なんか su コマンドにシェルを指定するオプションがあるのに気づいたんでそっちも試してみることにします<br /><span class="decorationC" style="color:green;">sudo su -s /bin/bash root</span><br />これで root に切り替えることができました　こっちのほうがスマートな操作って感じなのかな<br /><br />ちなみにオプション指定の違いがあるっていうか…<br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/20211205041659-admin.png" alt="20211205041659-admin.png"><br /><span class="decorationC" style="color:green;">sudo su -s /bin/bash root</span><br /><span class="decorationC" style="color:green;">sudo su -s /bin/bash <span class="decorationC" style="color:red;">-</span> root</span><br />「-」オプションを付けない時はコマンドを実行したユーザのホームディレクトリ・環境変数が引き継がれて<br />「-」オプションを付た時は指定したユーザのホームディレクトリ・環境変数に設定されるようです<br /><br />※ さらに追記 ※<br />もうちょっとシンプルにっていうか <span class="decorationC" style="color:green;">sudo -i</span> や <span class="decorationC" style="color:green;">sudo su</span> や <span class="decorationC" style="color:green;">sudo su -</span> でもいいみたい<br />この場合もそれぞれ環境変数の引き継ぎに違いがあったりするようです　使いやすい手法を覚えておきタイネ！<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">ラズパイは sudo した時にパスワードを聞かれないのは何故？</b> <b class="decorationB">-----</b><br /><br />Ubuntu などを使っている時に sudo すると…<br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/202110181533151-admin.png" alt="202110181533151-admin.png"><br />パスワードを聞かれます<br /><br /><img class="embeddedimage " width="736" height="479" src="https://room.dengeki.jp/images/20211018153315-admin.png" alt="20211018153315-admin.png"><br />でも Raspberry Pi OS の sudo だとパスワードを聞かれません　これは何故なんでしょう？<br /><br />まぁ sudo がそう云う設定になってるんですけどね…って事でその設定を見てみましょう　sudo の設定内容は <span class="decorationC" style="color:green;">sudo cat /etc/sudoers</span> で確認することができます<br />その中に %sudo ALL=(ALL:ALL) ALL なんて行があります　これはグループ sudo に属する全てのユーザが全てのコマンドを実行できるって定義らしいです<br /><br />それではグループ sudo に誰が属しているのか見てみましょう　これは <span class="decorationC" style="color:green;">sudo getent group sudo</span> で確認できます　おそらく sudo:x:27:pi ってなってると思うんだけど…まぁグループ sudo にユーザ pi が含まれているのが判ります　この設定によりユーザ pi が sudo した時に全てのコマンドが使えるって事になるらしいです<br /><br />ちなみに /etc/sudoers は極めて重要なファイルなんで直接編集しないほうがいいらしいです　これを編集するには専用コマンドの <span class="decorationC" style="color:green;">sudo visudo</span> を使います　なんでも書き込んだ内容に間違いがないか構文チェックして正しければ書き込むって感じになってるらしいです<br /><br />まぁそれはともかく sudo した時にパスワードを聞かれないって話でしたよね　これはさらに細やかな設定ファイルが /etc/sudoers.d/ に入ってるらしいのでそれを <span class="decorationC" style="color:green;">sudo cat /etc/sudoers.d/010_pi-nopasswd</span> で確認してみましょう<br />すると pi ALL=(ALL) NOPASSWD: ALL ってのがあります　この NOPASSWD ってのがパスワードを聞かれないための設定らしいです<br />この /etc/sudoers.d の設定ファイルも直接書き換えるのではなく専用コマンドの <span class="decorationC" style="color:green;">sudo visudo -f /etc/sudoers.d/010_pi-nopasswd</span> を使うらしいです<br /><br />まぁただそれだけの話なんですけどね　モヤモヤしてた謎が解けたらイイネ！って感じで長々とお疲れさまでした！ <a href="https://room.dengeki.jp/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%20%50%69" class="taglink" title="Raspberry Pi">#&#91;Raspberry Pi&#93;</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%98%e3%83%ab%e3%83%97" class="taglink" title="コマンドヘルプ">#コマンドヘルプ</a><br /><small class="decorationS"><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=6" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3</a></span><br />　　●<span class="decorationM" style="background-color:lightpink;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=5" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=4" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=3" class="postidlink">ラズパイで Apache2 サーバを建ててゆるい設定をする</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=2" class="postidlink">モニタ無しでラズパイを VNC 接続できるとこまでセットアップ</a></span><br /></small> -- Posted by 猫山ぽるか 〔3977文字〕 No.5 ]]></description>
	<link>https://room.dengeki.jp/tegalog.cgi?postid=5</link>
	<guid>https://room.dengeki.jp/tegalog.cgi?postid=5</guid>
	<category>info</category>
	<pubDate>Mon, 18 Oct 2021 15:33:15 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1 ]]></title>
	<description><![CDATA[ ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1<br /><img class="embeddedimage " width="200" height="200" src="https://room.dengeki.jp/images/20211203174442-admin.jpg" alt="20211203174442-admin.jpg"><br />　<br />・有線 LAN 接続時の固定 IP な設定<br />・ホストネームの変更<br />・ファイルマネージャを root 権限で使う<br />・Raspberry Pi の基盤穴サイズ<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">有線 LAN 接続時の固定 IP な設定</b> <b class="decorationB">-----</b><br /><br /><span class="decorationC" style="color:green;">/etc/dhcpcd.conf</span> を編集<br /><span class="decorationC" style="color:lightseagreen;">&#35; Example static IP configuration:<br />&#35;interface eth0<br />&#35;static ip_address=192.168.0.10/24<br />&#35;static ip6_address=fd51:42f8:caae:d92e::ff/64<br />&#35;static routers=192.168.0.1<br />&#35;static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1</span><br /><br />この部分で設定する　必要な行の先頭の &#35; (コメント記号)を消して有効にして必要な内容に書き換える<br />以下は設定例(IP アドレスが 192.168.0.80 でゲートウェイ(ホームルータ)アドレスが 192.168.0.100 で Google のパブリック DNS を使用の場合)<br /><br /><span class="decorationC" style="color:lightseagreen;">&#35; Example static IP configuration:</span><br />interface eth0<br />static ip_address=192.168.0.80/24<br /><span class="decorationC" style="color:lightseagreen;">&#35;static ip6_address=fd51:42f8:caae:d92e::ff/64</span><br />static routers=192.168.0.100<br />static domain_name_servers=8.8.8.8 8.8.4.4<br /><br />ファイル保存後に OS を再起動することにより有効になる<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">ホストネームの変更</b> <b class="decorationB">-----</b><br /><br /><span class="decorationC" style="color:green;">/etc/hostname</span> を編集<br />標準状態で <span class="decorationC" style="color:red;">raspberrypi</span> が設定されているのでそれを適宜書き換える<br /><br /><span class="decorationC" style="color:green;">sudo nano /etc/hosts</span> で編集<br />最終行の <span class="decorationC" style="color:red;">127.0.1.1&nbsp;&nbsp;&nbsp;&nbsp;raspberrypi</span> の raspberrypi の部分を上記と同じものに書き換える<br /><br />ファイル保存後に OS を再起動することにより有効になる<br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">ファイルマネージャを root 権限で使う</b> <b class="decorationB">-----</b><br /><br />重要なファイル類の操作や編集を GUI でどうにかしたい時に便利かもしれないけど危険かも知れない（汗<br />ターミナル内で <span class="decorationC" style="color:green;">sudo pcmanfm</span> としてもいいんだけど…何かと面倒なんでアプリケーションランチャーに登録しておく<br /><br />DESKTOP ファイルとか云うものを作成する　※既にあるファイルマネージャのものをコピーして編集する<br /><span class="decorationC" style="color:green;">sudo cp /usr/share/applications/pcmanfm.desktop /usr/share/applications/pcmanfm_sudo.desktop</span><br /><br /><span class="decorationC" style="color:green;">sudo nano /usr/share/applications/pcmanfm_sudo.desktop</span><br /><span class="decorationC" style="color:red;">Icon=system-file-manager</span> を <span class="decorationC" style="color:red;">Icon=user-desktop</span> に変更する　※アイコンは何でもいいんだけど…個人的にこの辺が判りやすいアイコンだったんでこのようにした<br /><span class="decorationC" style="color:red;">Name=File Manager PCManFM</span> を <span class="decorationC" style="color:red;">Name=File Manager sudo</span> に変更する<br /><span class="decorationC" style="color:red;">Name&#91;ja&#93;=ファイルマネージャ PCManFM</span> を <span class="decorationC" style="color:red;">Name&#91;ja&#93;=ファイルマネージャ sudo</span> に変更する<br /><span class="decorationC" style="color:red;">GenericName&#91;ja&#93;=ファイルマネージャ</span> を <span class="decorationC" style="color:red;">GenericName&#91;ja&#93;=ファイルマネージャ sudo</span> に変更する<br /><span class="decorationC" style="color:red;">Exec=pcmanfm %U</span> を <span class="decorationC" style="color:red;">Exec=sudo pcmanfm %U</span> に変更してファイルを保存する<br /><br /><img class="embeddedimage " width="1056" height="786" src="https://room.dengeki.jp/images/202110161733492-admin.png" alt="202110161733492-admin.png"><br />デスクトップの「ランチャアイコン上」で<span class="decorationC" style="color:green;">右クリック</span>してメニューを出し<span class="decorationC" style="color:red;">アプリケーション・ランチャー Settings</span> をクリック<br /><br /><img class="embeddedimage " width="1056" height="786" src="https://room.dengeki.jp/images/202110161733491-admin.png" alt="202110161733491-admin.png"><br />何故か「システムツール」に入っている<span class="decorationC" style="color:red;">ファイルマネージャ sudo</span> を選び <span class="decorationC" style="color:red;">追加(A)</span> ボタンを押す<br /><br /><img class="embeddedimage " width="1056" height="786" src="https://room.dengeki.jp/images/20211016173349-admin.png" alt="20211016173349-admin.png"><br />新しい「ランチャアイコン」が追加された<br /><br /><img class="embeddedimage " width="1056" height="786" src="https://room.dengeki.jp/images/202110161747561-admin.png" alt="202110161747561-admin.png"><br />root 権限なんで(概ね)どのフォルダ/ファイルでも操作できる　その際にツールバーの左端に「現在あなたは管理者権限で操作しています」を表す <span class="decorationM" style="background-color:yellow;"><b class="decorationB">&#x26A0;</b></span> マークが表示されています<br />そしてもちろん右クリックでメニューを出して各種操作もできる<br /><br /><img class="embeddedimage " width="1056" height="786" src="https://room.dengeki.jp/images/20211016174756-admin.png" alt="20211016174756-admin.png"><br />メニュー操作により root 権限が必要なファイルの編集もできる<br />ただしシステムに関連した重要なファイルの変更などで取り返しのつかない事態に陥る危険性もあります　<span class="decorationC" style="color:red;">使用には細心の注意が必要です！</span><br /><br />　　：<br /><br /><b class="decorationB">-----</b> <b class="decorationB">Raspberry Pi の基盤穴サイズ</b> <b class="decorationB">-----</b><br /><br />Raspberry Pi の基盤穴サイズっていうか…適合するボルト径ですかね<br /><img class="embeddedimage " width="1067" height="800" src="https://room.dengeki.jp/images/20211016234940-admin.jpg" alt="20211016234940-admin.jpg"><br />M2.5 ってやつがピッタリ合うようです　M3 だと微妙に太くて通らないようです<br />設定って話じゃないけど…ちょっと気になったんでメモしておきます<br /><br />今回はここまで！　長々とお疲れさまでした！ <a href="https://room.dengeki.jp/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%20%50%69" class="taglink" title="Raspberry Pi">#&#91;Raspberry Pi&#93;</a> <a href="https://room.dengeki.jp/tegalog.cgi?tag=%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%98%e3%83%ab%e3%83%97" class="taglink" title="コマンドヘルプ">#コマンドヘルプ</a><br /><small class="decorationS"><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=6" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=5" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2</a></span><br />　　●<span class="decorationM" style="background-color:lightpink;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=4" class="postidlink">ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=3" class="postidlink">ラズパイで Apache2 サーバを建ててゆるい設定をする</a></span><br />　　●<span class="decorationM" style="background-color:lightcyan;"><a href="https://room.dengeki.jp/tegalog.cgi?postid=2" class="postidlink">モニタ無しでラズパイを VNC 接続できるとこまでセットアップ</a></span><br /></small> -- Posted by 猫山ぽるか 〔2516文字〕 No.4 ]]></description>
	<link>https://room.dengeki.jp/tegalog.cgi?postid=4</link>
	<guid>https://room.dengeki.jp/tegalog.cgi?postid=4</guid>
	<category>info</category>
	<pubDate>Sat, 16 Oct 2021 16:54:27 +0900</pubDate>
</item>

	<!-- END ENTRIES -->
</channel>
</rss>

