Bunun işletim sistemlerini tespit etmekle daha fazla ilgisi olabilir, ancak özellikle şu anda sistemde kullanımda olan init sistemine ihtiyacım var.
Fedora 15 ve Ubuntu şimdi systemd kullanıyor, Ubuntu Upstart'ı kullanıyordu (uzun süre 15.04'e kadar uzun süre varsayılan), diğerleri ise System V varyasyonlarını kullanıyordu.
Platformlar arası bir arka plan programı olarak yazdığım bir uygulamam var. İnit betiği, configure ile geçirilebilecek parametrelere dayanarak dinamik olarak oluşturuluyor.
Yapmak istediğim sadece kullandıkları belirli init sistemi için senaryoyu oluşturmak. Bu şekilde kurulum betiği root olarak parametreler olmadan makul şekilde çalıştırılabilir ve arka plan programı otomatik olarak "kurulabilir".
Bu benim geldiğim şey:
- Systemd, upstart, vb / bin dizininde ara
- / Proc / 1 / comm komutunu sistemd, başlangıç, vb. İle karşılaştırın.
- Kullanıcıya sor
Bunu yapmanın en iyi çapraz / platform yolu ne olurdu?
İlişkili, bash’ın * nix’in çoğunluğuna bağlı olmasına bağlı mıyım, dağıtım / işletim sistemine bağlı mı?
Hedeflenen platformlar:
- Mac os işletim sistemi
- Linux (tüm dağıtımlar)
- BSD (tüm sürümler)
- Solaris, Minix ve diğer * nix
ps -p 1 -o command
(akıntıya giden yolu basar init
). Arch Linux ve Fedora'da (IIRC), bu ikiliye bir bağlantı systemd
(muhtemelen tüm systemd
sistemlerde aynıdır ). Açık upstart
, init --help
kullanım bilgilerini yazdıracak ve kutumda upstart
kime e-posta gönderileceği belirtiliyor. FreeBSD'de (sysV) bu bir hata verecektir. Diğer sistemlerde de benzer ipuçları olabilir, ancak bu soruyu sorduğundan beri, onları tüm platformlar için yaratmaya ve her biri için ayrı paketler oluşturmaya karar verdim.
sudo lsof -a -p 1 -d txt
daha da kesin sonuçlar verebileceğini öğrendim . ps
İsteğe bağlı bir ad yazdırabilir, oysaki lsof
sizinle gerçek çalıştırılabilir yolu elde edebilirsiniz. (Bkz. Sorumu unix.stackexchange.com/questions/102453/… )