> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/hi/roboflow-cloud/dedicated-deployments/startup-scripts.md).

# स्टार्टअप स्क्रिप्ट्स

Inference शुरू होने से पहले एक समर्पित डिप्लॉयमेंट पर रूट के रूप में Bash स्क्रिप्ट चलाएँ।

एक स्टार्टअप स्क्रिप्ट, इनफेरेंस शुरू होने से पहले, समर्पित परिनियोजन पर पैकेज इंस्टॉल करती है या डेटा डाउनलोड करती है। जब आपके मॉडलों या वर्कफ़्लोज़ को किसी Python package, system tool, या data file की आवश्यकता हो, जिसे इनफेरेंस कंटेनर शामिल नहीं करता, तब इसका उपयोग करें।

{% hint style="info" %}
स्टार्टअप स्क्रिप्ट डिफ़ॉल्ट रूप से बंद रहती हैं। [उन्हें चालू करने के लिए बिक्री से संपर्क करें](https://roboflow.com/sales) अपने वर्कस्पेस के लिए।
{% endhint %}

## जानकारी

स्क्रिप्ट Bash में है। यह हर कंटेनर स्टार्ट पर रूट के रूप में चलती है, जिसमें नई प्रतिलिपियाँ और रीस्टार्ट शामिल हैं। इसके बाद इनफेरेंस एक गैर-रूट उपयोगकर्ता के रूप में चलता है।

आपकी स्क्रिप्ट को 10 मिनट के भीतर समाप्त होना चाहिए। कोई त्रुटि या समय-सीमा समाप्ति इनफेरेंस को शुरू होने से रोक देती है, और कंटेनर फिर से कोशिश करता है। स्क्रिप्ट को इस तरह शुरू करें `set -e` ताकि यह किसी विफल कमांड पर रुक जाए, और इसे इस तरह लिखें कि इसे दोबारा चलाना सुरक्षित हो।

आपके लिए कुछ भी तैयार नहीं किया गया है। अपनी ज़रूरत का कोई भी टूल, जैसे pip, इंस्टॉल करें। /userdata के अंदर की फ़ाइलें तब खो सकती हैं जब कंटेनर बदल दिया जाए या परिनियोजन को रोक दिया जाए, इसलिए हर स्टार्ट पर उन्हें फिर से डाउनलोड करें। आपकी स्क्रिप्ट द्वारा निर्यात किए गए environment variables इनफेरेंस को पास नहीं किए जाते। `/userdata` जब कंटेनर बदला जाता है या परिनियोजन रोक दिया जाता है, तब ये खो सकती हैं, इसलिए हर स्टार्ट पर उन्हें फिर से डाउनलोड करें। आपकी स्क्रिप्ट द्वारा निर्यात किए गए environment variables इनफेरेंस को पास नहीं किए जाते।

`INFERENCE_UID` और `INFERENCE_GID` उन संख्यात्मक उपयोगकर्ता और समूह IDs को रखते हैं जिनके रूप में इनफेरेंस चलता है। इनका उपयोग इनफेरेंस को उन फ़ाइलों तक पहुँच देने के लिए करें जिन्हें आपकी स्क्रिप्ट बनाती है।

```bash
#!/bin/bash
set -e
apt-get update
apt-get install -y --no-install-recommends curl jq python3-pip
python3 -m pip install 'humanize==4.12.3'
mkdir -p /userdata/custom-data
curl --fail --location 'https://YOUR_HOST/data.json' --output /userdata/custom-data/data.json
chown -R "$INFERENCE_UID:$INFERENCE_GID" /userdata/custom-data
```

एक स्क्रिप्ट अधिकतम 64 KiB की हो सकती है और उसमें NUL characters नहीं हो सकते।

## वेब ऐप

स्क्रिप्ट को "Startup Script (Bash)" फ़ील्ड में दर्ज करें। यह फ़ील्ड "Create a Dedicated Deployment" डायलॉग में और किसी मौजूदा परिनियोजन की सेटिंग्स में होती है। इसे हटाने के लिए "Clear Script" चुनें।

स्क्रिप्ट सहेजने से चल रहे कंटेनर रीस्टार्ट नहीं होते। परिवर्तन अगली बार जब कंटेनर शुरू होगा तब लागू होगा। इसे तुरंत लागू करने के लिए, परिनियोजन को रोकें और फिर उसे पुनः शुरू करें।

अपनी स्क्रिप्ट का आउटपुट पढ़ने के लिए, परिनियोजन पर "View Logs" चुनें, फिर नए प्रविष्टियों के लिए "Refresh" चुनें। यह डायलॉग सभी प्रतिलिपियों में पिछले एक घंटे की अधिकतम 300 प्रविष्टियाँ दिखाता है, और प्रविष्टियों को दिखाई देने में थोड़ा समय लग सकता है। आपकी स्क्रिप्ट जो कुछ भी प्रिंट करती है वह वहाँ दिखाई देता है, इसलिए credentials प्रिंट न करें।

## विफलताएँ

जब हर प्रतिलिपि अपनी स्टार्टअप स्क्रिप्ट 5 बार लगातार विफल कर देती है, तब परिनियोजन रुक जाता है। एक सफलता उस प्रतिलिपि के लिए गिनती रीसेट कर देती है। तब स्थिति "Paused: Startup Script Failures" पढ़ती है। स्क्रिप्ट को ठीक करें या हटा दें, फिर "Resume" चुनें। आने वाले अनुरोध परिनियोजन को फिर से शुरू नहीं करते।

जब स्क्रिप्ट विफल होना शुरू करती है, तो Roboflow "Startup Failure Alert Recipients" में मौजूद वर्कस्पेस सदस्यों को एक ईमेल भेजता है। यह सूची "Create a Dedicated Deployment" डायलॉग में या किसी मौजूदा परिनियोजन की सेटिंग्स में सेट करें। यदि सूची खाली है, तो केवल वह व्यक्ति जिसे परिनियोजन बनाया था, उसे ईमेल मिलता है। जब तक परिनियोजन ठीक नहीं हो जाता या आप स्क्रिप्ट नहीं बदलते, Roboflow उसी विफलता के लिए आगे कोई ईमेल नहीं भेजता।

## HTTP API

Dedicated Deployment endpoints यहाँ होस्ट किए गए हैं `https://roboflow.cloud`। देखें [Dedicated Deployments](/deployment/hi/roboflow-cloud/dedicated-deployments.md#http-api) बाकी के लिए।

[एक परिनियोजन बनाएं](/deployment/hi/roboflow-cloud/dedicated-deployments.md#create-a-deployment) एक वैकल्पिक `startup_script` स्ट्रिंग को अपने body में स्वीकार करता है। पहले से मौजूद परिनियोजन पर स्क्रिप्ट बदलने के लिए, इस पर पोस्ट करें `/update_startup_script`.

<mark style="color:हरा;">`POST`</mark> `/update_startup_script`

<table data-search="false"><thead><tr><th width="200">नाम</th><th width="120">प्रकार</th><th>विवरण</th><th data-type="checkbox">आवश्यक</th></tr></thead><tbody><tr><td><code>api_key</code></td><td>स्ट्रिंग</td><td>वर्कस्पेस API कुंजी।</td><td>true</td></tr><tr><td><code>deployment_name</code></td><td>स्ट्रिंग</td><td>अपडेट किया जाने वाला परिनियोजन।</td><td>true</td></tr><tr><td><code>startup_script</code></td><td>स्ट्रिंग</td><td>स्क्रिप्ट की सामग्री। स्क्रिप्ट हटाने के लिए एक खाली स्ट्रिंग भेजें।</td><td>true</td></tr></tbody></table>

```bash
curl -X POST "https://roboflow.cloud/update_startup_script" \\
  -H "Content-Type: application/json" \\
  -d '{
    "api_key": "'$ROBOFLOW_API_KEY'",
    "deployment_name": "my-deployment",
    "startup_script": "#!/bin/bash\nset -e\napt-get update\n"
  }'
```
