
Ubuntu日本語フォーラム

ログインしていません。
サーバーに対して接続後、10秒に1回毎に1kbyte程度のパケットをTCP通信で送信して、サーバーとの通信が断線していないかをチェックするようなプログラムを作成しました。
このプログラムをUbuntuを起動したら自動的にこのプログラムの実行ファイルを起動できるようにしたいと思っています。
http://hisk2tmem.blog61.fc2.com/blog-entry-11.html
こちらのサイトで
/etc/rc.local
このファイルに起動させたいファイルのパスを書けば起動してくれると言うことで、
次のようにrc.localに
”/root/20140411/test_client”
というファイルパスを書いてみました。
root@ubuntu:/etc# cat rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/root/20140411/test_client
exit 0
これで、Ubuntuを再起動してみたのですが、
/root/20140411/test_client
このプログラムが起動していないようで、サーバーへ接続されてきません。
この自動機能の設定は間違っていますでしょうか?
アドバイスをご教示頂きますよう、お願い致します。
オフライン
Rammellzee 様へ。
このプログラムはサーバのように、ユーザがログインしなくても
実行するようにしたいのでしょうか?
もし、ログイン後に自動で実行したい場合は、
~/.config/autostart に実行ファイルに関する desktop ファイルを
置いての実行がいいと思います。
GUI での操作ならば、以下のサイトを参考にしてみて下さい。
http://ubuntu.firebird.jp/archives/4306
もし、サーバのようにログインしないで実行したい場合は、
以下のことを確認してみて下さい。
* 作成したプログラムは、普通に実行した場合に動作しますか?
* /root/20140411/test_client に本当にプログラムは存在しますか?
* タイミング的にネットワークが確立する前に実行されている可能性があるので、
確立した状態を把握してから実行するようにするか、少し時間をおいて
実行するようにプログラムを変更する。
ご参考までに。
オフライン
hellfire 様
回答頂きありがとうございます。
今回作成しているプログラムはログイン時に起動ではなく、電源投入時に自動的に起動したいと考えております。
TCP通信の断線監視プログラムですがこちらのプログラムを使用しています。
http://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/head/trunk/20140411/test_client.c
実際に自分のUbuntu PCでコンパイルしてサーバーに対してパケットを送信する動作を確認しています。
電源投入時のTCP通信のタイミングを考えなければならない場合にこちらのプログラミングに追加した方が良いプログラムなど教えて頂けないでしょうか。
どうぞご教示の程よろしくお願い致します。
オフライン
ネットの監視ならば
/etc/network/if-up.d/
に放り込んでおけばよいかと。
オフライン
yama様
回答頂きありがとうございます。
次のようなスクリプトファイルを"test_client_sh"という名前で作成しました。
#!/bin/sh -e
/root/20140411/test_client
そして、test_client_shファイルを”/etc/network/if-up.d/”こちらのパスのフォルダに配置してrebootしてみたのですが、サーバーには接続しに来ない状態です。
このtest_clientというプログラムが動作しているのかどうかを確認する方法などありますでしょうか?
また、自動起動できるような解決方法をさらに教えて頂けませんでしょうか?
どうぞ、ご教示頂きますようお願い致します。
オフライン
upstartでやるのがよいと思います。