• ベストアンサー

リナックスのサービス制御スクリプトの引数の意味を教えてください

リナックスのサービス制御スクリプトの引数を省略して実行すると、次のような引数の一覧が表示されます。 使い方: /etc/init.d/smb {start|stop|restart|reload|status|condrestart} このうちstartとstopとstatusは分かるのですが、 他の引数は違いがよく分かりません。 今までサーバーを再起動するときは restartを使用していたのですが、 他にもreloadやcondrestartという引数があるので これは、どのような時に使用するのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

restartとreloadの使い分けですか? 個人的意見ですが reload コンフィグfileをちょっとだけ書き直した場合 restart  ・多く書き直した場合(具体的に何行とかではなく自分の感覚で)  ・モジュールを新たに入れた、入れ直した場合  ・そのサービスが不安定になり、停止しているか動いているかも不明の状態で、早急に復旧させたい場合   (このとき、少しでもクラッキングの可能性がある時は.confなどの改ざんをチェックしてから)

zyousuke
質問者

お礼

umasikajiroさん、ご返信ありがとうございます。 なるほど、そういう使い分けをされているのですね。 umasikajiroのご意見を受けて思ったのですが、reloadもrestartも速度の差はほとんど感じませんので、 サーバーが不安定になっていた場合なども考慮して、どんな場合でもrestartを使う運用にした方がいいと感じました。 ともあれ、スクリプト中に書くなら絶対condrestartですね!

zyousuke
質問者

補足

あ、呼び捨てになってしまった! すみません!

その他の回答 (2)

回答No.2

各引数については(例:nfs) http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-nfs-start.html もっと詳しく知りたければ、/etc/init.d/にある起動スクリプトは 通常、シェルスクリプトなので、それを勉強すれば判ります http://www.ybi.co.jp/koike/src/BSH.htm http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html

zyousuke
質問者

お礼

umasikajiroさん、ご返信ありがとうございます。 nfsの引数の説明を読んでもなお、restartとreloadの切り分けが良く分かりませんでした。 reloadを使えばサーバーを再起動せずに設定を反映できるので、これさえあれば、restartはどのような時に必要になるのか疑問です。 シェルスクリプトは、今まさに勉強中なんです! 今までなんとな~く使っていたリナックスがだんだん分かってきましたよ! 今はリナックスを再インストールしたときに便利な、 各種サーバーの設定を一瞬でやってくれるスクリプトを作成中です! あとログインユーザーとサンバユーザーを同時に作成し、smb.confに個人フォルダーの設定を追記してくれるuseradd+と ログインユーザーとサンバユーザーを同時に削除し、smb.confから個人フォルダーの設定を消すuserdel+を作成中です! このsmb.confを変更した後に自動的にサンバを再起動するために、どの引数を使えばいいか迷ったので、ここへ聞きに参ったというわけです。 今のところデーモンの状態に関わらずエラーを起こさないcondrestartを使おうと思っています。

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

http://www.atmarkit.co.jp/flinux/rensai/theory11/theory11a.html restart stopしてstart reload confを読み直すだけ

zyousuke
質問者

お礼

OsieteG00さん、ご返信ありがとうございます。 ご紹介いただいたページはどうも制御スクリプトを自作するための資料のようで、私にはちんぷんかんでしたが、頑張って最後まで読み進めると引数の説明がありました! ただし、この説明を読んでもなおrestartとreloadの違いは良く分かりませんでした。 reloadの方が高速に設定を反映できるので、 もうrestartを使うことはないのかなと思いました。 condrestartはデーモンが起動していた場合は再起動して、起動していなかった場合は何もしないので、すごい便利だと思いました。

関連するQ&A

  • RedHat 起動スクリプト(自作) 規約の存在?

    現在、業務で、RedHatLinuxで動作するプログラムを作成しております。 /etc/init.d 配下に、自作の起動スクリプトを用意して、 プログラムの {start|stop|restart|status}の制御を実行しようと 考えているのですが、 準拠した方がいい規約など、存在するのでしょうか? 例えば、status を知りたいときに、 root$ service hogehoge status と、入力するのですが、 そのときの、”出力は、こうした方がいい”みたいな 参考文献みたいなものは存在するのでしょうか? もし、ご存知の方がいらっしゃったら、 ご教示いただけるとありがたいです。

  • Linux 起動スクリプト(shell)

    Linux(CentOS5)で自作の起動スクリプトを作成しているのですが、 うまく動作しません。 /etc/rc.d/init.d配下にスクリプトを設置し、さらに起動スクリプトから /usr/local/lib/sssの外部ファイルを読込んでいます。 その外部ファイルは、iniファイルの設定がtrueの場合、 whileで回る仕組みになっています。(sleep 何秒毎に動くか制御しています) httpdのように常駐起動させたいのですが、どのようにすればいいのでしょうか? 実行すると処理が止まってしまいます。 ■起動スクリプト /etc/rc.d/init.d/aaa ← 起動スクリプト           |― function読込           |― ネットワーク設定読込           |― INIファイル読込み           |― 外部スクリプト実行 ■実行ファイル /usr/sbin/aaa ← 実行ファイル           |― 外部スクリプト読込           |― 外部スクリプト実行 ■外部ファイル           |― 外部ファイル処理起動           |― INIファイルがtrueの場合、whileによりループされる。 -------------------------------------------- /etc/rc.d/init.d/aaa ← 起動スクリプト start() { if [ "${path}" = "true" ]; then KIND="aaa" echo -n $"Starting $KIND services: " daemon aaa ${option} test RETVALaa=$? echo [ $RETVALaaa -eq 0 ] && touch ${LOCKPATH}/${SERVICE_NAME}test || \ RETVALaa=1 return $RETVALaa fi (省略) -------------------------------------------- /usr/sbin/aaa ← 実行ファイル case $1 in "-D" ) case $2 in "test" ) sh ${path}/aaa > /dev/null & ;; * ) ;; esac ;; * ) echo $"Usage: $0 {start|stop|restart|reload|status|condrestart}" exit 2 esac exit 0 (省略) -------------------------------------------- ■外部ファイル if [ "${SETTING}" = "true" ]; then while : do #メイン処理 (省略) sleep ${SLEEP} done #設定がfalseの場合、何もしない elif [ "${SETTING}" = "false" ]; then echo -e "${CONFIG_FALSE}" sleep ${SLEEP} exit 10 #設定が未知のものなら、終了する else echo -e "Error: ${CONFIG_ERROR}" exit 12 fi # 終了 exit 0

  • FreeBSD における、アプリの起動スクリプトと登録の方法

    いま独自のサーバ用アプリを作っています。それを、FreeBSD起動時に自動的に立ち上がるようにしたいのですが、方法が分かりません。教えていただける方、あるいは、参考URLをご存知の方お教えください。 たとえば、linuxでしたら、 /etc/init.d/hogehoge start とすると、hogehogeアプリを起動し、 /etc/init.d/hogehoge stop とすると、hogehogeアプリを停止するようなスクリプトを書きます。hogehoge中身は、たとえば、以下のような感じですかね。 ----------------------------------------------------- #! /bin/sh # # chkconfig: 2345 85 15 # description: hoge hoge ... . /etc/rc.d/init.d/functions cd /usr/local/xl-gbs PATH=$PATH:/usr/local/xl-gbs/xlscript/bin export PATH start() { xl gbserver.xl / start echo } stop() { xl gbserver.xl / stop echo } restart() { stop start } case "$1" in start) start ;; stop) stop exit 1 ;; restart) restart ;; *) ;; esac exit 0 ----------------------------------------------------- その上で、 % chmod 0755 /etc/init.d/hogehoge % chkconfig --add /etc/init.d/hogehoge という風に登録します。 まあ、この操作に対応するFreeBSDの操作を教えていただければありがたい。

  • Samba(デーモン)が起動しない

    今朝linux(RedHat Enterprise Linux)を起動したら共有がwindowsからみれなくなっていて /etc/rc.d/init.d/smb statusでSamba(デーモン)を確認したら smbdは停止しています。 nmbdは停止していますがPIDファイルが残っています。とでました。 /etc/rc.d/init.d/smb start で smbサービスを起動中:失敗 Nnmbサービスを起動中:OK /etc/rc.d/init.d/smb stop で smbサービスを起動中:失敗 Nnmbサービスを起動中:失敗 とでてしまいます。 きのうネットワーク設定のデフォルトゲートウェイを変更したからでしょうか? 業務ができません こまっています。 どなたか教えていただけないでしょうか。

  • Linuxでの起動スクリプトの設定方法について

    Ubuntu10.04で、/etc/init.d/ の下に自作の起動スクリプトファイルを置いて、OS起動時にアプリが起動するようにしたいです。 Linuxについてはほぼ素人なので、ネット等で適当にスクリプトの書き方や設定方法を調べて、以下のような手順で実施してみましたが、うまく起動しませんでした。 以下に私が実施した手順を記載しますので、原因がわかる方、教えていただけませんでしょうか? (1)以下のスクリプトを書いたファイル(例えば"start_eclipse")を /etc/init.d/ の下に配置する。 #!/bin/bash start() { echo -n "Starting eclipse: " /opt/eclipse/eclipse return 0 } stop() { killproc eclipse return 0 } case "$1" in start) start ;; stop) stop ;; esac (2)Terminalで以下のコマンドを実行。(ランレベルや優先順位はデフォルト値に任せています) $ sudo su # chmod 755 /etc/init.d/start_eclipse # update-rc.d start_eclipse defaults (3)Ubuntuを再起動して確認。⇒アプリ(この場合はeclipse)は起動しませんでした。 私としてはスクリプトの書き方が間違っているのではないかと予想しているのですが、スクリプトについてネットで調べると、今回のような単純なアプリ起動・終了方法についての情報があまり載っていない(と思う)ため、自力では間違い箇所が発見できませんでした。 ついでと言ってはなんですが、起動スクリプトの書き方や設定方法について参考になるサイトがありましたら、そちらも教えていただけましたら幸いです。 以上、宜しくお願い致します。

  • シェルスクリプトの動きが不安定

    Redhat9で、DTC-Radiusというソフトを動かしているのですが、/etc/rc.d/init.d/radiusdというスクリプトが正常に動きません。 ☆radiusdの内容 #!/bin/bash # source function library . /etc/rc.d/init.d/functions start() { echo "Starting DTC_Radius: " /usr/etc/radiusd -d /etc/raddb -a /usr/adm/radacct return 0 } stop() { echo "Stoping DTC_Radius:" killproc radiusd return 0 } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; esac ☆エラー内容 /etc/rc.d/init.d/radiusd stop と実行すると Stoping DTC_Radius: /usr/etc/radiusd: Exit on signal (15) Dec 14 16:16:41.411 radiusd[4664] Exit on signal (15) /usr/etc/radiusd: Exit on signal (100) Dec 14 16:16:41.411 radiusd[4663] Exit on signal (100) /etc/rc.d/init.d/radiusd: line 195: kill: (4663) - そのようなプロセスはありませ ん と表示されます。PSで確認すると一応止まっていますが、なんでこんなメッセージが出るのでしょうか? 気持ちが悪いので、出ないようにならないでしょうか?

  • Linuxの起動と起動スクリプトにつきまして

    Linuxの起動と起動スクリプトにつきましてご質問させてくださいませ。 chkconfig などで Sではじまる起動スクリプトを定義した場合 起動時にスタートさせるプロセスでありKで始まるものは、シャットダウン時に自動停止(引数stop)すると思いますが、たとえばSで始まるスクリプトのみ定義しておりそのスクリプトにKの定義がなかったばあい、自動停止はしないのでしょうか? シャットダウン時には、どのような挙動になるのでしょうか? その場合、killなどで強制的に切れるのでしょうか? よろしくお願い申し上げます。

  • スクリプト外部ムービーの制御

    こんにちは。 外部ムービー(.swf)を読み込んでそれをスタートボタン、ストップボタンで制御したいのですが外部ムービーがスクリプトでできているためか制御できません。スクリプトでできた外部ムービーは制御不可能なのでしょうか?もし不可能ならばなんとかほかのアイデアはありませんでしょうか?ただ読み込んだものを止めたり再生したりしたいだけなのですが。。。 どうぞよろしくお願いします。 ちなみに環境WinXP Flash Pro8です。もしCS3ででもできればアイデア下さい。

  • linuxでapacheが動きません。

    linuxでapacheが動きません。 学校でネットワークの勉強をしており、課題をやるために自宅のPCでVMserverを使ってVine4.2をインストールしました。 今openssl0.98nとapache2.2.15をインストールしたところです。 学校ではちゃんと動いたのですが、自宅のPCでのapacheの再起動のところで困っています。 # /etc/init.d/apache start httpd (pid 16970) already running # /etc/init.d/apache stop # /etc/init.d/apache restart httpd not running, trying to start 再起動するとこのようなエラーが出て、startしても同じことの繰り返しです。 # ps -ax|grep httpd と入力するとこう出ました。 Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html 16970 ? Ss 0:00 /usr/local/apache/bin/httpd -k restart 16973 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16974 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16975 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16976 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16977 ? S 0:00 /usr/local/apache/bin/httpd -k restart 17004 pts/0 S+ 0:00 grep httpd 動いていませんよね? しかしブラウザでlocalhostを開くとIt Works!と出るし編集してからも見れました。 課題が終わらないので困っています。 ネットワークの勉強をしていますが、ちんぷんかんぷんでいまいちのみこめていません。 みなさんの知恵をお貸しください。。。

  • linuxでapacheが動きません。

    linuxでapacheが動きません。 学校でネットワークの勉強をしており、課題をやるために自宅のPCでVMserverを使ってVine4.2をインストールしました。 今openssl0.98nとapache2.2.15をインストールしたところです。 下記のURLの手順と同じようにインストールしました。 http://www.netp.tuis.ac.jp/moodle21/course/view.php?id=7&page=Apache2&gid=0&uid=0&dfsearch=apache 学校ではちゃんと動いたのですが、自宅のPCでのapacheの再起動のところで困っています。 # /etc/init.d/apache start httpd (pid 16970) already running # /etc/init.d/apache stop # /etc/init.d/apache restart httpd not running, trying to start 再起動するとこのようなエラーが出て、startしても同じことの繰り返しです。 # ps -ax|grep httpd と入力するとこう出ました。 Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html 16970 ? Ss 0:00 /usr/local/apache/bin/httpd -k restart 16973 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16974 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16975 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16976 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16977 ? S 0:00 /usr/local/apache/bin/httpd -k restart 17004 pts/0 S+ 0:00 grep httpd 動いていませんよね? しかしブラウザでlocalhostを開くとIt Works!と出るし編集してからも見れました。 課題が終わらないので困っています。 ネットワークの勉強をしていますが、ちんぷんかんぷんでいまいちのみこめていません。 みなさんの知恵をお貸しください。。。