Những ưu / nhược điểm của Upstart và systemd là gì?


183

Dường như systemd là hệ thống init mới nóng hổi trên block, giống như Upstart đã được vài năm trước. Những ưu / nhược điểm cho mỗi là gì? Ngoài ra, làm thế nào để mỗi so sánh với các hệ thống init khác?


4
@keith iirc openrc chỉ đơn giản là sử dụng SysV, lợi thế là một bộ sưu tập được thiết kế tốt các script khởi động có sử dụng các thành phần phổ biến và là di động (có nghĩa là làm việc trên bất kỳ vỏ) Đó là một dọn dẹp tốt, nhưng không thực sự là một initd mới
xenoterracide

@xeno Nó có, nhưng bạn thực sự không thể nói. không có liên kết RCX.d hoặc [KS] nào cả. Trên thực tế, sysv init khá linh hoạt và các đường băng không thực sự được sử dụng theo cách thông thường.
Keith

Mặc dù tác giả của blog này chống lại systemd, tôi khuyên bạn nên đọc nó. Nó đi qua những ưu và nhược điểm của systemd và BSD init. textplain.net/blog/2015/ từ
Peschke

1
Vui lòng xem qua bản cập nhật 2016 unix.stackexchange.com/a/287282/49091 .
igaurav

Bất kỳ lợi thế có mục đích nào của systemd sẽ không bù đắp 100 năm chi phí đã phát sinh cho thế giới để thực hiện điều này. Mỗi phút hoặc giờ hoặc ngày dành cho quản trị viên Unix để xử lý rác này phải tăng lên hàng tỷ và vì lợi ích thực sự nào ngoài một vài tiếng chuông và còi?
Waslap

Câu trả lời:


90

Cập nhật năm 2016

Hầu hết các câu trả lời ở đây là năm tuổi vì vậy đây là thời gian cho một số cập nhật.

Ubuntu đã từng sử dụng upstart theo mặc định nhưng họ đã từ bỏ nó vào năm ngoái để ủng hộ systemd - xem:

Do đó, có một bài viết hay Systemd dành cho người dùng mới bắt đầu trên Ubuntu wiki - so sánh rất chi tiết giữa upstart và systemd và hướng dẫn chuyển đổi từ upstart sang systemd.

(Lưu ý rằng theo wiki Ubuntu bạn vẫn có thể chạy mới nổi trên các phiên bản hiện tại của Ubuntu theo mặc định bằng cách cài đặt upstart-sysvvà chạy sudo update-initramfs -unhưng xem xét phạm vi của dự án systemd Tôi không biết làm thế nào nó hoạt động trong thực tế, hoặc có hoặc không systemd là có thể gỡ cài đặt.)

Hầu hết các thông tin trong phần Lệnh và Tập lệnh bên dưới được điều chỉnh từ một số ví dụ được sử dụng trong bài viết đó (được cấp phép thuận tiện giống như đóng góp của người dùng Stack Exchange theo Giấy phép Creative Commons Attribution-ShareAlike 3.0 ).

Dưới đây là so sánh nhanh các lệnh phổ biến và các tập lệnh đơn giản, xem các phần bên dưới để được giải thích chi tiết. Câu trả lời này là so sánh hành vi cũ của các hệ thống dựa trên Upstart với hành vi mới của các hệ thống dựa trên systemd, như đã hỏi trong câu hỏi, nhưng lưu ý rằng các lệnh được gắn thẻ là "Upstart" không nhất thiết phải là Upstart - chúng thường là các lệnh mà là phổ biến cho mọi hệ thống Linux và Unix không hệ thống.

Các lệnh

Chạy su:

  • mới bắt đầu: su
  • hệ thống: machinectl shell

(xem phần "thay thế lệnh su" bên dưới)

Màn hình đang chạy:

  • mới bắt đầu: screen
  • hệ thống: systemd-run --user --scope screen

(xem phần "Tiêu diệt quá trình nền bất ngờ" bên dưới)

Chạy tmux:

  • mới bắt đầu: tmux
  • hệ thống: systemd-run --user --scope tmux

(xem phần "Tiêu diệt quá trình nền bất ngờ" bên dưới)

Bắt đầu công việc:

  • mới bắt đầu: start foo
  • hệ thống: systemctl start foo

Dừng công việc foo:

  • mới bắt đầu: stop foo
  • hệ thống: systemctl stop foo

Khởi động lại công việc:

  • mới bắt đầu: restart foo
  • hệ thống: systemctl restart foo

Liệt kê các công việc:

  • mới bắt đầu: initctl list
  • hệ thống: systemctl status

Kiểm tra cấu hình của công việc foo:

  • mới bắt đầu: init-checkconf /etc/init/foo.conf
  • hệ thống: systemd-analyze verify /lib/systemd/system/foo.service

Liệt kê các biến môi trường của công việc:

  • mới bắt đầu: initctl list-env
  • hệ thống: systemctl show-environment

Đặt biến môi trường của công việc:

  • mới bắt đầu: initctl set-env foo=bar
  • hệ thống: systemctl set-environment foo=bar

Loại bỏ biến môi trường của công việc:

  • mới bắt đầu: initctl unset-env foo
  • hệ thống: systemctl unset-environment foo

Nhật ký

Trong phần khởi động, nhật ký là các tệp văn bản bình thường trong thư mục / var / log / upstart, vì vậy bạn có thể xử lý chúng như bình thường:

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

Trong nhật ký systemd được lưu trữ ở định dạng nhị phân nội bộ (không phải là tệp văn bản), do đó bạn cần sử dụng journalctllệnh để truy cập chúng:

sudo journalctl -u foo
sudo journalctl -u foo -f

Chữ viết

Ví dụ kịch bản mới nhất được viết bằng /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

Ví dụ script script được viết bằng /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

thay thế lệnh su

Một susự thay thế lệnh đã được sáp nhập vào systemd trong kéo theo yêu cầu # 1022:

bởi vì, theo Lennart Poettering, "su thực sự là một khái niệm bị phá vỡ" .

Ông giải thích rằng "bạn có thể sử dụng su và sudo như trước đây, nhưng đừng hy vọng rằng nó sẽ hoạt động đầy đủ " .

Cách chính thức để đạt được một suhành vi giống như bây giờ là:

machinectl shell

Nó đã được giải thích thêm bởi Lennart Poettering trong cuộc thảo luận về vấn đề # 825:

"Chà, đã có những cuộc thảo luận dài về vấn đề này, nhưng vấn đề là những gì su được cho là rất không rõ ràng. [...] Câu chuyện dài ngắn: su thực sự là một khái niệm bị phá vỡ. Nó sẽ cho bạn một loại vỏ và sử dụng nó cho việc đó là tốt, nhưng nó không phải là một thông tin đăng nhập đầy đủ và không nên nhầm lẫn với nó. " - Lennart Poettering

Xem thêm:

Giết bất ngờ các quá trình nền

Các lệnh như:

không còn làm việc như mong đợi . Ví dụ: nohuplà lệnh POSIX để đảm bảo rằng quy trình tiếp tục chạy sau khi bạn đăng xuất khỏi phiên của mình. Nó không còn hoạt động trên systemd. Ngoài ra các chương trình như screentmuxcần phải được gọi theo một cách đặc biệt hoặc nếu không các quy trình mà bạn chạy với chúng sẽ bị giết (trong khi không làm cho các quy trình đó bị giết thường là lý do chính của việc chạy màn hình hoặc tmux ở vị trí đầu tiên).

Đây không phải là một sai lầm, nó là một quyết định có chủ ý, vì vậy nó không có khả năng được sửa chữa trong tương lai. Đây là những gì Lennart Poettering đã nói về vấn đề này:

Theo quan điểm của tôi, UNIX thực sự khá lạ khi nó mặc định cho phép mã người dùng tùy ý ở xung quanh không bị hạn chế sau khi đăng xuất. Hiện nay, nó đã được thảo luận từ lâu trong số nhiều người dùng HĐH, rằng điều này có thể xảy ra nhưng chắc chắn không phải là mặc định, nhưng cho đến nay, không ai dám lật công tắc để chuyển nó từ mặc định sang tùy chọn. Không dọn dẹp các phiên của người dùng sau khi đăng xuất không chỉ xấu và hơi hack mà còn là vấn đề bảo mật. systemd 230 cuối cùng đã tắt công tắc và cuối cùng theo mặc định sẽ dọn sạch mọi thứ một cách chính xác khi người dùng đăng xuất.

Để biết thêm thông tin xem:

Khái niệm khởi nghiệp cấp cao

Theo cách mà systemd hoạt động ngược - trong các công việc mới bắt đầu bắt đầu ngay khi họ có thể và trong các công việc systemd bắt đầu khi họ phải làm. Vào cuối ngày, các công việc tương tự có thể được bắt đầu bởi cả hai hệ thống và theo thứ tự khá giống nhau, nhưng bạn nghĩ về nó nhìn từ một hướng ngược lại để nói.

Đây là cách Systemd cho người dùng mới bắt đầu giải thích nó:

Upstart mô hình 's để bắt đầu quá trình (công việc) là 'tham lam event-based', công việc tức là tất cả sẵn có các sự kiện khởi động xảy ra được bắt đầu càng sớm càng tốt. Trong quá trình khởi động, khởi động tổng hợp một số sự kiện ban đầu như khởi động hoặc RCS là "gốc cây", các dịch vụ ban đầu bắt đầu trên các dịch vụ đó và các dịch vụ sau bắt đầu khi dịch vụ cũ đang chạy. Một công việc mới chỉ cần cài đặt tệp cấu hình của nó vào / etc / init / để hoạt động.

Mô hình của systemd để bắt đầu các quy trình (đơn vị) là "dựa trên phụ thuộc lười biếng", tức là một đơn vị sẽ chỉ bắt đầu nếu và khi một số đơn vị bắt đầu khác phụ thuộc vào nó. Trong quá trình khởi động, systemd khởi động một "đơn vị gốc" (default.target, có thể được ghi đè trong grub), sau đó mở rộng liên tục và bắt đầu các phụ thuộc của nó. Một đơn vị mới cần thêm chính nó như là một phụ thuộc của một đơn vị của chuỗi khởi động (thường là multi-user.target) để hoạt động.

Sử dụng trong phân phối

Bây giờ một số dữ liệu gần đây theo Wikipedia:

Phân phối sử dụng upstart theo mặc định:

Phân phối sử dụng systemd theo mặc định:

(Xem Wikipedia để biết thông tin cập nhật)

Phân phối không sử dụng Upstart hay systemd:

Tranh cãi

Trước đây, một nhánh của Debian đã được đề xuất để tránh systemd . Các Devuan GNU + Linux đã được tạo ra - một ngã ba của Debian mà không systemd (nhờ fpmurphy1 cho trỏ nó ra trong các ý kiến).

Để biết thêm thông tin về tranh cãi này, xem:

Như nhiều người trong số các bạn có thể đã biết, phiếu bầu ban đầu của GR GR do Ian Jackson quảng bá không hữu ích để bảo vệ di sản của Debian và người dùng của nó khỏi trận tuyết lở hệ thống.

Tình huống này có thể xảy ra sự khóa trong các phụ thuộc hệ thống, thực tế đang đe dọa tự do phát triển và gây hậu quả nghiêm trọng cho Debian, ngược dòng và hạ nguồn của nó.

CTTE đã xoay sở để trao đổi một sự phụ thuộc và giúp chúng ta có thời gian cài đặt hệ thống tinh tế qua sysvinit, nhưng ngay cả quá trình này cũng mệt mỏi và đầy kịch tính. Cuối cùng, một tuần trước, Ian Jackson đã từ chức. [...]

Tôi đang từ chức từ Ủy ban Kỹ thuật có hiệu lực ngay lập tức.

Mặc dù điều quan trọng là quan điểm của 30-40% dự án đồng ý với tôi nên tiếp tục được đại diện trên TC, nhưng bản thân tôi rõ ràng là quá tranh cãi về một con số tại thời điểm này để làm điều đó. Tôi nên bước sang một bên để cố gắng giảm mức độ các cuộc hội thoại về quản trị dự án được cá nhân hóa. [...]

Devuan được sinh ra từ một cuộc tranh cãi về quyết định sử dụng làm hệ thống init mặc định cho Debian. Vị trí Debian chính thức trên systemd chứa đầy các khiếu nại mà những người khác đã gỡ lỗi . Độc giả quan tâm có thể tiếp tục thảo luận về chủ đề nóng này trong tranh cãi systemd . Tuy nhiên, chúng tôi khuyến khích bạn giữ cho đầu của bạn mát mẻ và giọng nói của bạn dân sự. Tại Devuan, chúng tôi quan tâm đến việc lập trình sai hơn là nhìn lại. [...]

Một số trang web và bài viết dành riêng cho tranh cãi systemd đã được tạo:

rất nhiều cuộc thảo luận thú vị trên Hacker News:

Xu hướng tương tự trong các bản phát hành khác cũng có thể được quan sát:

Triết học

khởi đầu theo triết lý Unix của DOTADIW - "Làm một điều và làm tốt". Nó là một thay thế cho init daemon truyền thống. Nó không làm gì khác hơn là bắt đầu và dừng dịch vụ. Các nhiệm vụ khác được giao cho các hệ thống con chuyên ngành khác.

systemd làm nhiều hơn thế. Ngoài việc bắt đầu và dừng dịch vụ, nó còn quản lý mật khẩu, đăng nhập, thiết bị đầu cuối, quản lý nguồn, đặt lại nhà máy, xử lý nhật ký, điểm gắn hệ thống tệp, kết nối mạng và nhiều hơn nữa - xem tệp TIN TỨC để biết một số tính năng.

Kế hoạch mở rộng

Theo quan điểm của systemd Những gì đã đạt được và những gì nói dối trước Lennart Poettering vào năm 2014 tại Gnome.asia, đây là các mục tiêu chính của systemd, các khu vực đã được bảo hiểm và những khu vực vẫn đang được tiến hành:

mục tiêu hệ thống:

Mục tiêu của chúng tôi

  • Biến Linux từ một túi bit thành Hệ điều hành Mục đích chung cạnh tranh.
  • Xây dựng hệ điều hành thế hệ tiếp theo của Internet Thống nhất sự khác biệt vô nghĩa giữa các bản phân phối
  • Đưa đổi mới trở lại hệ điều hành cốt lõi

  • Máy tính để bàn, Máy chủ, Container, Nhúng, Di động, Đám mây, Cụm ,. . . Những khu vực này gần nhau hơn bạn nghĩ

  • Giảm độ phức tạp của quản trị viên, độ tin cậy mà không cần giám sát
  • Mọi thứ nội tâm
  • Tự động phát hiện, cắm và chơi là chìa khóa
  • Chúng tôi sửa chữa những thứ mà chúng bị hỏng, không bao giờ băng qua chúng

Các khu vực đã được bảo hiểm:

Những gì chúng tôi đã bao gồm:

hệ thống init, ghi nhật ký, quản lý đăng nhập, quản lý thiết bị, quản lý tệp tạm thời và dễ bay hơi, đăng ký định dạng nhị phân, lưu / khôi phục đèn nền, lưu / khôi phục rfkill, bootchart, đọc, thiết lập lưu trữ được mã hóa, phát hiện phân vùng EFI / GPT, máy ảo / container đăng ký, quản lý container tối thiểu, quản lý tên máy chủ, quản lý ngôn ngữ, quản lý thời gian, quản lý hạt giống ngẫu nhiên, quản lý biến sysctl, quản lý bảng điều khiển ,. . .

Công việc đang tiến hành:

Những gì chúng tôi đang làm việc:

  • quản lý mạng
  • systemd-mạngd
  • Bộ đệm DNS cục bộ, phản hồi mDNS, phản hồi LLMNR, xác minh DNSSEC
  • IPC trong nhân
  • xe buýt, xe buýt sd
  • Đồng bộ hóa thời gian với NTP
  • systemd-timesyncd
  • Tích hợp nhiều hơn với container
  • Sandboxing của dịch vụ
  • Sandboxing của ứng dụng
  • Định dạng hình ảnh hệ điều hành
  • Định dạng hình ảnh container
  • Định dạng hình ảnh ứng dụng
  • GPT với tính năng tự động phát hiện
  • Hệ thống không quốc tịch, hệ thống có thể khởi động, thiết lập lại nhà máy
  • / usr là HĐH
  • / etc là cấu hình (tùy chọn)
  • / var là trạng thái (tùy chọn)
  • Khởi tạo và cập nhật nút nguyên tử
  • Tích hợp với đám mây
  • Quản lý dịch vụ trên các nút
  • Hình ảnh hệ điều hành có thể kiểm chứng
  • Tất cả các cách để chương trình cơ sở
  • Đang tải khởi động

Phạm vi của câu trả lời này

Như fpmurphy1 đã lưu ý trong các bình luận, "Cần chỉ ra rằng systemd đã mở rộng phạm vi công việc của mình trong nhiều năm vượt xa đơn giản là khởi động hệ thống."

Tôi đã cố gắng bao gồm hầu hết các thông tin có liên quan ở đây. Ở đây tôi đang so sánh các tính năng phổ biến của Upstart và systemd khi được sử dụng làm hệ thống init như được hỏi trong câu hỏi và tôi chỉ đề cập đến các tính năng của systemd vượt ra ngoài phạm vi của hệ thống init vì chúng không thể so sánh với Startup, nhưng sự hiện diện của chúng rất quan trọng để hiểu sự khác biệt giữa hai dự án. Các tài liệu liên quan nên được kiểm tra để biết thêm.

Thêm thông tin

Thông tin thêm có thể được tìm thấy tại:

Ngoài ra

Nhóm LinOxide đã tạo ra một chiếc áo choàng Systemd vs SysV init Linux .


4
... Và một ngã ba của Debian đã xảy ra. Devuan GNU + Linux là một nhánh của Debian không có systemd.
fpmurphy

2
Cần phải chỉ ra rằng systemd đã mở rộng phạm vi công việc của mình trong những năm qua vượt xa đơn giản là khởi động hệ thống.
fpmurphy

1
Bài viết nổi bật và cực kỳ hữu ích cho anh chàng Cent. Cảm ơn bạn đã dành thời gian thưa ông !!!
origin1tech

4
@ronsmith service <foo> start/stop/restart/statusvẫn hoạt động tốt. Giống như hầu hết các phần mềm unix, systemd cung cấp khả năng tương thích lệnh với các mặc định nổi tiếng.
Shadur

2
Câu trả lời rất hay. Mặc dù có một điểm: các hệ điều hành BSD không phải là bản phân phối Linux: chúng là các hệ điều hành Unix khác nhau có nhân riêng.
Giorgio

68

Cả upstart và systemd đều cố gắng giải quyết một số vấn đề với những hạn chế của hệ thống init SysV truyền thống. Ví dụ: một số dịch vụ cần khởi động sau các dịch vụ khác (ví dụ: bạn không thể gắn hệ thống tệp NFS cho đến khi mạng đang chạy), nhưng cách duy nhất trong SysV để xử lý đó là đặt các liên kết trong thư mục RC # .d cái này trước cái kia Thêm vào đó, bạn có thể cần đánh số lại mọi thứ sau này khi phụ thuộc được thêm hoặc thay đổi. Upstart và Systemd có nhiều cài đặt thông minh hơn để xác định các yêu cầu. Ngoài ra, có một vấn đề với thực tế là mọi thứ đều là một tập lệnh shell, và không phải ai cũng viết các tập lệnh init tốt nhất. Điều đó cũng tác động đến tốc độ khởi động.

Một số ưu điểm của systemd tôi có thể thấy:

  • Mỗi quá trình bắt đầu có một nhóm riêng hoặc một nhóm cụ thể.
  • Tạo trước các socket và xử lý tệp cho các dịch vụ, tương tự như cách xinetd làm cho các dịch vụ của nó, cho phép các dịch vụ phụ thuộc bắt đầu nhanh hơn. Ví dụ, systemd sẽ giữ mở filehandle cho / dev / log cho syslog và các dịch vụ tiếp theo gửi đến / dev / log sẽ có thông điệp được đệm cho đến khi syslogd sẵn sàng tiếp quản.
  • Ít quá trình chạy để thực sự bắt đầu một dịch vụ. Điều này có nghĩa là bạn không viết kịch bản shell để khởi động dịch vụ của mình. Đây có thể là một cải tiến tốc độ và (IMO) một cái gì đó dễ dàng hơn để thiết lập ở nơi đầu tiên.

Một nhược điểm mà tôi biết là để tận dụng lợi thế của ổ cắm / FH của systemd, nhiều trình tiện ích sẽ phải được vá để FH được truyền cho họ bởi systemd.


13
PulseAudio là một hệ thống âm thanh không phù hợp ( pulseaudio.org ), ban đầu được viết bởi Lennart Poettering, tác giả của systemd. Tôi chủ yếu làm một trò đùa ở đây, vì tôi biết một số người thích phàn nàn về pulseaudio và tôi chắc chắn họ cũng sẽ phàn nàn về systemd. Thành thật mà nói, tôi không có vấn đề gì với systemd hoặc pulseaudio.
jsbillings

4
Làm cho một người gần như thông cho các luồng lửa dồi dào của Plan9 ... mọi thứ đều là một tập tin.
dhchdhd

4
Thành thật mà nói, pulseaudio là một giải pháp cho một vấn đề không tồn tại. Không có gì PA có thể làm điều đó ALSA không thể, và tôi đã nghe thấy NHIỀU người gặp vấn đề với PA, nhiều lần.
WhyNotHugo

3
Hai nhược điểm của systemd mà bạn đã bỏ lỡ: (1) tất cả các tập lệnh khởi động cần phải được viết lại. (2) có ít khả năng tương thích với các HĐH không phải linux (ví dụ như BSD).
WhyNotHugo

8
Tuyệt vời Vui lòng xem tại 0pulum.de/blog/projects/the-biggest-myths . Tôi đã chứng kiến ​​sự phát triển của systemd, và có thể chứng thực rằng phần lớn những lời chỉ trích ở đây là hoàn toàn không có căn cứ. Tại liên kết, bạn sẽ tìm thấy một cú đánh bằng đòn, lý do phản bác.
vonbrand

30

Saw systemdđã đề cập trên Arch General ML ngày hôm nay. Vì vậy, đọc lên trên nó. H Online luôn là một nguồn tuyệt vời cho Công nghệ Linux và là nơi tôi tìm thấy nơi để bắt đầu nghiên cứu Systemd với tư cách là SysV init và Upstart thay thế . Tuy nhiên, bài viết H Online (trong trường hợp này) không phải là một bài đọc rất hữu ích, công dụng thực sự đằng sau nó là nó cung cấp các liên kết đến các bài đọc hữu ích.

Câu trả lời thực sự là trong thông báo của systemd . Điều này đưa ra một số điểm quan trọng về những gì sai với SysV initd và những hệ thống mới cần phải làm gì

  • Để bắt đầu ít hơn.
  • Và để bắt đầu song song hơn.

Kế hoạch chính của nó để thực hiện điều này dường như là chỉ bắt đầu các dịch vụ khi cần thiết và bắt đầu một ổ cắm cho dịch vụ đó, để dịch vụ cần nó có thể kết nối với ổ cắm được tạo ra từ lâu trước khi daemon hoàn toàn trực tuyến. Rõ ràng một ổ cắm sẽ giữ lại một lượng nhỏ dữ liệu được đệm có nghĩa là không có dữ liệu nào bị mất trong thời gian trễ, nó sẽ được xử lý ngay khi daemon trực tuyến.

Một phần khác của kế hoạch dường như là không tuần tự hóa các hệ thống tập tin, mà thay vào đó cũng gắn kết những thứ đó theo yêu cầu, theo cách đó bạn không chờ đợi /home/, v.v. (không bị nhầm lẫn /etc) để gắn kết và / hoặc fsckkhi bạn có thể bắt đầu daemon như //var/vv, đã được gắn kết. Nó nói rằng nó sẽ sử dụng autofs cho đến cuối này.

Nó cũng có mục tiêu tạo ra các .desktopmô tả init style để thay thế cho các script. Điều này sẽ ngăn chặn hàng tấn các shquy trình chậm và thậm chí nhiều nhánh của các quy trình từ những thứ như sedgrepthường được sử dụng trong các kịch bản shell.

Họ cũng có kế hoạch không bắt đầu một số dịch vụ cho đến khi được yêu cầu và thậm chí có thể tắt chúng nếu không còn cần thiết, mô-đun bluetooth và daemon chỉ cần thiết khi bạn sử dụng thiết bị bluetooth chẳng hạn. Một ví dụ khác được đưa ra là daemon ssh. Đây là loại điều mà inetd có khả năng. Cá nhân tôi không chắc chắn tôi thích điều này, vì nó có thể có nghĩa là độ trễ khi tôi cần chúng, và trong trường hợp của ssh tôi nghĩ nó có nghĩa là một lỗ hổng bảo mật có thể xảy ra, nếu inetd của tôi bị xâm phạm toàn bộ hệ thống. Tuy nhiên, tôi đã được thông báo rằng việc sử dụng điều này để vi phạm hệ thống này là không thể thực hiện được và nếu tôi muốn, tôi có thể vô hiệu hóa tính năng này trên mỗi dịch vụ và theo những cách khác.

Một tính năng khác rõ ràng là khả năng bắt đầu dựa trên các sự kiện thời gian, tại một khoảng thời gian được lên lịch thường xuyên hoặc tại một thời điểm nhất định. Điều này tương tự với những gì crondatdlàm bây giờ. Mặc dù tôi đã nói rằng nó sẽ không hỗ trợ người dùng "cron". Cá nhân điều này nghe có vẻ như là điều vô nghĩa nhất. Tôi nghĩ rằng điều này đã được viết / nghĩ ra bởi những người không làm việc trong môi trường nhiều người dùng, không có nhiều mục đích cho người dùng nếu bạn là người dùng duy nhất trên hệ thống, ngoài việc không chạy bằng root. Tôi làm việc trên các hệ thống nhiều người dùng hàng ngày và quy tắc là luôn chạy các tập lệnh người dùng với tư cách là người dùng. Nhưng có lẽ tôi không có tầm nhìn xa mà họ làm, và nó sẽ không làm cho tôi không thể chạy crondhoặc atdvì vậy nó không làm tổn thương bất cứ ai trừ những nhà phát triển mà tôi cho là.

Nhược điểm lớn của systemd là một số trình nền sẽ phải được sửa đổi để tận dụng tối đa lợi thế của nó. Bây giờ chúng sẽ hoạt động, nhưng chúng sẽ hoạt động tốt hơn nếu chúng được viết riêng cho mô hình ổ cắm của nó.

Dường như phần lớn vấn đề con người của systemd với sự khởi đầu là hệ thống sự kiện và họ tin rằng nó không có ý nghĩa hoặc không cần thiết. Có lẽ lời nói của họ đặt nó tốt nhất.

Hay nói một cách đơn giản hơn: thực tế là người dùng mới khởi động D-Bus không phải là một dấu hiệu cho thấy NetworkManager cũng nên được khởi động (nhưng đây là những gì Upstart sẽ làm). Nó đúng theo cách khác: khi người dùng yêu cầu NetworkManager, đó chắc chắn là một dấu hiệu cho thấy D-Bus cũng nên được khởi động (đó chắc chắn là điều mà hầu hết người dùng mong đợi, phải không?).
Một hệ thống init tốt chỉ nên bắt đầu những gì cần thiết và theo yêu cầu. Hoặc lười biếng hoặc song song và trước. Tuy nhiên, nó không nên bắt đầu nhiều hơn mức cần thiết, đặc biệt không phải mọi thứ được cài đặt có thể sử dụng dịch vụ đó.

Như tôi đã nói điều này được thảo luận toàn diện hơn nhiều trong thông báo của systemd .


xin lỗi nhưng thông báo giống như một cuốn sách Tôi phải đọc và mò mẫm, trước khi tôi thực sự có thể bao gồm nhiều hơn ở đây.
xenoterracide

2
Làm thế nào điều này tốt hơn câu trả lời của @ John? Có phải là một giữ chỗ? Một quảng cáo của H Online ?
tshepang

1
@tshepang nó thực sự liên kết đến thông báo của hệ thống d và các công cụ trực tuyến h có liên kết đến đó và các liên kết thú vị khác. đó là một bài đọc dài tẻ nhạt. Tôi có thể thêm nhiều hơn một khi tôi đã mò mẫm nó ... đây không phải là một chủ đề đơn giản . Khi tôi viết bài này, tôi nghĩ rằng bạn có thể muốn bắt đầu đọc sớm hơn sau này. nhưng cảm thấy tự do để mod tôi xuống. chắc chắn câu trả lời @jsbillings là tốt, và tốt hơn của tôi cho đến nay. nhưng không tốt bằng đọc chính thông báo
xenoterracide

@tshepang Có lẽ tôi sẽ thêm nhiều hơn vào ngày mai, sau khi ngủ. h công cụ trực tuyến chỉ là tôi là một nhà báo giỏi và trích dẫn nguồn của tôi.
xenoterracide

@tshepang. Tôi đã cập nhật câu trả lời của mình. khá chắc chắn tôi đã hoàn thành trừ khi những người hữu ích trên irc: //frenode.net/systemd quyết định họ muốn đưa ra một sự điều chỉnh nào đó.
xenoterracide

11

Vâng, một điều mà hầu hết các bạn quên là tổ chức các quy trình trong các nhóm .

Vì vậy, nếu systemd bắt đầu một thứ, nó sẽ đặt thứ này vào nhóm riêng của nó và không có ý nghĩa (không bị hạn chế) cho quá trình thoát khỏi nhóm đó. Đây là hậu quả của điều đó:

  • Quản trị viên của một hệ thống lớn có nhiều người dùng có những cách mới hiệu quả để xác định người dùng / quy trình độc hại.
  • Các ưu tiên cho lập lịch CPU có thể được xác định tốt hơn bằng cách thực hiện bằng "bản vá nhóm tự động kỳ diệu" .

8

Để có cái nhìn rất chi tiết về systemd, bắt đầu với bản nháp thiết kế đầu tiên (và phê bình chi tiết về các hệ thống init hiện có, bao gồm cả khởi động và cách systemd đề xuất sửa chúng), hãy truy cập trang chủ của nó . Theo thời gian, đã có một số bài viết về khởi nghiệp được xuất bản trên LWN . Chỉ cần lưu ý rằng bất kỳ đề cập đến systemd (hoặc pulseaudio) có kích hoạt không bao giờ flamewars.

IMVHO (và là người dùng Fedora) Tôi rất hài lòng với nó. Một cái gì đó trong dòng này đã quá hạn để xử lý sự phức tạp của các hệ thống Linux hiện tại. Fedora đã sử dụng mới bắt đầu được một thời gian, nhưng nó không bao giờ thoát khỏi giai đoạn trở thành một sự thay thế lạ mắt cho sysvinit, chạy các kịch bản init không thay đổi. Lời hứa của nó về đơn giản hóa cấu hình khởi động đi kèm với chi phí một lần nữatự thiết lập các phụ thuộc lẫn nhau và điều đó không hiệu quả. Các số liệu hệ thống phụ thuộc vào chính nó (hoặc chỉ cho phép bắt đầu công cụ mà không quan tâm đến các phụ thuộc, chúng tự sắp xếp). Một ưu điểm lớn khác (một số người cho rằng đó là một bất lợi nghiêm trọng) là nó khai thác các tính năng dành riêng cho Linux cho chuồng trại (đáng chú ý là các nhóm cho phép cách ly một daemon và tất cả con cháu của nó, vì vậy rất dễ theo dõi, giới hạn tài nguyên hoặc giết chúng một nhóm, có nhiều người khác).


3

Ghi nhật ký - Systemd có nghĩa đen giống như thư mục WinSXS khi nói đến việc ghi nhật ký, nó tạo ra các bản sao của bản sao trừ khi bạn xóa hoặc giảm kích thước tệp theo cách thủ công, nó sẽ tiếp tục ăn ở ổ đĩa của bạn. Tôi gọi nó là cookie bộ tải khởi động.


Sai lầm. những bản sao đó không phải là bản sao và nó có giới hạn cấu hình freedesktop.org/software/systemd/man/journald.conf.html
pal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.