Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

systemdやsystemctlコマンドを少し調べてみた

      2013/07/15

systemd が使いにくいので避けていたのですが、やっとFedora 15 を 17 にアップデートしてみました。実はFedora 15もsystemdを採用しているがまだ随分とSystemV系のスクリプトが残っていた。しかしFedora 17ではsystemdを使いこなさないとサーバ運用できないので、調べた結果をまとめてみた。 (Upstartは短命だったな。。。)

まずは、どんなサービスがあるか一覧を確認。

# systemctl --full list-unit-files
UNIT FILE                               STATE
proc-sys-fs-binfmt_misc.automount       static
dev-hugepages.mount                     static
dev-mqueue.mount                        static
media.mount                             static
proc-sys-fs-binfmt_misc.mount           static
sys-fs-fuse-connections.mount           static
.... (省略) ....
httpd-event.service                     disabled
httpd-worker.service                    disabled
httpd.service                           disabled
ip6tables.service                       enabled
iptables.service                        enabled
... (省略) ....

Apache (httpd.service)  は無効(disabled)になっているのが分かるし、ファイアウォール(iptables) は有効(enable)になっているのが分かる。static はおそらくシステム必須のもので変更できないやつかな?(後で調べてみよう)

ちなみに、関連するファイルは/usr/lib/systemd/systemにあるみたい。/usr/lib/systemd/system/httpd.service ファイルの中身はFedora 17の場合こんな内容だった。

[Unit]
Description=The Apache HTTP Server (prefork MPM)
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/httpd/httpd.pid
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -k start
ExecReload=/usr/sbin/httpd $OPTIONS -t
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/usr/sbin/httpd $OPTIONS -k stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

起動してみる。
/etc/init.d/のスクリプト実行するのと比べてコマンド打つのが少し面倒になった。

# systemctl start httpd.service

停止はstartをstopにするだけ。

# systemctl stop httpd.service

 

上記はあくまで手動での起動・停止なので、次はシステム起動時に自動的に起動できるようにしてみる。

# systemctl enable httpd.service
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

System Vと同じく、シンボリックリンクを作って自動起動を制御しているみたいなので、手動でシンボリックリンク作ってもいけそうだ。

有効になったかどうかを確認してみると、無事enableになったのが確認できた。

# systemctl --full list-unit-files | grep httpd.service
httpd.service                           enabled

無効はenableの逆、disalbe を使う。

# systemctl disable httpd.service
rm '/etc/systemd/system/multi-user.target.wants/httpd.service'

 

以上、基本操作はこんなところでしょうか。そのうちシステムの起動プロセスも調べてみよう。

 - IT技術, サーバ構築 , ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
標準出力と標準エラー出力を入れ替える方法@bash

標準出力と標準エラー出力を入れ替える方法を、結論だけを先に書くと 3>&a …

no image
echoコマンドで改行やタブを扱うには@Linux (Debian Etch)

UNIX系OSでも最も有名な部類に入るコマンドechoは、引数の文字列や変数の中 …

no image
Android のセキュリティ確保したけりゃこれ使ってみろ

最近は、Androidもマルウェアやウィルスにさらされてくるようになりました。 …

no image
インストールしているThunderbird 2の拡張機能と不足機能

Thunderbirdに以下のアドオンをインストールしてみました。 Auto A …

no image
ネットワーク遅延のシミュレーション@CentOS 5

最近のLinux では、簡単にネットワーク遅延をシミュレーションできるようです。 …

no image
Galaxy SでGPS制度が悪い@b-mobile U300

※いろいろやった結果のまとめは一番下です。 Galaxy Sを手に入れたので、b …

no image
perlのCPANでモジュールをインストール@Debian Etch

CPANにはperlのモジュールが多数登録されています。これをインストールする方 …

no image
Trackpointでスクロールできない@ThinkPad キーボード 55Y9024 with Windows7 64bit

ThinkPadのトラックポイントキーボード 55Y9024 を使っているのです …

no image
cygwin ck のダブルクリック選択文字列の範囲を変更する

Cygwin 用のターミナルソフトウェア cygwin ck  を便利に使わせて …

no image
シェルで逐一時間表示@bash

デバッグを目的に、 逐一コマンド実行時に時間を表示させたい場合があります。 $ …