ベストアンサー1
2016年アップデート
ここにある回答のほとんどは5年前のものなので更新する時間です。
Ubuntuはデフォルトでupstartを使用しましたが、昨年はsystemdを好み、それを放棄しました。以下を参照してください。
これで良い記事があります。スタートアップユーザー向けにシステム化Ubuntu wiki - upstartとsystemdの非常に詳細な比較とupstartからsystemdへの移行ガイド。
(知っているUbuntu Wikiによると基本的upstart-sysv
にsudo update-initramfs -u
。 )
以下のコマンドとスクリプトセクションのほとんどの情報は、記事で使用されているいくつかの例で修正されました(Stack Exchangeユーザーの貢献と同様にライセンスが簡単に付与されています)。クリエイティブ・コモンズ著作者表示 - 同一条件変更許可3.0ライセンス)。
以下は、一般的に使用されるコマンドと簡単なスクリプトをすばやく比較したものです。詳細な手順については、以下のセクションを参照してください。この回答は、質問で尋ねるように、Upstartベースのシステムの以前の動作をsystemdベースのシステムの新しい動作と比較しますが、「Upstart」とマークされたコマンドは必ずしもUpstartに固有のものではありません。通常、次のコマンドです。システム化されていないLinuxおよびUnixシステム。
注文する
suを実行してください:
- 突然現れる:
su
- システム:
machinectl shell
(下記の「suコマンドの置換」セクションを参照)
実行画面:
- 突然現れる:
screen
- システム:
systemd-run --user --scope screen
(下記の「予期しないバックグラウンドプロセスの終了」セクションを参照)
tmuxを実行します。
- 突然現れる:
tmux
- システム:
systemd-run --user --scope tmux
(下記の「予期しないバックグラウンドプロセスの終了」セクションを参照)
foo ジョブの開始:
- 突然現れる:
start foo
- システム:
systemctl start foo
ジョブを停止 foo:
- 突然現れる:
stop foo
- システム:
systemctl stop foo
fooジョブの再起動:
- 突然現れる:
restart foo
- システム:
systemctl restart foo
役職一覧:
- 突然現れる:
initctl list
- システム:
systemctl status
ジョブ foo の構成を確認してください。
- 突然現れる:
init-checkconf /etc/init/foo.conf
- システム:
systemd-analyze verify /lib/systemd/system/foo.service
ジョブの環境変数をリストします。
- 突然現れる:
initctl list-env
- システム:
systemctl show-environment
ジョブの環境変数を設定します。
- 突然現れる:
initctl set-env foo=bar
- システム:
systemctl set-environment foo=bar
ジョブの環境変数を削除します。
- 突然現れる:
initctl unset-env foo
- システム:
systemctl unset-environment foo
丸太
upstartでは、ログは/var/log/upstartディレクトリにあるプレーンテキストファイルであるため、通常どおりに処理できます。
cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log
systemdでは、ログはテキストファイルではなく内部バイナリ形式で保存されるため、journalctl
ログにアクセスするには次のコマンドを使用する必要があります。
sudo journalctl -u foo
sudo journalctl -u foo -f
スクリプト
はいスタートアップスクリプトに書く/etc/init/foo.conf
:
description "Job that runs the foo daemon"
start on runlevel [2345]
stop on runlevel [016]
env statedir=/var/cache/foo
pre-start exec mkdir -p $statedir
exec /usr/bin/foo-daemon --arg1 "hello world" --statedir $statedir
はいシステムスクリプトに書く/lib/systemd/system/foo.service
:
[Unit]
Description=Job that runs the foo daemon
Documentation=man:foo(1)
[Service]
Type=forking
Environment=statedir=/var/cache/foo
ExecStartPre=/usr/bin/mkdir -p ${statedir}
ExecStart=/usr/bin/foo-daemon --arg1 "hello world" --statedir ${statedir}
[Install]
WantedBy=multi-user.target
su コマンドの置換
プール要求#1022で、コマンド置換がsu
systemdにマージされました。
Lennart Petlingによると、「suは実際に壊れた概念です」。
彼は説明した「以前と同様にsuとsudoを使用できますが、完全に機能すると期待しないでください。」。
今、su
同様の動作を達成するための正式な方法は次のとおりです。
machinectl shell
もう進む レナート・ポトリンが説明します。 問題#825の議論で:
「まあ、これは長い間議論されていますが、問題はsuが何をすべきかは明確ではありません。 、完全なログインではないので、誤解しないでください。」 - Lennart Petling。
また見なさい:
- Lennart Poetteringは「su」コマンド置換をsystemdにマージする:Fedora Rawhideでテスト
- Systemdは「su」コマンド機能を吸収します。
- Systemdは「su」を吸収します。(ハッカーニュース)
バックグラウンドプロセスが予期せず終了しました。
コマンドは次のとおりです。
これ以上期待どおりに動作しません。。たとえば、nohup
セッションからログアウトした後でもプロセスが継続的に実行されることを保証するPOSIXコマンドです。それもう有効ではありませんシステムに。特別な方法や他の方法で同様のプログラムを呼び出すscreen
ことも必要です。tmux
一緒に実行するプロセスは終了します(これらのプロセスを終了しないことが通常、screenまたはtmuxを実行する主な理由です。)
これはバグではありませんが、慎重に決定したものであるため、将来修正される可能性は低くなります。レナルト・ポトリンはこう述べています。説明するこの問題について:
私が見ると、UNIXは基本的にログアウト後も任意のユーザーコードを制限なく維持できるという点で実際に奇妙なようです。多くのOSの人々はこれが可能でなければならないと長い間話してきましたが、確かにデフォルトではありません。しかし、これまで誰もあえてスイッチをオンにして、デフォルトからオプションに変更できませんでした。ログアウト後にユーザーセッションをクリーンアップしないことは、見苦しくハッキング的であるだけでなく、セキュリティ上の問題でもあります。 systemd 230は、最終的にスイッチをオンにし、ユーザーがログアウトしたときにすべてを適切にクリーンアップするようにデフォルト設定されました。
詳細については、次を参照してください。
- Systemdはデフォルトでバックグラウンドプロセスの終了を開始します。
- Systemd v230は、ユーザーのログアウト、壊れた画面、tmuxの後にバックグラウンドプロセスを終了します。
- Debian のバグ #825394:systemdは、ユーザーがログアウトした後にバックグラウンドプロセスを終了します。
高水準のスタートコンセプト
ある意味、systemdは逆さまに動作します。 upstart ではジョブができるだけ早く開始され、systemd では必要に応じてジョブが開始されます。結局のところ、両方のシステムはほぼ同じ順序で同じ作業を始めることができますが、言えば反対方向に考えているのです。
以下の方法スタートアップユーザー向けにシステム化説明する:
突然現れるプロセス(作業)開始モデルは「貪欲なイベントベース」です。つまり、開始イベントが発生したときに使用可能なすべての操作ができるだけ早く開始されます。起動プロセス中に、upstart は開始または rcS などのいくつかの初期イベントを、初期サービスが開始され、電子が実行されている間に後期サービスが開始される「ツリールート」に合成します。新しいタスクを有効にするには、その設定ファイルを/ etc / init /にインストールするだけです。
システムプロセス(ユニット)起動モデルは「遅延依存性ベース」です。つまり、他の起動ユニットがそれに依存する場合にのみ、ユニットが起動される。起動中に、systemdは「ルート単位」(grubでオーバーライドできるdefault.target)を起動し、拡張を渡してその依存関係を開始します。新しいデバイスを有効にするには、起動シーケンスデバイス(通常はmulti-user.target)の依存関係として自分自身を追加する必要があります。
流通に活用
ウィキペディアの最近のデータによると、
upstart ディストリビューションはデフォルトで使用されます。
デフォルトでは、systemdディストリビューションが使用されます。
- アーキテクチャLinux- 2012年10月から
- 中央オペレーティングシステム- 2014年4月(7.14.04)より
- コアオペレーティングシステム- 2013年10月現在(v94.0.0)
- ダーバン- 2015年4月現在(v8)
- Fedoraの帽子- 2011年5月現在(v15)
- マジア- 2012年5月現在(v2.0)
- SUSEを開く- 2012年9月時点(v12.2)
- Red Hat Enterprise Linux- 2014年6月時点(v7.0)
- SUSE Linuxエンタープライズサーバー- 2014年10月基準(v12)
- Ubuntu- 2015年4月時点(v15.04)
(望むよりウィキペディア最新情報を入手してください)
Upstartやsystemdを使用しないディストリビューション:
- デバン(Debian フォークは Debian コミュニティの systemd 議論のために作成され、これにより Debian コミュニティメンバーが辞任しました.)イアン・ジャクソン) - 特におすすめ初期自由次の初期化システムを含めることを検討してください。サイン、オープンRC、走る、s6そして羊飼い。
- ボイドLinux- 目的走る初期化システムとサービスマネージャとして
- ルート図- 目的オープンRC
- オペレーティングシステム- 目的放射
- FreeBSD使う伝統的なBSDスタイルの初期化(SysV 初期化ではない)
- ネットワークBSD使用RC.d
- トンボ伝統を使う内部に
- オープンBSD使用RCシステム起動スクリプトの説明ここ
- アルパインLinux(セキュリティに焦点を当て、比較的新しく、よく知られていないディストリビューションがますます人気を集めています。ルーストアバウトはいUbuntuからAlpineへの公式イメージの移行)使用オープンRCシステム初期化
議論
過去にsystemd を避けるために Debian フォークが提案されました。。これドイツ語 GNU+Linux作成済み - systemdのないDebianブランチ(ありがとう。マーフィー1コメントで指摘しました。)
この紛争の詳細については、以下を参照してください。
多くの人がすでに知っていますが、Ian Jacksonが推進したInit GR Debian投票は、システムの雪崩からDebianの遺産とユーザーを保護するのにほとんど役に立ちませんでした。
このような状況は、実際に開発の自由を脅かし、Debian とその上流と下流のパートナーに深刻な結果をもたらす可能性のあるシステムの依存関係をロックする可能性があります。
CTTEは依存関係をうまく交換し、sysvinitを介してsystemdを微妙にインストールして時間をかけましたが、このプロセスでさえ疲れていてドラマでいっぱいでした。ついに一週間前、イアン・ジャクソンが辞任しました。 [...]
私はすぐに技術委員会で辞任します。
プロジェクトメンバーのうち30~40%の見解がTCで引き続き代表されることが重要ですが、現時点でそうするには私があまりにも議論の余地がある数値です。私は一歩後退し、プロジェクトガバナンスへの対話をあまり個人的にするように努力しなければなりません。 [...]
- 初期自由:
Devuan は Debian の基本初期化システムとして使用されることについての議論から生まれました。これsystemdに対するDebianの公式立場主張がいっぱい他の人は真実ではないと暴露した。。興味のある読者はこのホットな話題について話し続けることができます。体系的な議論。しかし、落ち着きを保ち、丁寧な声を維持してください。 Devuanでは、過去を振り返るよりも間違ったプログラミングに興味があります。 [...]
systemd議論に関するいくつかのウェブサイトと記事が作成されました。
持つたくさんHacker Newsに関する興味深い議論:
- https://news.ycombinator.com/item?id=7728692
- https://news.ycombinator.com/item?id=13387845
- https://news.ycombinator.com/item?id=11797075
- https://news.ycombinator.com/item?id=12600413
- https://news.ycombinator.com/item?id=11845051
- https://news.ycombinator.com/item?id=11782364
- https://news.ycombinator.com/item?id=12877378
- https://news.ycombinator.com/item?id=10483780
- https://news.ycombinator.com/item?id=13469935
他の分布でも同様の傾向が見られます。
哲学
突然現れるDOTADIWのUnix哲学である「1つのことをうまくやってください」に従ってください。これは伝統的なinitデーモンを置き換えます。サービスの開始および停止を除くその他の操作は実行されません。他のタスクは他の特別なサブシステムに委任されます。
システムそれ以上を行います。サービスの開始と停止に加えて、パスワード、ログイン、端末、電源管理、工場初期化、ログ処理、ファイルシステムのマウントポイント、ネットワークなどを管理します。情報ファイルの一部の機能。
拡張計画
~によるとsystemdの成果と今後の発展の見通し2014年のGNOME.asiaでのLennart Poetteringの講演によると、systemdの主な目標、その領域、およびまだ進行中の領域は次のとおりです。
システム目標:
私たちの目標
Linuxを多数の部分から競争力のある汎用オペレーティングシステムに置き換えます。
インターネットを構築する次世代オペレーティングシステムの統一ディストリビューション間の無意味な違い
コアオペレーティングシステムにイノベーションを再インポートします。
デスクトップ、サーバー、コンテナー、組み込み、モバイル、クラウド、クラスター、... .この地域は思ったより近いです。
管理者の複雑さを減らし、監督なしで安定性を高めます。
すべては考える価値がある
自動検索とプラグアンドプレイが重要です。
私たちは壊れたものをテープで貼るのではなく修正します。
すでに扱っている領域:
私たちが扱った内容:
システムの初期化、ロギング、ログイン管理、デバイス管理、一時ファイルと揮発性ファイルの管理、バイナリ形式の登録、バックライトの保存/復元、rfkillの保存/復元、ブートチャート、先読み、暗号化されたストレージ設定、EFI / GPTパーティション検索、仮想マシン/コンテナ登録、最小コンテナ管理、ホスト名管理、ロケール管理、時間管理、ランダムシード管理、sysctl変数管理、コンソール管理、... 。
進行中の作業:
私たちがすること:
- ネットワーク管理
- システムネットワーク
- ローカルDNSキャッシュ、mDNSレスポンダ、LLMNRレスポンダ、DNSSEC検証
- カーネルのIPC
- kdバス、sdバス
- NTP時間と同期
- システム時刻同期
- コンテナとのさらなる統合
- サービスサンドボックス
- アプリケーションサンドボックス
- オペレーティングシステムイメージフォーマット
- コンテナイメージ形式
- 画像フォーマットの適用
- 自動検索機能付きGPT
- 無状態システム、インスタンス化可能システム、工場初期化
- / usrはオペレーティングシステムです。
- / etcは(オプションの)設定です。
- / varは(オプション)状態です。
- 原子ノードの初期化と更新
- クラウドとの統合
- ノード間サービスの管理
- 検証可能なオペレーティングシステムイメージ
- ファームウェアまで
- ブートローダー
この回答の範囲
〜のようにマーフィー1「長年にわたり、systemdの作業範囲が単純なシステムの起動を超えてはるかに拡張されていることに注意する必要があります」とコメントは述べています。
私はここに関連するほとんどの情報を含めようとしました。ここでは、質問で要求されたようにinitシステムとして使用したときのUpstartとsystemdの共通機能を比較しました。これらの機能はStartupと比較することはできませんが、その存在が非常に重要であるため、initシステムの範囲外のsystemdの機能だけに言及しました。 。これら2つのプロジェクトの違いを理解することが重要です。詳細については関連文書を確認してください。
追加情報
詳しくは以下をご覧ください。
- 突然現れるウェブサイト
- システムウェブサイト
- 突然現れるウィキペディアで
- システムウィキペディアで
- システム構造ウィキペディアで
- Linus Torvaldsと他の人はLinux用のsystemdについて話し合います。(ZDネットワーク)
- システム化に関する議論著者:ロバート・グラハム
- 自由運動を始める
- UpstartからSystemdに切り替えるのはなぜですか?