kubuntuに起動時にメールを出すスクリプトをセットしたつもりだったけど、動作しない。無知をさらけ出すことになりますが、書式がしっかりしてなかったんですわ。
経緯
Kubuntuはモニターにつなげてはあるのですが、通常モニターはアクティブになっていません。入力を切り替えてやればモニターに映るんですが、ここ数ヶ月事実上のヘッドレスマシンになっています。
簡単なスクリプトなどの実験台になってくれているのですが、時々リスタートさせる必要があります。そこで、ちゃんと起動してくれたのか確かめるために、極簡単なスクリプトを書いてそれを/etc/rc.local
に書き込んだつもりでした。
動かないスクリプト
ところがですね。動かないんですよ。何度リスタートしても動かない。スクリプトをコマンドプロンプトに打ち込んでやれば動く。何度テストしてもコマンドプロンプトに打ち込んでやれば動くんですね。メールがちゃんと届く。でも、rc.localに書き込んだのは動かない。
ググってみると、systemctlでステータスを確認できるらしい。それすら知らなかった。早速やってみました。エラーでてましたよ。Failed to execute command: Exec format errorこれもググってみました。そのものズバリの答えはなかなか見つかりませんでしたが、しかしよくよく考えてみると、エラーを翻訳してみると「コマンドの実行に失敗しました。実行形式エラー」実行形式?
とってもシンプルな答え(無知だった)
「コマンドの実行に失敗しました。実行形式エラー」何度も読んでいたら、答えにたどり着きました。シバン(shebang)ですね。スクリプトを書くときに、1行目に必ず書く、アレです。スクリプトの本文をいきなり書いていたんです。無知ですね。恥ずかしいです。コマンドプロンプトに書き込んだときには、コマンドプロンプトがMacの場合zshだったりしますが、いちいち明示しなくてもzshが解釈してくれます。しかし、rc.localの場合、一体どのインタプリタを指定しているのかわかりませんよね。私シパンを書いていませんでした。恥ずかしい。
Kubuntuの場合、bashを指定してやれば間違いないだろうと思ったら、ビンゴでした。ステータスを確認したらちゃんと動いてくれてるのを確認できましたし、メールも届きました。
まとめ
まとめもへったくれもありませんが、同じように設定したRaspberry Piなどでは問題なかったのに、なぜKubuntuでシパンを抜かしていたのか? 実は、Raspberry Piなどではrc.localファイルはもともと存在していて、スクリプトが書き込まれていました。Kubuntuはrc.localファイルが存在しなかったんですね。そのため、シパンを抜かして書き込んで「これでOK」と思っていたんです。
無知の言い訳にしかなりませんが、そういうことです。恥ずかしいけど、自分への戒めもこめてエントリーにしました。
投稿者プロフィール

最新の投稿
Raspberry Pi2023年11月30日Raspberry Pi zero 2 WからBluetoothで音楽を流す
ラーメン2023年11月26日ラーメン山岡家 ネギ味噌ラーメン
Windows2023年11月23日Windows11マシン不調
TrueNAS2023年11月17日TrueNAS SCALEサーバーのエラー
