यदि आपने किसी Homebrew सर्विस के कॉन्फ़िगरेशन में बदलाव किया है और आप चाहते हैं कि यह प्रभावी हो, तो उस सर्विस को उसके फ़ॉर्मूला नाम से पुनः आरंभ करें: brew services restart formula। उदाहरण के लिए, यदि आपने postgresql@16 फ़ॉर्मूला इंस्टॉल किया है, तो brew services restart postgresql@16 का उपयोग करें। यदि आवश्यक हो तो Homebrew सर्विस को रोकता है, इसे फिर से शुरू करता है, और इसे लॉगिन पर लॉन्च करने के लिए रजिस्टर करता है। इसकी रिपोर्ट की गई स्थिति की पुष्टि करने के लिए बाद में सर्विस सूची की जाँच करें।

पुनः आरंभ करने से पहले, सर्विस और कॉन्फ़िगरेशन की पहचान करें

Homebrew सर्विसेज macOS launchctl के माध्यम से बैकग्राउंड प्रक्रियाओं का प्रबंधन करती हैं। बिना sudo के, Homebrew वर्तमान उपयोगकर्ता के LaunchAgents पर काम करता है, जो लॉगिन के समय शुरू होने के लिए अभिप्रेत हैं। sudo के साथ, यह सिस्टम LaunchDaemons पर काम करता है, जो बूट के समय शुरू होने के लिए अभिप्रेत हैं। Homebrew का brew services संदर्भ इस अंतर का दस्तावेजीकरण करता है, इसलिए उसी विशेषाधिकार स्तर (privilege level) का उपयोग करें जिसने मूल रूप से सर्विस शुरू की थी; उपयोगकर्ता और रूट संदर्भों के बीच स्विच करने से आप किसी भिन्न सर्विस पंजीकरण का निरीक्षण या उसे प्रभावित कर सकते हैं।

यदि आप फ़ॉर्मूला नाम के बारे में अनिश्चित हैं, तो अपने वर्तमान उपयोगकर्ता के लिए Homebrew द्वारा प्रबंधित सेवाओं की सूची देखें:

brew services list

यह सूची सर्विस का नाम, स्थिति (status), उपयोगकर्ता और plist पाथ दिखा सकती है। रीस्टार्ट कमांड में वहां दिखाए गए फ़ॉर्मूला नाम का उपयोग करें। जब तक आपका इरादा प्रत्येक प्रबंधित सर्विस को रीस्टार्ट करने का न हो, --all से बचें, क्योंकि यह उस सर्विस के अलावा अन्य सेवाओं को भी प्रभावित करता है जिसका कॉन्फ़िगरेशन आपने संपादित किया है। समस्या निवारण (troubleshooting) के दौरान अतिरिक्त Homebrew और launchctl आउटपुट के लिए संदर्भ दस्तावेज़ brew services list --debug का भी उल्लेख करता है।

brew services restart के साथ परिवर्तन लागू करें

Terminal में उसी macOS खाते के रूप में रीस्टार्ट चलाएं जो सर्विस चलाता है:

brew services restart postgresql@16

postgresql@16 को उस फ़ॉर्मूला से बदलें जो आपको सर्विस सूची में मिला था। संस्करण वाला नाम केवल एक उदाहरण है। Homebrew restart को आवश्यकता पड़ने पर सर्विस को रोकने और इसे तुरंत शुरू करने के रूप में परिभाषित करता है, साथ ही इसे लॉगिन पर (या sudo के साथ उपयोग किए जाने पर बूट पर) लॉन्च करने के लिए पंजीकृत करता है। यह रीस्टार्ट को तब उपयुक्त बनाता है जब किसी चल रही सर्विस को कॉन्फ़िगरेशन को फिर से लोड करना हो। कमांड संदर्भ इसके व्यवहार और वैकल्पिक --all और --file फ़्लैग को सूचीबद्ध करता है।

sudo को स्वचालित रूप से न जोड़ें। इसका उपयोग केवल तभी करें जब सर्विस को जानबूझकर सिस्टम सर्विस के रूप में पंजीकृत किया गया हो और आपका इरादा रूट-स्तरीय पंजीकरण को प्रबंधित करने का हो। अन्यथा, sudo एक अलग LaunchDaemon को लक्षित कर सकता है, और उपयोगकर्ता-स्तरीय सर्विस अप्रभावित रह सकती है। यदि आप केवल किसी प्रक्रिया को लॉगिन पर लॉन्च करने के लिए पंजीकृत किए बिना एक बार चलाना चाहते हैं, तो Homebrew brew services run formula का दस्तावेजीकरण करता है; वह कमांड उस सर्विस के रीस्टार्ट की जगह नहीं ले सकता जिसे आप प्रबंधित रखना चाहते हैं।

परिणाम की जाँच करें और विफल रीस्टार्ट का निवारण करें

कमांड पूरा होने के बाद, प्रबंधित सर्विस सूची की फिर से जाँच करें:

brew services list

पुष्टि करें कि लक्षित फ़ॉर्मूला started स्थिति के साथ दिखाई दे रहा है और इसके उपयोगकर्ता और plist पाथ का निरीक्षण करें। started स्थिति यह पुष्टि करती है कि Homebrew रिपोर्ट कर रहा है कि यह शुरू हो गया है; यह स्वतंत्र रूप से यह साबित नहीं करता है कि एप्लिकेशन ने नई सेटिंग्स स्वीकार कर ली हैं या अनुरोधों का जवाब दे रहा है। एप्लिकेशन के अपने प्रलेखित स्वास्थ्य परीक्षण (health check) के साथ या उस व्यवहार की जाँच करके एप्लिकेशन को सत्यापित करें जिसे परिवर्तित सेटिंग नियंत्रित करती है।

यदि सर्विस शुरू नहीं होती है, तो --debug के साथ सूची कमांड चलाएं और आगे के बदलाव करने से पहले सर्विस के अपने एरर आउटपुट या लॉग पढ़ें। उस एप्लिकेशन के दस्तावेज़ों के अनुसार एप्लिकेशन के कॉन्फ़िगरेशन सिंटैक्स, फ़ाइल अनुमतियों और पाथ की जाँच करें। Homebrew का सर्विस कमांड अपनी सर्विस परिभाषा का उपयोग करके सर्विस शुरू करता है; यह प्रत्येक एप्लिकेशन-विशिष्ट कॉन्फ़िगरेशन विकल्प को मान्य नहीं करता है। पहले समाधान के रूप में जनरेट की गई plist फ़ाइलों को संपादित करने से बचें: Homebrew का प्रलेखित कॉन्फ़िगरेशन तंत्र उस सेटिंग पर निर्भर करता है जिसे आपको बदलना है।

जब परिवर्तन एक पर्यावरण चर (environment variable) हो

यदि आपका परिवर्तन सर्विस के लिए एक पर्यावरण चर (environment variable) है, तो Homebrew प्रति-फ़ॉर्मूला एक समर्पित पर्यावरण फ़ाइल का दस्तावेजीकरण करता है। डिफ़ॉल्ट रूप से, इसे ~/.homebrew/services/formula.env पर रखें; यदि HOMEBREW_USER_CONFIG_HOME सेट है, तो निर्देशिका $HOMEBREW_USER_CONFIG_HOME/services है। प्रति पंक्ति एक KEY=value असाइनमेंट का उपयोग करें, जिसमें टिप्पणी पंक्ति की शुरुआत में # हो। फिर सर्विस को रीस्टार्ट करें; Homebrew का कहना है कि ये मान अगले रीस्टार्ट पर प्रभावी होते हैं और अपग्रेड के बाद भी बने रहते हैं। Homebrew के संदर्भ में सर्विस पर्यावरण निर्देश देखें।

उदाहरण के लिए, प्रलेखित फ़ाइल प्रारूप KEY=value है, लेकिन वेरिएबल का नाम और मान एप्लिकेशन के दस्तावेज़ से आना चाहिए। यह मान न लें कि प्रत्येक एप्लिकेशन मनमाने पर्यावरण चरों को स्वीकार करता है, और यह विचार किए बिना कि इसे कौन पढ़ सकता है, किसी पर्यावरण फ़ाइल में सीक्रेट्स (secrets) पेस्ट न करें। यदि आपका कॉन्फ़िगरेशन परिवर्तन पर्यावरण चर के बजाय एक एप्लिकेशन कॉन्फ़िग फ़ाइल है, तो उस एप्लिकेशन द्वारा निर्दिष्ट फ़ाइल स्थान को संपादित करें, फिर उसी रीस्टार्ट कमांड का उपयोग करें।

विश्वसनीय क्रम यह है: सटीक फ़ॉर्मूला और सर्विस संदर्भ की पहचान करें, सेटिंग को उस स्थान पर संपादित करें जो इसका एप्लिकेशन या Homebrew दस्तावेज़ निर्दिष्ट करता है, उस एक फ़ॉर्मूला को रीस्टार्ट करें, और Homebrew की स्थिति और एप्लिकेशन के व्यवहार दोनों को सत्यापित करें।

स्रोत