• ベストアンサー

qmail起動スクリプト

qmailの起動スクリプトのサンプルをダウンロードしましたが、 start) touch /var/lock/subsys/qmaild stop) rm /var/lock/subsys/qmaild と書いてありました。 このファイルは一般的なソフトの*.pidのような役割なのでしょうか? 別の方のサンプルでは /var/lock/subsys/qmaild ではなく /var/lock/qmail となっていました。 この /var/lock/subsys/qmaild と /var/lock/qmail の違いがあるということは、これの設定ファイルがあると思うのですが、そうなのでしょうか?

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

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.1

その辺の記述については、例えば、Redhat の場合、/etc/rc.d/rc スクリプトに書かれています。 # First, run the KILL scripts. # Now run the START scripts. という箇所です。 例えば、/etc/rcN.d/S99qmail というファイルを作成したのであれば、必要なファイルは/var/lock/subsys/qmail になりますし、/etc/rcN.d/S99qmaild というファイルを作成したのであれば、必要なファイルは /var/lock/subsys/qmaild になります。これは2重にプログラムを起動しないようにするための仕組みであり (そういう意味では *.pid ファイルに近いですが、PID を保持していないところが異なります)、Redhat では /var/lock/subsys 配下に qmail ファイルが存在していれば既に起動しているものとして起動処理を行わないようになっています。/var/lock/subsys か /var/lock の違いはディストリによって異なっているのでしょう。

ceshkr
質問者

お礼

/etc/rc.d/rc スクリプトにFirst, というのが有り、その10行ぐらい下に [ ! -f /var/lock/subsys/$subsys ] && \ というのが有りました。 なので、/var/lock/subsys か /var/lock かは、前者を使えばよさそうだと分かりました。 qmaild か qmail かの使い分けも分かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • anights
  • ベストアンサー率72% (35/48)
回答No.3

最近のディストリビューションはFHSを準拠するような動きとなっています。そのため、 lockファイルの格納場所には、/var/lock pidファイルの格納場所には、/var/run といった使い方が標準的です。 lockディレクトリ配下にサブディレクトリを切るかどうかまでは ディストリビューションによる差異です。

参考URL:
http://www.itmedia.co.jp/help/howto/linux/0007master/14/
ceshkr
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

主にrcスクリプトによる二重起動を防ぐためのものなので、ファイル名は別になんだって構いませんし、ディレクトリも「ここに置け!」という決まりも設定ファイルもありません。 まとまっていた方がわかりやすいのですが、それがOSごとに違うと言うだけです。/var/run/の下にまとまっているOSもあります。

ceshkr
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • rcスクリプトを理解したい

    CentOS4.4を使っています。/etc/rcを読んでいて理解しようとしていました。内容的に何をしているかは分かるのですが、文法的に 分からないところがあり質問させてください。以下の subsys=${i#/etc/rc$runlevel.d/K??} のi#やK??の部分とkillprocとactionの部分が分かりません。 killprocやactionというプログラムがあるのでしょうか? manで検索はしてみましたが、ありませんでした。 # First, run the KILL scripts. for i in /etc/rc$runlevel.d/K* ; do check_runlevel "$i" || continue # Check if the subsystem is already up. subsys=${i#/etc/rc$runlevel.d/K??} [ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] \ || continue # Bring the subsystem down. if egrep -q "(killproc |action )" $i ; then $i stop else action $"Stopping $subsys: " $i stop fi done

  • qmailのpop3が authorization faild

    只今、qmailの構築中ですが、サーバ単体でのテストで どうしても受信がエラーになってしまします どなたか助けてください qmail自体というよりも、shellの使い方が間違っている 気がします 環境: redhat6.2、qmail-1.03、 tcpserver(ucspi-tcp-0.88)、 checkpassword-0.81、 Maildir形式、pop(apopではない) 現象: (1)qmail(qmail-inject)にて自分宛に送る /home/user/Maildir/new/にデータ存在確認(成功) (2)スクリプトを/var/qmail/rc(後述)にて作成 (3)自分自身でメール受信 (失敗) > telnet localhost pop3 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK <812.998537941@l2.sunam.com> >user yamada +OK >pass **** -ERR authorization failed Connection closed by foreign host. /var/log/maillogには、 -ERR this user has no $HOME/Maildir ? と出力される ※尚、ユーザホームに、Maildirは作成済 ※スクリプトの内容を直接手入力するとなぜか正常に 受信できます!? スクリプトの問題? どなたか、お助けください よろしくお願いします ※/var/qmail/rc(起動スクリプト) #!/bin/sh exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start ./Maildir/ splogger qmail & #qmail for tcpserver /usr/local/bin/tcpserver -x /etc/tcp.smtp.cdb -v \ -u 506 -g 505 0 smtp /var/qmail/bin/qmail-smtp \ 2>&1 | /var/qmail/bin/splogger smtpd 3 & #qmail-pop3d for tcpserver /usr/local/bin/tcpserver -x /etc/tcp.pop3.cdb \ -v 0 pop-3 /var/qmail/bin/qmail-popup \ www.doamin.com /bin/checkpassword \ /var/qmail/bin/qmail-pop3d Maildir 2>&1 \ | /var/qmail/bin/splogger pop3d 3 & 以上

  • Xが起動しなくなりました。

    CentOS4.4を使っていました。 バックアップの練習をしようと思って runlevel 5でログインしてターミナルで dd if=/dev/hda1 of=/dev/hdb1 を実行しました。 やはりこれはまずかったでしょうか? それから次回起動時からうまく起動しなくなりました。 GRUBのメニューはでてGUIでログインして 起動中can not touch /var/lock/subsys/kudzu 読み込み専用ファイルです。 といったエラーが出てきます。 その後反応しなくなります。 テキストでログインは可能です。 /var/logなどはみたのですが、原因はよく分かりませんでした。 どういう対処の仕方があるでしょうか?

  • 謎!? /etc/rc.d/init.d/qmail.shのtcpserverでのpop3dの起動でホスト名が反映されない?

    宜しくお願い致します。 RedHat9、qmail-1.03でdaemontools-0.76を使用しています。 以前はold.co.jpという名称でメールtcpserverを運営してました。 こないだ、new.dyndns.comに切換えようとしたのですが # hostname new.dyndns.com # grep -lr old.co.jp /etc/rc.d # grep -lr new.dyndns.com /etc/rc.d /etc/rc.d/init.d/qmail.sh #cat /etc/rc.d/init.d/qmail.sh | grep -v ^# | grep -v ^$ PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin [ -f /var/qmail/rc ] || exit 0 case "$1" in start) : #For POP3 echo -n 'qmail-pop3d starting.' /usr/local/bin/tcpserver -x /etc/tcpserver/pop3d_rules.cdb 0 \ pop-3 /var/qmail/bin/qmail-popup new.dyndns.com /bin/checkpassword \ /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 3 & echo touch /var/lock/qmail ulimit -a ;; : となっているにも拘らずリブートしても何故か # ps ax | grep pop 7315 ? S 0:00 supervise qmail-pop3d 7864 ? S 0:00 /usr/local/bin/tcpserver -x /etc/tcpserver/pop3d_rule s.cdb 0 pop-3 /var/qmail/bin/qmail-popup old.co.jp /bin/checkpassword /var/qmai l/bin/qmail-pop3d Maildir 16439 pts/1 S 0:00 grep pop と以前のホスト名のままです。何か他にも設定必要なのでしょうか?? # kill -HPU 7864 としても相変わらずなのです。

  • シェルスクリプトでファイル削除したい

    シェルスクリプト初心者です 今回、Linuxサーバ側にある複数のファイルを削除する 必要が出てきました このため、シェルスクリプトを書いて複数(2000程度) のファイルを削除しようとして試験をしています 試験のLinuxサーバ側の/root の中にfile1,file2・・・ 等々を置いています そこに次のようなスクリプトを記載して ファイルが置かれている場所と同じ/rootに置いて実行させるのですが ************** スクリプト ******** #!/bin/sh echo "start" # # rm F1010002.JPG rm F1010003.JPG rm F1010004.JPG echo "end" ****************************** 下記のようなエラーが出ます ****************************************** start rm: cannot lstat `F1010002.JPG\r': そのようなファイルやディレクトリはありません rm: cannot lstat `F1010003.JPG\r': そのようなファイルやディレクトリはありません rm: cannot lstat `F1010004.JPG\r': そのようなファイルやディレクトリはありません end ****************************************** サーバ側にSSHで入って、 # rm F1010002.JPG とひとつひとつ打鍵していくとファイルは削除されます スクリプトの間違い等あるのでしょうか 教えていただければ幸いです なお、ファイル数2000件程度のスクリプトを記載する方法は 別のソフトを利用して作成できるので・・・その件はいいのですが・・・

  • RedHat ES4でPostgreSQLを自動起動したい

    RedHatにPostgreSQL8.2.3をインストールしました。 インストール自体は他のディストリビューションでも何回も行っているので 特に問題なく終了しました。しかし自動起動がうまくいきません。 /etc/init.d/postgresqlを以下の内容で作成しました。 ----- ここから ----- #!/bin/sh # chkconfig: - 87 13 # description: PostgreSQL8.2 # processname: postmaster # pidfile: /var/run/postgresql.pid pidfile=/var/run/postgresql.pid . /etc/init.d/functions case "$1" in start) su - postgres -c "pg_ctl start" touch $pidfile ;; stop) su - postgres -c "pg_ctl stop -m fast" rm -f $pidfile ;; restart) su - postgres -c "pg_ctl stop -m fast" su - postgres -c "pg_ctl start" ;; *) echo "Usage: /etc/rc.d/init.d/postgresql {start|stop}" esac exit 0 ----- ここまで ----- このスクリプト自体はrootにて # /etc/init.d/postgresql start できちんとDBが起動する事は確認しています。これを以下のようにして 自動起動の設定を行いました。 # chmod 755 /etc/init.d/postgresql # chkconfig --add postgresql # chkconfig --level 35 postgresql on # chkconfig --level 06 postgresql off 問題はここからで、この状態で再起動を行うと、起動時にpostgresqlを 実行するところでとまってしまうのです。pidファイルなどゴミが無い事は 確認済みなのですが・・・その状態でもネットワークログインは出来るので プロセスを確認すると以下のようなプロセスが残った状態でとまっていました。 root 2765 0.0 0.0 5920 760 ? S 00:47 0:00 initlog -q -c /etc/rc5.d/S87postgresql start root 2766 0.0 0.0 6916 1336 ? S 00:47 0:00 /bin/sh /etc/rc5.d/S87postgresql start root 2769 0.0 0.0 6124 1276 ? S 00:47 0:00 su - postgres -c pg_ctl start この状態で # kill 2765 2766 2769 とすると起動がまた再開されるので、PostgreSQLの起動時にとまっている事は 明らかです。 いったい何が原因なのか、さっぱりわかりません。 どなたかヒントだけでもいただけたら幸いです。 よろしくお願いします。

  • scriptが実行されません

    現在勉強中でドットインストールのJavaScriptでストップウォッチを作ろうのコードを書いています。 ですが、急にscript が実行されなくなってしまいました。 何かコードに間違いがあるのでしょうか?ご指摘いただけると助かります。 以下コード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>ストップウォッチ</title> <style> body{ background:#e0e0e0; font-family:Arial, sans-serif; text-align:center; } #timerText{ color:#00aaff; font-size:128px; margin:40px auto; text-shadow:0 1px 0 rgba(255,255,255,0.5); } </style> </head> <body>  <div id="timerText">0.00</div>  <button id ="start">START</button>  <button id ="stop">STOP</button>  <button id ="reset">RESET</button> <script> (function(){ 'use.strict'; var startTime; var timerId; var startButton =document.getElementById('start'); var stoptButton =document.getElementById('stop'); var resetButton =document.getElementById('reset'); var timerText =document.getElementById('timerText'); startButton.addEventListener('click',function(){ startTime =Date.now(); updateTimerText(); }); function updateTimerText(){ timerId = setTimeout(function(){ var t =Date.now() - startTime; timerText.innerHTML =(t / 1000).toFixed(2); updateTimerText(); }, 10); } })(); </script> </body> </html> よろしくお願い致します。

  • 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)は起動しませんでした。 私としてはスクリプトの書き方が間違っているのではないかと予想しているのですが、スクリプトについてネットで調べると、今回のような単純なアプリ起動・終了方法についての情報があまり載っていない(と思う)ため、自力では間違い箇所が発見できませんでした。 ついでと言ってはなんですが、起動スクリプトの書き方や設定方法について参考になるサイトがありましたら、そちらも教えていただけましたら幸いです。 以上、宜しくお願い致します。

  • memcached を起動できません。

    ■質問内容 memcached を起動できません対処方法を教えてください。 memcached を起動できないとサーバの設定が前に進まないので困っています。 ■詳細 OS:CentOS 6.4 インストールパッケージ: memcached-1.4.4-3.el6.x86_64 memcached-devel-1.4.4-3.el6.x86_64 おこなった作業は以下です。 ◆インストール # yum install memcached-1.4.4-3.el6.x86_64 memcached-devel-1.4.4-3.el6.x86_64 ◆memcachedの設定 # vi /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" #CACHESIZE="64" CACHESIZE="512" OPTIONS="" #LOG OPTIONS="-vv 1>> /var/log/mem.log 2>> /var/log/memcached.log" ※デフォルトの設定から、キャッシュサイズとログ取得の設定のみ変更しました。 ◆起動 # service memcached start ◆起動確認 # service memcached status memcached dead but subsys locked memcached dead but subsys locked が出力されていましたので、以下のコマンドを実行しロックファイルを削除しました。 # rm /var/lock/subsys/memcached その後、memcached を再起動しても状態変わらずです。 なお、ログには以下に出力されていました。 # cat /var/log/memcached.log Failed to open library "default_engine.so": default_engine.so: cannot open shared object file: No such file or directory システム全体をファイル検索したところ、たしかにdefault_engine.soはみつかりませんでした。 default_engine.soがないために、memcachedが起動しないと考えていますが、default_engine.soをインストールする方法を調べましたがわかりませんでした。

  • vsftpdが起動できない

    現在、株式会社KDDIウェブコミュニケーションズのVPSを 借りているのですが、管理ツールがよくわからないので SSHを利用してサーバを構築していこうと考えています。 OSはCentOS5です。 それで、FTPサーバとしてVSFTPDを使用しようと思い vsftpd.confの設定を行い /etc/rc.d/init.d/vsftpd start でVSFTPDを起動しようとしたのですが 失敗になってしまいます。 こういった場合、何か原因として考えられることはありますでしょうか? ちなみにvsftpd.confの設定も何度も見直しました。 また、/var/lock/subsys/にvsftpd という file はありませんでした。 FTPクライアントで接続できないとかではなく、そもそも VSFTPDを起動できなくて困っています。 よろしくお願いいたします。