回答
據我所知systemd
允許運行init.d
腳本,所以你可以做一個腳本,是便攜與upstart
和init.d
。
另一件事是他們所有人(systemd
,init.d
,upstart
)使用它自己的語法。我看到的唯一解決方案是創建三個不同的腳本,這些腳本調用最常見的服務接口的一些應用程序 - 分叉服務應用程序。這樣所有的經理都會知道如何處理你的服務。併爲您的應用程序提供所有三種腳本。然後,安裝程序將不得不選擇與您的服務應用程序一起安裝哪個腳本。
systemd和upstart
都支持sysinit
樣式腳本。 RHEL 6使用新貴,但大多數腳本都是正常的init.d
bash腳本。 RHEL 7和Fedora 19(及更早版本)使用systemd
,但他們愉快地運行舊的init腳本。
您可以使用正常的舊式守護程序與初始化腳本分叉。如果應用程序不能自行分叉,則可以使用supervisord之類的代碼爲您分叉並直接與單獨的systemd腳本集成。我不知道有關upstart
的詳細信息,只是它使用它自己的格式,但支持它(如果您不需要支持舊的/當前的Linux系統)似乎只適用於非Linux發行版。 systemd
目前是Linux專用的,儘管我已經看到了將它移植到BSD的工作。
您可能會對如何整合CUPS感興趣。上次我檢查了systemd
「腳本」以-f
選項(前景)啓動守護程序 - ExecStart=/usr/sbin/cupsd -f
。 init.d
腳本不會添加該標誌。
總之 - 現在使用舊式System V
init.d
腳本,如果你想要一個解決方案,無處不在。如果您有足夠的備用資源,並且如果您有足夠的資源,則可以添加systemd
支持,您當然可以單獨支持這三個系統(對用戶有最大的好處,但是需要大量的工作)。
我會親自創建init.d
+ systemd腳本,並不會在乎新貴。機會是systemd
will soon replace upstart(also look here)和init.d
腳本將在剩餘的UNIX-es上保持可用狀態。
- 1. 如何使bash腳本可移植?
- 2. 移植到Linux的錯誤:之前預期初始化「:」令牌
- 3. 可移植類庫和resx本地化
- 4. shell腳本中的初始化程序
- 5. Ansible初始化腳本期望
- 6. CentOS初始化腳本依賴
- 7. chkconfig不添加redis初始化腳本
- 8. 成本初始化
- 9. 移植的Node.js腳本到Python
- 10. 在哪裏我可以把腳本啓動在初始化centos?
- 11. 我可以禁用HSQLDB初始化腳本創建嗎?
- 12. 在開始工作初始化腳本中不會忽略的錯誤腳本
- 13. 如何初始化可移植派生類中的繼承模板化POD結構?
- 14. 如何在Iron Python腳本中加載可移植的.NET庫?
- 15. python文件操作(bash腳本移植)
- 16. 將Bash腳本移植到Java
- 17. 如何將shell腳本移植到Perl?
- 18. 與腳本程序相關的bash腳本移植問題
- 19. 可以使用C++中的可移植方式使用命名屬性初始化POD結構嗎?
- 20. 處理桌面和移動腳本初始化的最佳方法?
- 21. 恢復的模型未初始化(初始V3 /轉移學習)
- 22. java中的初始化初始化
- 23. 未初始化的數組偏移量
- 24. 可執行初始化
- 25. Perl腳本可移植性和未來打樣
- 26. 從shell腳本可移植地設置環境變量
- 27. 初始化後可以初始化靜態變量嗎?
- 28. 變量初始化並聲明後可能尚未初始化
- 29. 初始化,初始化與參數和便利初始化
- 30. 初始化基本類型
AFAIK systemd和upstart支持依賴項:您可以說服務'foo'後啓動此服務。 AFAIK這不被init.d腳本支持。 – guettli 2014-12-18 08:59:59
是的,'init.d'腳本必須自己強制執行(一個腳本可以隨時檢查,啓動和/或停止另一個腳本)。 – 2014-12-18 16:49:29