Վերջին նշանակալի թողարկման ձևավորումից երկու տարի անց հրապարակվեց ծառայության մենեջեր GNU Shepherd 0.9-ը (նախկինում dmd), որը մշակվում է GNU Guix System բաշխման մշակողների կողմից՝ որպես այլընտրանք SysV-init սկզբնավորման համակարգի, որն աջակցում է կախվածությունները: . Shepherd-ի կառավարման դեյմոնը և կոմունալ ծրագրերը գրված են Guile լեզվով (Scheme լեզվի իրականացումներից մեկը), որն օգտագործվում է նաև ծառայությունների գործարկման պարամետրեր և պարամետրեր սահմանելու համար: Shepherd-ն արդեն օգտագործվում է GuixSD GNU/Linux բաշխման մեջ և ուղղված է նաև GNU/Hurd-ում օգտագործմանը, բայց կարող է գործարկվել POSIX-ին համապատասխանող ցանկացած ՕՀ-ով, որի համար հասանելի է Guile լեզուն:
Shepherd-ը կատարում է ծառայություններ սկսելու և դադարեցնելու աշխատանքը՝ հաշվի առնելով ծառայությունների միջև փոխհարաբերությունները, դինամիկ կերպով բացահայտելով և սկսելով ծառայությունները, որոնցից կախված է ընտրված ծառայությունը: Shepherd-ը նաև աջակցում է ծառայությունների միջև կոնֆլիկտների հայտնաբերմանը և դրանց միաժամանակ գործարկման կանխմանը: Նախագիծը կարող է օգտագործվել և՛ որպես հիմնական սկզբնավորման համակարգ (init՝ PID 1-ով), և՛ առանձին ձևով՝ առանձին օգտատերերի ֆոնային գործընթացները կառավարելու համար (օրինակ՝ գործարկել tor, privoxy, mcron և այլն)՝ իրավունքներով կատարվող այս օգտվողներից:
Հիմնական նորամուծությունները.
- Ժամանակավոր ծառայությունների հայեցակարգը (անցողիկ) իրականացվում է, ավտոմատ կերպով անջատվում է ավարտից հետո գործընթացի դադարեցման կամ «stop» մեթոդի կանչի պատճառով, որը կարող է պահանջվել սինթեզված ծառայությունների համար, որոնք չեն կարող վերագործարկվել անջատումից հետո:
- Inetd-ի նման ծառայություններ ստեղծելու համար ավելացվել է «make-inetd-constructor» ընթացակարգը:
- Ծառայություններ ստեղծելու համար, որոնք ակտիվանում են ցանցի գործունեության ընթացքում (systemd socket activation ոճով), ավելացվել է «make-systemd-constructor» ընթացակարգը:
- Ծառայությունը հետին պլանում սկսելու համար ավելացվել է՝ «սկիզբը ֆոնին»:
- «make-forkeexec-constructor» ընթացակարգին ավելացվել են «:supplementary-groups», «#:create-session» և «#:resource-limits» պարամետրերը:
- Գործողությունը միացված է առանց արգելափակման PID ֆայլերի սպասելիս:
- Առանց «#:log-file» պարամետրի ծառայությունների համար տրամադրվում է ելք դեպի syslog, իսկ #:log-file պարամետրով ծառայությունների համար գրանցամատյանը գրվում է առանձին ֆայլում՝ նշելով ձայնագրման ժամանակը: Չարտոնված հովիվ գործընթացի գրանցամատյանները պահվում են $XDG_DATA_DIR գրացուցակում:
- Guile 2.0-ով կառուցելու աջակցությունը դադարեցվել է: Guile 3.0.5-3.0.7 տարբերակներն օգտագործելիս խնդիրները լուծվել են:
- Այժմ անհրաժեշտ է աշխատել Fibers 1.1.0 կամ ավելի նոր գրադարանի համար:
Source: opennet.ru