> 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 स्क्रिप्ट चलाएँ।

एक स्टार्टअप स्क्रिप्ट, इन्फेरेंस शुरू होने से पहले, Dedicated Deployment पर पैकेज इंस्टॉल करती है या डेटा डाउनलोड करती है। इसका उपयोग तब करें जब आपके मॉडल या Workflows को किसी Python पैकेज, सिस्टम टूल, या ऐसे डेटा फ़ाइल की ज़रूरत हो जिसे इन्फेरेंस कंटेनर शामिल नहीं करता।

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

## के बारे में

स्क्रिप्ट Bash में होती है। यह हर कंटेनर स्टार्ट पर root के रूप में चलती है, जिसमें नए replicas और restarts भी शामिल हैं। उसके बाद इन्फेरेंस एक non-root user के रूप में चलता है।

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

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

`INFERENCE_UID` और `INFERENCE_GID` उन numeric user और group 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" संवाद में और किसी मौजूदा deployment की settings में होता है। इसे हटाने के लिए "Clear Script" चुनें।

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

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

## विफलताएँ

यदि हर replica की startup script लगातार 5 बार विफल हो जाती है, तो deployment pause हो जाता है। एक सफलता उस replica के लिए गिनती रीसेट कर देती है। इसके बाद status "Paused: Startup Script Failures" दिखाता है। स्क्रिप्ट को ठीक करें या हटाएँ, फिर "Resume" चुनें। आने वाले अनुरोध deployment को resume नहीं करते।

जब स्क्रिप्ट विफल होना शुरू होती है, तो deployment बनाने वाले व्यक्ति और workspace owners को एक ईमेल मिलता है। Roboflow उसी विफलता के लिए तब तक कोई और ईमेल नहीं भेजता जब तक deployment recover न हो जाए या आप स्क्रिप्ट न बदलें।

## HTTP API

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

[एक Deployment बनाएँ](/deployment/hi/roboflow-cloud/dedicated-deployments.md#create-a-deployment) एक वैकल्पिक `startup_script` को अपनी body में स्वीकार करता है। किसी पहले से मौजूद deployment पर स्क्रिप्ट बदलने के लिए, इसे यहाँ POST करें `/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>string</td><td>Workspace API key.</td><td>true</td></tr><tr><td><code>deployment_name</code></td><td>string</td><td>अपडेट करने वाला Deployment।</td><td>true</td></tr><tr><td><code>startup_script</code></td><td>string</td><td>स्क्रिप्ट की सामग्री। स्क्रिप्ट हटाने के लिए एक खाली string भेजें।</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"
  }'
```
