Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,014)  
HandBrake Japanese Language Version  (2,964)  
CrystalDiskInfo  (1,714)  
Boookends  (1,269)  
CrystalDiskMark  (874)  
Tera Term  (825)  
CotEditor  (626)  
FFFTP  (593)  
えこでこツール  (532)  
10  ffdshow  (524)  
11  SMPlayer  (503)  
12  Cabos  (492)  
13  ギコナビ  (475)  
14  Rappelz Server  (471)  
15  MergeDoc  (457)  
More >>

最近ブックマークされた記事

UbuntuのイベントベースinitデーモンUpstart

2008年02月18日 12:12 Mark-Sobell(2008年2月8日(金)) 1 2 3 4 5 6

/etc/event.dディレクトリのジョブ定義ファイル

 UbuntuにおけるSysVinitからUpstart initへの移行に伴い、/etc/event.dディレクトリに定義されるジョブの数は増えることになる。ここでは、Upstartパッケージによってこのディレクトリに置かれたジョブのいくつかを説明する。

 /etc/event.d/rc2というジョブ定義ファイルは、その他のrc?タスクによく似たrc2タスクを定義したものだ。このrc2タスクは、システムがマルチユーザモード(イベント名は「runlevel 2」)に入ると起動され、システムがそれ以外の実行レベル(「runlevel [!2]」)に移ると停止する。スクリプトの最初の部分は、runlevelユーティリティを呼び出している。これにより、システムを実行レベル2に移行させ(Upstartには実際の実行レベルは存在しない)、2つの変数に値が割り当てられる。実際に作業を行うのはexecコマンドであり、2という引数を用いて/etc/init.d/rcスクリプトが実行される。このスクリプトは、/etc/rc?.dディレクトリから引数に対応したリンク先を呼び出す。この場合はrc2のタスクによって、/etc/rc2.dディレクトリ内のリンク先にあたるinitスクリプトが実行される。

$ cat /etc/event.d/rc2 
# rc2 - runlevel 2 compatibility
#
# This task runs the old sysv-rc runlevel 2 ("multi-user") scripts. It
# is usually started by the telinit compatibility wrapper.

start on runlevel 2

stop on runlevel [!2]

console output
script
	set $(runlevel --set 2 || true)
	if [ "$1" != "unknown" ]; then
		PREVLEVEL=$1
 		RUNLEVEL=$2
		export PREVLEVEL RUNLEVEL
	fi

	exec /etc/init.d/rc 2
end script

ttyサービス

 以下に示すのは、tty1のgettyプロセスを起動して監視するサービスのためのジョブ定義ファイルである。

$ cat /etc/event.d/tty1 
# tty1 – getty
#
# This service maintains a getty on tty1 from the point when
# the system is started until it is shut down again.

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /sbin/getty 38400 tty1

 このサービスは、実行レベルが2~5のいずれかのイベント発生時(つまり、システムがマルチユーザモードに入ったとき)にgettyプロセスを起動し、実行レベルが0、1、6のいずれかになったとき(つまり、システムのシャットダウン、シングルユーザモードへの移行、リブートが行われたとき)に停止する。「respawn」キーワードは終了時にジョブを再起動するようにinitに指示するものであり、「exec」はtt1のgettyプロセスをボーレート38,400で実行する。以下のinitctlはtty1サービスが起動されてプロセス4747として稼動中であることを、psはこのプロセスに関する情報をそれぞれ示している。

$ sudo initctl list tty1 
tty1 (start) running, process 4747
$ ps -ef | grep 4747 
root   4747   1 0 Jul02 tty1   00:00:00 /sbin/getty 38400 tty1
最終更新:2008年04月19日 17:07