【1028:24】コマンドだけでこんなこと出来ます?
- 1 名前:名無しさん@お腹いっぱい。 :2000/12/11(月) 18:18
- 1)あるシリアルポートを占有するプログラムをkillする。
2)シリアルポートが空くまで待機する。 3)空いたら特定の値をシリアルポートに書き込む。 というような一連の作業を行いたいのですが、小難しいプログラムは 書けません。コマンドの組み合わせで上手くできませんか? OSはFreeBSD4.2です。
- 15 名前:>14 :2000/12/12(火) 16:40
- 電源スイッチがON、OFFできるタイプならONにしっぱなしで良いんじゃない?
ソフトスイッチでもBIOSの設定で何とでもなるはず。
- 16 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 19:37
- 1のサーバがそのあたりのことをちゃんと考えて作ってある
サーバ機ならば問題ない。けど、ただのPC、特にATXのやつは BIOSの設定にはそんなのないだろ。
- 17 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 19:40
- 1の考えてることはシェルスクリプトでできるだろ。
つまり、 1. apcupsdをkillして 2. 適当な時間sleepして 3. echo hogehoge > /dev/ttyS0 とする。 apcupsdのpidは起動時に控えておいてもいいし、psしてgrepしてsed でもよし。
- 18 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 21:52
- >>17
sedじゃなくてawkだが kill `ps -ax | grep apcupsd | awk '{print $1}'` sleep 10 echo HOGE > /dev/ttyS0
- 19 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 22:07
- てゆーか、1のしたいことって、スケジュール運転だと思うが、
APC純正のデーモンでできるだろ?
- 20 名前:1 :2000/12/13(水) 08:37
- サーバの電源の件ですが、15さんの言うとおりソフトスイッチで
電源のON、OFFが切り替えられないのでBIOSの設定で電源復旧時に BOOTするように設定しています。 APC純正のdaemonにはFreeBSD版は無いんです。Linux用がフリー ウェアとして配布されてますが、Linuxエミュレーションでの動作 がちょっとあやしかった事と、動作状態の確認や設定変更がGUI 環境でしか提供されてない事が理由でで使ってません。 >17@`18さん ありがとうございます。お昼までに試してみます。 ただ、シリアルの通信速度が2400bpsでないとUPSと通信できないよう なのですが、どうやって通信速度を設定したらいいのでしょう?
- 21 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 10:36
- >>20
さあなあ、Linuxだとsetserialとかってコマンドがあるんだけどな。 BSDのスレできいてくれよ。
- 22 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 12:24
- man -k serial
とかやれば出て来るはずですが。 そこら辺覚えると楽になるので 頑張ってください。
- 23 名前:1 :2000/12/13(水) 14:03
- ##stty -f /dev/ttyd0 speed 2400
として #echo @001 > /dev/ttyd0 (@001が電源断6分後に再起動させるコマンドです。@002なら12分) としても何の反応もありませんでした。 そこで #cu -l /dev/ttyd0 Connected. @001 (タイプしただけ。ホントは表示されないです) とすると電源が落ちて、6分後に再起動しました。 いろいろやってみた挙げ句 #echo -n @ 0 0 1 > /dev/ttyd0 と、一文字置きにスペースを入れると電源が落ちました。 一応解決はしましたが、なぜ1文字置きにスペースを入れると 成功したのかが気になります。どういう理屈なのでしょうか?
- 24 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 14:38
- きっと間違ってると思うけど
@001の場合は'@' '0' '0' '1'となって @ 0 0 1の場合は'@' 0 0 1と解析されたんじゃないのかなぁ。。。
|