タグ付けされた質問 「init-script」

起動時に実行されるスクリプト。通常、デーモンの起動とファイルシステムのマウントに使用されます。

2
Redhatでデーモンとしてシェルスクリプトを実行するにはどうすればよいですか?
シェルスクリプトがあります。これは基本的に、ログを記録する1つのライナーです。これをinitスクリプトから実行しようとしています。Redhatが使用可能になっていないように見えるため、daemon内部で関数を使用し/etc/init.d/functionsて実行していstart-stop-daemonます。initスクリプト(/etc/init.d/script start)を呼び出すと、プロセスを完了して実行中のままにするのではなく、フォアグラウンドに留まります。このスクリプトをデーモン化する適切な方法は何ですか? 実行するスクリプト: # conf file where variables are defined . /etc/script.conf echo "Starting..." | logger -i echo "Monitoring $LOG_LOCATION." | logger -i echo "Sending to $MONITOR_HOST:$MONITOR_PORT." | logger -i tail -n 1 -F $LOG_LOCATION | grep WARN --line-buffered | /usr/bin/nc -vv $MONITOR_HOST $MONITOR_PORT 2>&1 | logger -i 初期化スクリプト: #!/bin/bash …

1
カーネルとBusyBoxを備えた最小限のLinux:/ etc / inittabは無視され、/ initのみが実行されます
カーネル(デフォルトオプションでコンパイルされた)とBusyBox(デフォルトオプション+静的でコンパイルされた、すべてのアプレットが存在することを含む/sbin/init)のみを含む、小さくて機能的なライブLinux CDを作成することができました。私が作成する全く問題なかったinitrdと移入を/dev、/procと/sysも私は私と全く問題がなかった/initシェルスクリプト。 最近、BusyBoxが/etc/inittab構成を(少なくともある程度)サポートしていることを読んだので、次のいずれかを実行したいと思います。 私の/initシェルスクリプトを忘れて、完全に/etc/inittab構成に依存します。 /initシェルスクリプトと/etc/inittab設定の両方を使用します。 今実際の問題- /etc/inittab私のディストリビューションが起動するときそれは完全に無視されているようです。症状は次のとおりです。 削除して/initそのままにしておく/etc/inittabと、カーネルパニックが発生します。私の想定では、カーネルはまったく実行さ/sbin/initれないか、または/sbin/init検出(または読み取り)されません/etc/inittab。 BusyBoxがなくても正常に動作することを確認しました/etc/inittab。だから、私は両方を削除/initして/etc/inittab、何を推測-再びパニックカーネル。 私が実行しようとした/sbin/init私のシェルから、付属のいくつかの推測の後exec /sbin/init、setsid /sbin/initそしてexec setsid /sbin/init私は、カーネルパニックになってしまいました。ファイルシステムに/ etc / inittabが存在する場合と存在しない場合の両方。 これが私の/initシェルスクリプトの内容です: #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t proc none /proc mount -t sysfs none /sys setsid cttyhack /bin/sh この時点では/etc/inittab、構成が実際に機能していることを知る方法がある限り、その内容がどうなるかは気にしません。ここで/etc/inittab見つけた情報に基づいて、いくつかの構成を試しました。 最低限、私の/ etc / inittabには次の1行だけが含まれています。 ::sysinit:/bin/sh 繰り返しますが、カーネルパニックに陥り、/etc/inittab無視されたようです。 私の小さなライブディストリビューションをBusyBoxで正常に動作させる方法についての提案/etc/inittabは高く評価されています! 更新: 明確にするために、現在のシェルスクリプトを使用してもしなくても、カーネルパニックの問題は発生しません。それはすべて正常に機能し、コンソールは非常に機能し、予期しない問題は発生しません。上で説明したように、唯一の問題は完全に無視されることです。/init/etc/inittab/bin/ash/etc/inittab …

3
initramfsがルートファイルシステムを読み取り専用でマウントする理由
ルートファイルシステムがroinitramfs(およびinitrd)にマウントされている理由は何ですか。 たとえば、Gentoo initramfsガイドはルートファイルシステムをマウントします: mount -o ro /dev/sda1 /mnt/root 以下はなぜですか? mount -o rw /dev/sda1 /mnt/root おそらく良い理由がある(そしてそれはおそらくを含むswitchroot)ことがわかりますが、どこにも文書化されていないようです。

1
rhel / centos-6 initスクリプトでデーモンを起動する標準的な方法は何ですか?
ubuntuのstart-stop-daemonに関する優れたドキュメントがたくさん見つかりましたdaemon。バイナリのmanページがあります。 しかし、rhel / centosスクリプトでデーモンを開始する正規の方法から、ソース/etc/init.d/functionsを指定してdaemon()関数を使用することができます。しかし、良い例やドキュメントは見つかりません。 rhel / centos-6 initスクリプトでデーモンを起動する標準的な方法は何ですか? 私の最初の試みは: #!/bin/bash source /etc/init.d/functions daemon --user USER nohup /path/to/your/binary arg1 arg2 >/dev/null 2>&1 &

1
「invoke-rc.d」または「service」を使用してサービスを再起動する必要がありますか?
私はどちらが最善で、どのような状況で混乱している: invoke-rc.d apache2 restart または service apache2 restart 本当の違いはありますか? man service 次の興味深いビットがあります: サービスは、System V initスクリプトを可能な限り予測可能な環境で実行し、ほとんどの環境変数を削除し、現在の作業ディレクトリを/に設定します。 私は主にDebianに興味がありますが、Mint(これもDebianに基づいています)にも興味があります。

2
Ubuntuブートプロセスからの抽象化の削除
私はほぼ5年後にLinuxを使用しており、起動プロセスがほとんど抽象化されていることに気付きました。つまり、(スプラッシュスクリーンなどにより)舞台裏で何が行われているのかはユーザーにはあまりわかりません。さて、これはエンドユーザーにとっては良いかもしれませんが、オタクには向かないでしょう:) 昔の冗長さを取り戻したい。これが私がやったことです: コマンドラインから「スプラッシュ」パラメータと「クワイエット」パラメータを削除することで、その一部を取り除くことができました。ただし、サービスが1つずつ開始されていることはまだわかりません(init.dのサービスのように)。 initデーモンがupstartに置き換えられたためと思います。何が起こっているかの冗長性を取り戻すために微調整できるいくつかの設定ファイルはありますか? また、ログイン画面が表示されるとすぐに、ブートログの履歴が消去されます。それを無効にする方法はありますか? 注:ディストリビューションをArchまたはSlackwareに切り替えるだけでそれができることはわかっています。しかし、私はそれをしたくありません。

3
CentOSで非特権ユーザーを作成する方法は?
CentOSインスタンスでRhodeCodeサーバーとCeleryデーモンを実行する非特権ユーザーを作成したい。これの受け入れられた定義は、ホームディレクトリがなく、ログインが無効で、シェルアクセスがないと思いますか?adduserのmanページを見ると、これを行うための直感的な方法がわかりません。任意の提案をいただければ幸いです。ありがとう。

1
/ var / run内の* .pidファイルの意味/目的は何ですか
私はLinuxの世界では非常に新しいですが、今はFHSの原則を理解しようとしています。 で/var/run、私は10について見つかっ*.pidたファイルのようにcrond.pidこれだけのPIDが含まれています。 システムで実行されているプロセスが10個を超え、ファイルが10個しかない。 では、それらの目的とそれらを生成したものは何ですか?

2
socat initスクリプトをsystemdに移行
私は、debian 7.2でsysVinitを使用して、次のinitスクリプトでsocatを使用しています。それは完全に機能します: #!/bin/bash DESC=socat DAEMON=/usr/bin/socat LIB=/usr/lib/socat SOCAT_ARGS="-d -d -lf /var/log/socat.log" [ ! -f /etc/default/socat.conf ] || . /etc/default/socat.conf . /lib/lsb/init-functions PATH=/bin:/usr/bin:/sbin:/usr/sbin [ -x $DAEMON ] || exit 0 # # Try to increase the # of filedescriptors we can open. # maxfds () { [ -n "$SOCAT_MAXFD" ] || return …

3
pidofとpgrepの動作が異なるのはなぜですか?
私は/etc/init.d/myserviceこのようなサービスを初期化するためのinitスクリプトを持っています: ... start() { ... daemon /usr/sbin/myservice ... } stop() { ... pgrep myservice pidof myservice ps -ef | grep myservice ... } そして、私がサービスを停止しようとすると、これは出力です: 10000 10001 10000 root 10000 1 0 09:52 ? 00:00:02 /usr/sbin/myservice root 9791 9788 0 10:06 pts/1 00:00:00 /bin/sh /sbin/service myservice stop root 10001 9791 1 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.