
localhost पोर्ट पर सुनने वाली सेवाओं के निरीक्षण और प्रबंधन के लिए CLI उपकरण
Sonar localhost पर सुनने वाली हर चीज़ दिखाता है और उसे क्रम में रखता है: हर पोर्ट
एक समूह से संबंधित होता है — आम तौर पर वह रिपॉज़िटरी जिससे इसे शुरू किया गया था — और
उस समूह के भीतर एक नामित सेवा से। अपने डेव सर्वर को
sonar start से शुरू करें और पूरा प्रोजेक्ट एक ऐसी चीज़ बन जाता है जिसे आप ट्री के रूप में सूचीबद्ध कर सकते हैं,
इंतज़ार कर सकते हैं, टेल कर सकते हैं, और एक ही कमांड से रोक सकते हैं। Docker कंटेनर, Compose
प्रोजेक्ट और वे प्रोसेस जिन्हें आपने हाथ से शुरू किया है, वे भी बिना किसी
कॉन्फ़िगरेशन के उठा लिए जाते हैं।```
$ sonar list --tree
my-app (3 ports, running) ~/code/my-app
├─ 5432 db postgres:17 http://localhost:5432
├─ 5173 frontend vite (v5.4) http://localhost:5173
└─ 8000 api uvicorn app:app http://localhost:8000
ungrouped (1 port)
└─ 3000 next-server (v16.1.6) http://localhost:3000
## इंस्टॉल करें
### Homebrew (macOS / Linux)```sh
brew install raskrebs/sonar/sonar
Homebrew 6 तब तक तृतीय-पक्ष टैप से फ़ॉर्मूले अस्वीकार करता है जब तक आप टैप पर एक बार भरोसा नहीं करते
(Error: Refusing to load formula raskrebs/sonar/sonar from untrusted tap):```sh
brew trust raskrebs/sonar
### इंस्टॉल स्क्रिप्ट```sh
curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | bash
नवीनतम बाइनरी को ~/.local/bin में डाउनलोड करता है और यदि आवश्यक हो तो इसे आपके PATH में जोड़ता है। अपना टर्मिनल पुनः प्रारंभ करें या source ~/.zshrc चलाएँ।
Windows पर (PowerShell):```powershell irm https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.ps1 | iex
कस्टम इंस्टॉल स्थान:```sh
curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | SONAR_INSTALL_DIR=/usr/local/bin bash
Install a specific version:```sh curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | SONAR_VERSION=vX.Y.Z bash
यहाँ आपका अनुवाद है:
```markdown
## स्थापना
### आवश्यक शर्तें
- Python 3.8+
- pip (पायथन पैकेज इंस्टॉलर)
### चरण-दर-चरण स्थापना
1. रिपॉजिटरी को क्लोन करें:
```bash
git clone https://github.com/example/tool.git
cd tool
python3 -m venv venv
source venv/bin/activate # Linux/macOS पर
venv\Scripts\activate # Windows पर
pip install -r requirements.txt
tool --version
आपको संस्करण संख्या दिखनी चाहिए, जो सफल स्थापना का संकेत देती है।
कुछ सुविधाओं के लिए अतिरिक्त पैकेज की आवश्यकता होती है। इन्हें स्थापित करने के लिए:
pip install -r requirements-optional.txt
किसी लक्ष्य को स्कैन करने के लिए:
tool scan example.com
| विकल्प | विवरण |
|---|---|
-h, --help | सहायता संदेश दिखाएं |
-v, --verbose | विस्तृत आउटपुट सक्षम करें |
-o, --output FILE | परिणामों को FILE में सहेजें |
-f, --format FORMAT | आउटपुट प्रारूप निर्दिष्ट करें (json, csv, txt) |
--threads N | समवर्ती थ्रेड्स की संख्या निर्धारित करें |
--timeout SECONDS | प्रत्येक अनुरोध के लिए टाइमआउट निर्धारित करें |
एक विशिष्ट पोर्ट को स्कैन करें:
tool scan example.com -p 80,443,8080
परिणामों को JSON फ़ाइल में सहेजें:
tool scan example.com -o results.json -f json
उन्नत स्कैनिंग के लिए कई विकल्पों को संयोजित करें:
tool scan example.com --threads 10 --timeout 30 -v -o report.csv -f csv
आप config.yaml फ़ाइल का उपयोग करके डिफ़ॉल्ट व्यवहार को कॉन्फ़िगर कर सकते हैं:
# config.yaml उदाहरण
scan:
threads: 5
timeout: 15
ports: [80, 443, 8080]
output:
format: json
directory: ./results
कॉन्फ़िगरेशन फ़ाइल का उपयोग करने के लिए:
tool scan example.com -c config.yaml
कमांड-लाइन विकल्प कॉन्फ़िगरेशन फ़ाइल सेटिंग्स को ओवरराइड करते हैं।
$env:SONAR_VERSION="vX.Y.Z"; irm https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.ps1 | iex
```
### Go का उपयोग करना```sh
go install github.com/raskrebs/sonar@latest
```
शेल पूर्णताएँ (टैब-पूर्णता पोर्ट नंबर):```sh
sonar completion zsh > "${fpath[1]}/_sonar" # zsh
sonar completion bash > /etc/bash_completion.d/sonar # bash
sonar completion fish | source # fish
```
## साठ सेकंड
अपने `dev.sh` में कमांड्स के आगे `sonar start` लगाएँ:```sh
#!/usr/bin/env bash
sonar start --name db --port 5432 -- docker compose up db &
sonar start --name api --port 8000 -- uv run uvicorn app:app &
sonar start --name frontend --port 5173 -- npm run dev &
wait
```
समूह का नाम रिपॉजिटरी से आता है, इसलिए और कुछ कॉन्फ़िगर करने की आवश्यकता नहीं है।
किसी अन्य टर्मिनल में:```sh
sonar list --tree
```
```markdown
यह एक विशेषज्ञ साइबर सुरक्षा उपकरण सामग्री अनुवादक है जो Kitploit के लिए है। आपका एकमात्र कार्य Markdown सामग्री का एक भाषा से दूसरी भाषा में सटीक, स्वाभाविक और संक्षिप्त अनुवाद करना है।
महत्वपूर्ण नियम:
- केवल प्राकृतिक भाषा पाठ का अनुवाद करें। कभी भी अनुवाद न करें: कोड, टर्मिनल कमांड, फ़ाइल पथ, URL, पैकेज नाम, CVE ID, पर्यावरण चर नाम, पहचानकर्ता।
- सभी Markdown संरचना को बरकरार रखें: शीर्षक, सूचियाँ, नेस्टेड सूचियाँ, तालिकाएँ (संरेखण सहित), लिंक, चित्र, इनलाइन कोड, कोड फ़ेंस, ब्लॉककोट, HTML ब्लॉक और क्षैतिज नियम।
- सटीक स्वरूपण बनाए रखें: व्हाइटस्पेस, नई पंक्तियाँ, इंडेंटेशन, तालिका स्तंभ संख्या और संरेखण मार्कर।
- बैज, शील्ड और स्थिति छवियों को बिल्कुल वैसे ही बनाए रखें जैसे वे दिखाई देते हैं।
- कभी भी ऐसा विराम चिह्न न जोड़ें, हटाएँ या संशोधित करें जो कोड व्यवहार को बदल सकता है।
- केवल अनुवादित पाठ लौटाएँ। कोई प्रस्तावना नहीं, कोई "यहाँ अनुवाद है" नहीं, कोई "ज़रूर!" नहीं, कोई स्पष्टीकरण नहीं, कोई टिप्पणी नहीं, कोई मेटा-टेक्स्ट नहीं।
- अपने उत्तर को कभी भी मार्कडाउन कोड ब्लॉक में न लपेटें।
- कभी भी JSON, YAML, XML, ऐरे, ऑब्जेक्ट, कुंजी/मान रैपर, स्कीमा, या "translated", "language", "markdown", "content" या "result" जैसे फ़ील्ड आउटपुट न करें।
- आपका उत्तर केवल कच्ची Markdown/सादा पाठ सामग्री होनी चाहिए। यदि स्रोत में कोड फ़ेंस के अंदर JSON/YAML/XML उदाहरण हैं, तो उन उदाहरणों को Markdown के भाग के रूप में शब्दशः संरक्षित करें; पूरे उत्तर को संरचित ऑब्जेक्ट में न बदलें।
- प्रश्न न पूछें। बातचीत में शामिल न हों।
- यदि आप किसी तकनीकी शब्द का सुरक्षित रूप से अनुवाद नहीं कर सकते हैं, तो उसे अनुवादित छोड़ दें बजाय इसे तोड़ने के जोखिम के।
निम्नलिखित Kitploit उपकरण सामग्री का अनुवाद करें।
यह एक लंबे Markdown दस्तावेज़ का भाग 27/107 है जिसका क्रम में अनुवाद किया जा रहा है।
स्रोत भाषा: en है।
लक्ष्य भाषा: hi है।
सामग्री प्रकार: README भाग 27/107।
भाग-विशिष्ट नियम:
1. केवल प्राकृतिक भाषा पाठ का अनुवाद करें। कभी भी अनुवाद न करें: कोड ब्लॉक, शेल कमांड, फ़ाइल पथ, URL, पैकेज नाम, तकनीकी पहचानकर्ता, CVE ID, पर्यावरण चर नाम।
2. सभी Markdown सिंटैक्स को बिल्कुल वैसा ही बनाए रखें।
3. "## भाग N", "## खंड N", "## पिछले से जारी..." या "## भाग का अनुवाद..." जैसे परिचयात्मक शीर्षक न जोड़ें। "भाग N का अंत" या "सामग्री जारी है..." मार्कर न जोड़ें।
4. लोप को इंगित करने के लिए "..." इलिप्सिस मार्कर न जोड़ें। केवल प्रदान किए गए सटीक पाठ का अनुवाद करें, संरचना में अक्षर-दर-अक्षर।
5. भाग सीमाएँ जानबूझकर हैं। संरचना को संरक्षित करें ताकि भागों को बिना दृश्य कलाकृतियों के निर्बाध रूप से जोड़ा जा सके।
6. केवल अनुवादित पाठ लौटाएँ। कोई प्रस्तावना नहीं, कोई टिप्पणी नहीं, कोड ब्लॉक में लपेटना नहीं, कोई JSON/YAML/XML नहीं, कोई ऐरे नहीं, कोई ऑब्जेक्ट नहीं, कोई स्कीमा नहीं, कोई कुंजी/मान रैपर नहीं।
7. यदि भाग पैराग्राफ के बीच से शुरू होता है, तो उस बिंदु से अनुवाद जारी रखें। जब तक कि यह स्रोत में मौजूद न हो, अग्रणी नई पंक्ति या इंडेंट न जोड़ें।
इनपुट:
my-app (3 ports, running) ~/code/my-app ├─ 5432 db postgres:17 http://localhost:5432 ├─ 5173 frontend vite (v5.4) http://localhost:5173 └─ 8000 api uvicorn app:app http://localhost:8000
और जब आपका काम पूरा हो जाए, तो पूरे प्रोजेक्ट को रोक दें — सर्वर, वॉचर और वर्कर्स:```sh
sonar kill -g my-app
नीचे # check से चिह्नित उदाहरण हर CI रन पर scripts/readme-check.sh द्वारा एक नए बिल्ड के विरुद्ध निष्पादित किए जाते हैं।
sonar list sonar list --tree sonar list --group my-app sonar list --json
यहाँ आपका अनुवाद है:
**सुरक्षा अनुसंधान और शोषण विकास के लिए एक शक्तिशाली उपकरण**
यह उपकरण सुरक्षा पेशेवरों और शोधकर्ताओं को विभिन्न प्रकार के कार्यों को स्वचालित करने में मदद करता है, जिसमें शामिल हैं:
- नेटवर्क स्कैनिंग और सेवा पहचान
- भेद्यता विश्लेषण और शोषण विकास
- पोस्ट-एक्सप्लॉइटेशन गतिविधियाँ
- रिपोर्टिंग और दस्तावेज़ीकरण
**मुख्य विशेषताएँ:**
- मॉड्यूलर आर्किटेक्चर जो आसान विस्तार की अनुमति देता है
- कई लोकप्रिय उपकरणों और ढाँचों के साथ एकीकरण
- उपयोगकर्ता के अनुकूल कमांड-लाइन इंटरफ़ेस
- व्यापक दस्तावेज़ीकरण और उदाहरण
**स्थापना:**
```bash
git clone https://github.com/example/tool.git
cd tool
pip install -r requirements.txt
उपयोग:
python tool.py --target example.com --scan
लाइसेंस:
यह परियोजना MIT लाइसेंस के तहत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।```sh
sonar list --stats # CPU, memory, threads, uptime, state
sonar list --health # HTTP health checks
sonar list --filter docker # only Docker ports
sonar list --sort name # port | pid | name | type
sonar list -a # include desktop apps
sonar list -c port,process,group,cpu,mem
sonar list --host user@server # scan a remote machine over SSH
डिफ़ॉल्ट कॉलम हैं `port`, `process`, `group`, `container`, `image`,
`containerport`, `url`, जहाँ `process` वह नाम दिखाता है जो आपने पोर्ट को दिया था
(`sonar rename`), फिर सेवा का नाम, और फिर जो पता चला।
उपलब्ध कॉलम: `port`, `process`, `pid`, `type`, `url`, `group`, `cpu`,
`mem`, `threads`, `uptime`, `state`, `connections`, `health`, `latency`,
`container`, `image`, `containerport`, `compose`, `project`, `user`, `bind`,
`ip`.
डेस्कटॉप ऐप्स और सिस्टम सेवाएँ जो संयोगवश सुन रही हैं — Figma, Discord,
Spotify, ControlCenter, macOS `.app` बंडल, `/System/Library/` डेमन — छिपी
रहती हैं जब तक आप `-a` पास नहीं करते।
### `sonar start`
किसी कमांड को किसी समूह में नामित सेवा के रूप में चलाएँ:```sh
sonar start -- npm run dev
sonar start --group my-app --name frontend -- npm run dev
sonar start --port 5173 -- npm run dev # expected port, before it binds
sonar start --detach --name api -- uv run uvicorn app:app
sonar start --list
कुछ भी पास करने की आवश्यकता नहीं है:
--group, अन्यथा निकटतम .sonar.yaml में name, अन्यथा
git रूट की निर्देशिका का नाम (एक worktree repo@worktree बन जाता है), अन्यथा
वर्तमान निर्देशिका का नाम।--name, अन्यथा वह .sonar.yaml सेवा जिसका cmd मेल खाता है, अन्यथा
कमांड से अनुमानित (npm run dev → dev, uv run api → api,
python -m uvicorn → uvicorn, ./dev.sh → dev.sh)।--port एक संकेत है, बाध्यकारी नहीं: रन starting के रूप में दिखता है
जब तक पोर्ट वास्तव में सुन नहीं रहा होता, और डेमॉन इसका उपयोग
प्रक्रिया को पोर्ट से मिलाने के लिए करता है।चाइल्ड stdin, stdout, stderr, cwd और environment इनहेरिट करता है, साथ ही
SONAR_GROUP, SONAR_NAME और SONAR_RUN_ID। इसे अपना स्वयं का process group मिलता है,
इसलिए sonar kill पूरे ट्री को नीचे ले जाता है — एक dev server अपने watchers और
workers के साथ। Ctrl+C आगे भेजा जाता है, और sonar चाइल्ड के exit code के साथ बाहर निकलता है।
--detach तुरंत लौटता है और आउटपुट को
~/.config/sonar/logs/<group>/<name>.log में लिखता है। --list दिखाता है कि sonar ने क्या शुरू किया
(--json मशीन-पठनीय रूप के लिए):```sh
sonar start --list
sonar start --detach --name demo --port 8123 -- sleep 5
sonar start --list --json
### `.sonar.yaml`
एक प्रोजेक्ट अपने नाम और अपनी सेवाओं को रिपॉजिटरी रूट पर `.sonar.yaml` में परिभाषित करता है। यह वैकल्पिक है — sonar इसके बिना git रूट द्वारा समूह बनाता है — और इसे कमिट करने का इरादा है:```yaml
name: my-app
services:
- name: db
cmd: docker compose up db
port: 5432
health: /
description: Postgres 17
icon: database
color: "#4f8cc9"
- name: api
cmd: uv run uvicorn app:app --port 8000
cwd: backend
port: 8000
health: /healthz
depends_on: [db]
- name: frontend
cmd: npm run dev
port: 5173
depends_on: [api]
ports: [9229] # ports that belong to this project without a service
name — समूह का नाम। कोई स्लैश नहीं, कोई व्हाइटस्पेस नहीं।cmd, cwd, port — sonar up सेवा कैसे शुरू करता है। cwd फ़ाइल के सापेक्ष है
और अपनी निर्देशिका से बाहर नहीं जा सकता।health — एक HTTP पथ जिसे डेमॉन सेवा चालू रहने के दौरान पोल करता है, ताकि
सेवा चालू हो सकती है लेकिन अभी स्वस्थ नहीं। यह ok, fail या
unknown रिपोर्ट करता है, विफलता के कारण के साथ।description, icon, color — डेस्कटॉप ऐप के लिए मुक्त-रूप मेटाडेटा; sonar
उन्हें कभी अनुमानित नहीं करता।depends_on — शुरुआती क्रम। ऐसी सेवा का नाम देना जो फ़ाइल में नहीं है, या एक
चक्र, एक त्रुटि है; एक अमान्य फ़ाइल एक बार रिपोर्ट की जाती है और कभी स्कैन नहीं रोकती।.sonar.yml पढ़ा जाता है यदि आप इसे ऐसे लिखते हैं; sonar init हमेशा
.sonar.yaml लिखता है। डेमॉन उन प्रोजेक्ट्स को देखता है जिन्हें वह जानता है और
बिना पुनः आरंभ के फ़ाइल में संपादन उठा लेता है। sonar द्वारा किया गया हर संपादन — डेस्कटॉप
ऐप से, sonar groups add, rename और remove से, एक एजेंट से — डेमॉन से
गुजरता है, जो फ़ाइल को अपने स्वयं के सिंटैक्स ट्री से पुनः रेंडर करता है, इसलिए
टिप्पणियाँ, कुंजी क्रम और लेआउट एक संपादन से बच जाते हैं जो एक सेवा को जोड़ता, नाम बदलता या हटाता है, ठीक वैसे ही जैसे वे मेटाडेटा परिवर्तन से बचते हैं। एक अपवाद: एक अनुगामी टिप्पणी को संरेखित करने वाले अतिरिक्त स्थान (cmd: x # note) एक में सिमट जाते हैं, क्योंकि
YAML लाइब्रेरी टिप्पणी रखती है लेकिन उसका कॉलम नहीं।
sonar up # the .sonar.yaml at or above this directory sonar up my-app # a group by name sonar up --only api,frontend sonar up --json
हर उस सेवा को शुरू करता है जिसे समूह का `.sonar.yaml` घोषित करता है, `depends_on` क्रम में:
एक सेवा अपनी निर्भरताओं द्वारा घोषित पोर्ट्स के लिए प्रतीक्षा करती है, इससे पहले कि वह शुरू हो, और
जो पहले से सुन रही (listening) है उसे छोड़ दिया जाता है। प्रत्येक अपनी अलग प्रक्रिया समूह में अलग (detached) चलती है,
उसका आउटपुट `~/.config/sonar/logs/<group>/<service>.log` में होता है।```
✓ db pid 41022 ~/.config/sonar/logs/my-app/db.log
- api already running
✓ frontend pid 41108 ~/.config/sonar/logs/my-app/frontend.log
2 started, 1 already running
एक सेवा जो शुरू होने में विफल रहती है, उसे अपनी अलग पंक्ति पर रिपोर्ट किया जाता है और कमांड को गैर-शून्य स्थिति के साथ बाहर निकलने पर मजबूर करती है, चाहे बाकी कुछ भी सामने आए। उन सभी को फिर से रोकने के लिए sonar kill -g my-app चलाएँ। sonar up को डेमॉन की आवश्यकता होती है और यदि वह पहले से नहीं चल रहा है तो उसे शुरू कर देता है।
sonar groups और `sonar init````shsonar init --dry-run sonar init --service api:8000:/healthz --service web:5173 sonar groups sonar groups --json
group=$(basename "$PWD") # sonar init names the group after the directory sonar groups add "$group" worker --port 9000 --cmd 'uv run worker' --depends-on api sonar groups rename "$group" worker jobs sonar groups remove "$group" jobs
`sonar groups` उन सभी समूहों की सूची देता है जिन्हें sonar देख सकता है और प्रत्येक नाम कहाँ से आया है:
`manual` (आपने इसे `sonar assign` से पिन किया है), `start` (एक `sonar start` रन),
`file` (एक `.sonar.yaml`) या `auto` (git रूट या Compose प्रोजेक्ट)।
`sonar groups <name>` एक समूह के पोर्ट और सेवाएँ दिखाता है, और उन सेवाओं को
जो घोषित हैं लेकिन चल नहीं रही हैं।
`sonar init` git रूट पर एक `.sonar.yaml` लिखता है, जो अभी सुन रही चीज़ों से बनता है —
डेस्कटॉप ऐप्स और 1024 से नीचे के पोर्ट को छोड़कर। यह बिना `--force` के ओवरराइट करने से
मना कर देता है, और `--dry-run` फ़ाइल को लिखने के बजाय उसे प्रिंट करता है।
`--merge` पहले से मौजूद फ़ाइल में जोड़ता है, मना करने के बजाय, और
`--service name:port[:health]` — दोहराने योग्य — उन सेवाओं को लिखता है जिन्हें आप नाम देते हैं
उनके बजाय जो उसने पाईं, और उस पोर्ट के लिए अनुमानित कमांड को रखता है जिसे आपने रखा।
`--force` और `--merge` परस्पर अनन्य हैं।
`sonar groups add <group> <name> --port N` उस समूह के `.sonar.yaml` में एक सेवा जोड़ता है,
बाकी के लिए `--cmd`, `--cwd`, `--health`, `--description`, `--icon`,
`--color` और एक दोहराने योग्य `--depends-on` के साथ। `sonar groups
rename <group> <old> <new>` फ़ाइल में हर जगह एक का नाम बदलता है, `depends_on`
संदर्भों सहित, और `sonar groups remove <group> <name>` एक को हटाता है और
उसे हर `depends_on` से हटा देता है जिसने उसे नाम दिया था। तीनों एक ऐसे संपादन से मना करते हैं
जो फ़ाइल को अमान्य छोड़ देगा — एक डुप्लिकेट नाम, एक पोर्ट जिसे कोई और सेवा पहले से
दावा करती है, एक सेवा जो मौजूद नहीं है — और उनमें से कोई भी एक बाइट नहीं लिखता जब तक
पूरा संपादन सही होने के लिए ज्ञात न हो।
डेमन लिखने का काम करता है, इसीलिए फ़ाइल अपनी टिप्पणियों और कुंजी क्रम के साथ
वापस आती है, चाहे संपादन CLI, डेस्कटॉप ऐप या किसी एजेंट से आया हो। `sonar groups add`, `rename` और `remove` को डेमन की आवश्यकता होती है और यदि वह पहले से नहीं चल रहा है तो उसे शुरू करते हैं; तीनों नाम उप-कमांड हैं, इसलिए वास्तव में `add` नाम का एक समूह `sonar groups --json` से पढ़ा जाता है।
### `sonar kill````sh
sonar kill 3000 # SIGTERM, then SIGKILL after 5s
sonar kill 3000 5432 -f # SIGKILL both straight away
sonar kill 3000 --tree # the listener and everything below it
sonar kill --pid 12345 --tree # by process id
sonar kill -g my-app # a whole group, confirms unless -y
sonar kill --all --filter docker -y # every container publishing a port
sonar kill --all --project my-app # one Compose project
sonar kill 3000 --ip 127.0.0.1 # one bind address of several
sonar kill --all --dry-run --json # the plan for the whole machine
--dry-run किसी भी सेलेक्टर को लेता है और कुछ भी नहीं बदलता: यह उन क्रियाओं को प्रिंट करता है जो
kill करेगा, पहले चाइल्ड प्रोसेस को, और सब कुछ चालू रहने देता है। शुरू से अंत तक,
अपने स्वयं के लिसनर के विरुद्ध:```sh
sonar start --detach --name plan --port 8231 -- sonar map 3000 8231
sonar wait 8231
sonar kill 8231 --dry-run --json # the plan; the mapping keeps running
sonar kill 8231 -y # and now for real
एक स्थितीय तर्क को पोर्ट के रूप में पढ़ा जाता है, और केवल तब pid के रूप में जब उस नंबर पर कुछ भी सुन नहीं रहा हो। `-g` समाधान किए गए समूह, एक लीगेसी रन टैग या id, और Compose प्रोजेक्ट से मेल खाता है, केस-असंवेदनशील रूप से।
एक प्रक्रिया जो SIGTERM को अनदेखा करती है, उसे SIGKILL भेजा जाता है जब पोर्ट `--grace` (5s) के बाद भी सुन रहा हो; `--no-escalate` उसे बंद कर देता है। चाइल्ड प्रक्रियाओं को पैरेंट से पहले संकेत दिया जाता है, इसलिए एक ट्री क्रम में नीचे आता है। Docker कंटेनरों को `docker stop` के साथ रोका जाता है और उन्हें कभी संकेत नहीं दिया जाता। `sonar start` द्वारा शुरू किया गया एक लिसनर हमेशा उसके प्रोसेस ग्रुप के साथ रोका जाता है।
`--json` प्रति प्रक्रिया एक पंक्ति प्रिंट करता है:
`{port, bind_address, pid, name, method, ok, error}`, जहाँ `method` `sigterm`, `sigkill`, `docker_stop`, `map_stop` या `none` है। एक खाली स्वीप 0 के साथ बाहर निकलता है; एक अज्ञात समूह 1 के साथ बाहर निकलता है।
### `sonar map````sh
sonar map 6873 3002 # also serve the service on 6873 from port 3002
TCP प्रॉक्सी को फोरग्राउंड में तब तक चलाता है जब तक आप इसे रोक नहीं देते। sonar kill उस मैपिंग को रिपोर्ट करता है जिसे उसने map_stop के रूप में रोका था।
sonar rename, sonar assign, `sonar history````shsonar rename 3000 storefront # a name of your own, survives restarts sonar rename 3000 --clear sonar assign 3000 my-app # pin a port to a group by hand sonar assign 3000 --clear sonar history # everything that came up, went down, restarted sonar history 3000 --since 24h --limit 20
सुरक्षा अनुसंधानकर्ताओं और पेन-टेस्टर्स के लिए, यह उपकरण एक व्यावहारिक समाधान प्रदान करता है जो मौजूदा वर्कफ़्लो में सहजता से एकीकृत हो जाता है। इसका हल्का डिज़ाइन सुनिश्चित करता है कि यह संसाधन-सीमित वातावरण में भी कुशलता से चल सके, जबकि इसका मॉड्यूलर आर्किटेक्चर विशिष्ट आवश्यकताओं के अनुसार अनुकूलन की अनुमति देता है। चाहे आप नेटवर्क सुरक्षा का आकलन कर रहे हों या घटना प्रतिक्रिया कर रहे हों, यह उपकरण मूल्यवान जानकारी प्रदान करता है जो आपके सुरक्षा रुख को बेहतर बनाने में मदद कर सकती है।```sh
sonar history --since 1h
sonar history --json
# check
नाम और पिन sonar के डेटाबेस में संग्रहीत होते हैं, जो पोर्ट के बारे में ज्ञात सबसे विशिष्ट चीज़ से कुंजीबद्ध होते हैं: रन (run:<group>/<name>), कंटेनर (docker:<project>/<service>), कार्यशील निर्देशिका, और अंत में पोर्ट नंबर। एक नाम बदला गया डेव सर्वर रीस्टार्ट के दौरान अपना नाम बनाए रखता है; केवल पोर्ट 3000 से जुड़ा एक नाम उस पर लागू होता है जो वहाँ उत्तर देता है। इन तीन कमांडों को डेमॉन की आवश्यकता होती है और यदि यह चल नहीं रहा हो तो वे इसे शुरू कर देते हैं।
sonar info 3000 # command, user, bind, stats, health sonar logs 3000 # tail; docker logs for containers sonar wait 5432 3000 --timeout 60s # block until ready sonar wait 5432 --http=/health # wait for HTTP 200-399, not just TCP sonar next 3000 # first free port from 3000 sonar next 3000-3100 -n 3 # three consecutive free ports sonar graph # who is connected to whom sonar graph --dot # Graphviz sonar open 3000 # open in the browser sonar attach 3000 # shell into the container, or TCP sonar watch # live view sonar watch --stats --notify
यहाँ आपके लिए अनुवाद है:
```markdown
यह सुनिश्चित करने के लिए कि आपका सिस्टम सुरक्षित है, निम्नलिखित चरणों का पालन करें:
1. अपने सिस्टम को नियमित रूप से अपडेट करें।
2. मजबूत पासवर्ड का उपयोग करें।
3. फ़ायरवॉल सक्षम रखें।
4. एंटीवायरस सॉफ़्टवेयर इंस्टॉल करें।
5. अनजान लिंक पर क्लिक करने से बचें।
> **नोट:** ये सिफारिशें केवल सामान्य जानकारी के लिए हैं और किसी विशेष स्थिति पर लागू नहीं हो सकती हैं।
```bash
sudo apt update && sudo apt upgrade -y
अधिक जानकारी के लिए, आधिकारिक दस्तावेज़ देखें।
| सुविधा | विवरण | स्थिति |
|---|---|---|
| प्रमाणीकरण | उपयोगकर्ता सत्यापन | ✅ सक्षम |
| एन्क्रिप्शन | डेटा सुरक्षा | ✅ सक्षम |
| लॉगिंग | गतिविधि ट्रैकिंग | ⚠️ वैकल्पिक |
sonar next 3000
sonar next 3000-3100 -n 3 --json
sonar graph --json
sonar info --help
# check
```
`sonar wait` बाहर निकलता है `0` (तैयार), `1` (टाइमआउट) या `2` (बाधित), जो इसे
किसी चीज़ को शुरू करने और उसका परीक्षण करने के बीच रखने के लिए उपयुक्त बनाता है:```sh
docker compose up -d
sonar wait 5432 3000 --timeout 60s && npm run migrate && npm run test
```
**डेमन या सीधा स्कैन।** हर रीड कमांड डेमन से पूछता है कि क्या कोई चल रहा है,
क्योंकि उसके पास पहले से ही उत्तर होता है और उसे `lsof` फोर्क करने की जरूरत नहीं होती।
अगर कोई नहीं चल रहा है, तो वे सीधे स्कैन करते हैं और stderr पर एक नोट छापते हैं जो यह बताता है।
`sonar kill` भी इसी नियम का पालन करता है: एक सुलभ डेमन ही किलिंग करता है, इसलिए यह
तुरंत फिर से स्कैन करता है और इसका अगला उत्तर — और पोर्ट इतिहास — पहले से ही जानता है
कि पोर्ट चला गया है। न तो रीड और न ही किल आपकी पीठ पीछे डेमन शुरू करते हैं।
`--no-daemon` सीधे स्कैन को चुपचाप मजबूर करता है और किसी भी कमांड पर काम करता है:```sh
sonar list --no-daemon --json
# check
```
### `sonar host````sh
sonar host # cpu, load, memory and disk of the machine sonar watches
sonar host --json
```
```markdown
यह एक विशेषज्ञ साइबर सुरक्षा उपकरण सामग्री अनुवादक है जो Kitploit के लिए है। आपका एकमात्र कार्य Markdown सामग्री का एक भाषा से दूसरी भाषा में सटीक, मुहावरेदार और संक्षिप्त अनुवाद उत्पन्न करना है।
महत्वपूर्ण नियम:
- केवल प्राकृतिक भाषा पाठ का अनुवाद करें। कभी भी अनुवाद न करें: कोड, टर्मिनल कमांड, फ़ाइल पथ, URL, पैकेज नाम, CVE ID, पर्यावरण चर नाम, पहचानकर्ता।
- सभी Markdown संरचना को बरकरार रखें: शीर्षक, सूचियाँ, नेस्टेड सूचियाँ, तालिकाएँ (संरेखण सहित), लिंक, चित्र, इनलाइन कोड, कोड फ़ेंस, ब्लॉककोट, HTML ब्लॉक और क्षैतिज नियम।
- सटीक स्वरूपण बनाए रखें: रिक्त स्थान, नई पंक्तियाँ, इंडेंटेशन, तालिका स्तंभ संख्या और संरेखण चिह्न।
- बैज, शील्ड और स्थिति छवियों को बिल्कुल वैसे ही बनाए रखें जैसे वे दिखाई देते हैं।
- कभी भी ऐसा विराम चिह्न न जोड़ें, हटाएँ या संशोधित न करें जो कोड व्यवहार को बदल सकता है।
- केवल अनुवादित पाठ लौटाएँ। कोई प्रस्तावना नहीं, कोई "यहाँ अनुवाद है" नहीं, कोई "ज़रूर!" नहीं, कोई स्पष्टीकरण नहीं, कोई टिप्पणी नहीं, कोई मेटा-टेक्स्ट नहीं।
- अपने उत्तर को कभी भी मार्कडाउन कोड ब्लॉक में न लपेटें।
- कभी भी JSON, YAML, XML, सरणियाँ, ऑब्जेक्ट, कुंजी/मान रैपर, स्कीमा, या "translated", "language", "markdown", "content", या "result" जैसे फ़ील्ड आउटपुट न करें।
- आपका उत्तर केवल कच्ची Markdown/सादा पाठ सामग्री होनी चाहिए। यदि स्रोत में कोड फ़ेंस के अंदर JSON/YAML/XML उदाहरण हैं, तो उन उदाहरणों को Markdown के भाग के रूप में शब्दशः संरक्षित करें; पूरे उत्तर को संरचित ऑब्जेक्ट में न बदलें।
- प्रश्न न पूछें। बातचीत में शामिल न हों।
- यदि आप किसी तकनीकी शब्द का सुरक्षित रूप से अनुवाद नहीं कर सकते हैं, तो उसे अनुवादित छोड़ दें बजाय इसे तोड़ने के जोखिम के।
निम्नलिखित Kitploit उपकरण सामग्री का अनुवाद करें।
यह लंबे Markdown दस्तावेज़ का भाग 67 का 107 है जिसका क्रम में अनुवाद किया जा रहा है।
स्रोत भाषा en है।
लक्ष्य भाषा: hi।
सामग्री प्रकार: README भाग 67/107।
भाग-विशिष्ट नियम:
1. केवल प्राकृतिक भाषा पाठ का अनुवाद करें। कभी भी अनुवाद न करें: कोड ब्लॉक, शेल कमांड, फ़ाइल पथ, URL, पैकेज नाम, तकनीकी पहचानकर्ता, CVE ID, पर्यावरण चर नाम।
2. सभी Markdown सिंटैक्स को बिल्कुल वैसा ही बनाए रखें।
3. "## भाग N", "## भाग N", "## पिछले से जारी..." या "## भाग का अनुवाद..." जैसे परिचयात्मक शीर्षक न जोड़ें। "भाग N का अंत" या "सामग्री जारी है..." मार्कर न जोड़ें।
4. लोप को इंगित करने के लिए "..." इलिप्सिस मार्कर न जोड़ें। केवल दिए गए सटीक पाठ का अनुवाद करें, संरचना में अक्षर दर अक्षर।
5. भाग सीमाएँ जानबूझकर हैं। संरचना को संरक्षित करें ताकि भागों को बिना दृश्य कलाकृतियों के निर्बाध रूप से जोड़ा जा सके।
6. केवल अनुवादित पाठ लौटाएँ। कोई प्रस्तावना नहीं, कोई टिप्पणी नहीं, कोड ब्लॉक में लपेटना नहीं, कोई JSON/YAML/XML नहीं, कोई सरणियाँ नहीं, कोई ऑब्जेक्ट नहीं, कोई स्कीमा नहीं, कोई कुंजी/मान रैपर नहीं।
7. यदि भाग पैराग्राफ के बीच से शुरू होता है, तो उस बिंदु से अनुवाद जारी रखें। जब तक कि स्रोत में मौजूद न हो, अग्रणी नई पंक्ति या इंडेंट न जोड़ें।
इनपुट:
``````sh
sonar host
# check
```
डेमन अपनी मशीन को स्कैन कैडेंस पर मापता है और उसे स्नैपशॉट के `hosts` संग्रह की `localhost` पंक्ति के रूप में प्रकाशित करता है: OS और कर्नेल, अपटाइम, CPU प्रतिशत, लोड एवरेज, मेमोरी और `/` को धारण करने वाली डिस्क। CPU प्रतिशत दो स्कैनों के बीच किया गया कार्य है, इसलिए यह तब तक null रहता है जब तक डेमन दो बार स्कैन नहीं कर लेता; एक आंकड़ा जो कोई प्लेटफ़ॉर्म उत्पन्न नहीं कर सकता — विंडोज़ पर लोड एवरेज, जिसमें यह नहीं होता — शून्य के बजाय null होता है। `sonar remote add` के साथ पंजीकृत प्रत्येक होस्ट अपने स्वयं के लोड के साथ उसी तालिका में शामिल होता है। कमांड को एक चालू डेमन की आवश्यकता होती है: यह डेमन ही है जो पिछला नमूना रखता है जिसके विरुद्ध प्रतिशत मापा जाता है।
### `sonar remote install````sh
sonar remote install [email protected] # same version as this sonar
sonar remote install hetzner --version v0.6.0 # a Host from ~/.ssh/config
sonar remote install deploy@box --no-service # the binary, no daemon
```
पुट सोनार को उस होस्ट पर जहाँ आप पहले से ssh कर सकते हैं, और वहाँ उसका डेमॉन शुरू कर देता है। रिलीज़ आर्काइव **रिमोट होस्ट पर** डाउनलोड और चेकसम किया जाता है — इस मशीन से कुछ भी कॉपी नहीं होता — और बाइनरी `~/.local/bin/sonar` में रखी जाती है, इसलिए इसमें से किसी को भी रूट की ज़रूरत नहीं होती। डेमॉन एक systemd यूज़र यूनिट के रूप में चलता है जहाँ होस्ट के पास एक होता है (`~/.config/systemd/user/sonar.service`), और जहाँ नहीं होता वहाँ डिटैच होकर चलता है; `loginctl enable-linger` को सलाह के रूप में प्रिंट किया जाता है जब यूज़र सेशन लॉगआउट पर समाप्त हो जाएगा और डेमॉन को अपने साथ ले जाएगा।
इंस्टॉल किया गया संस्करण उस सोनार का संस्करण है जिसे आपने चलाया था, इसलिए दोनों सिरे एक ही प्रोटोकॉल बोलते हैं। इसे फिर से चलाने से जगह पर अपग्रेड होता है और डेमॉन रीस्टार्ट होता है, जो इंस्टॉल और अपडेट को एक ही कमांड बनाता है।
टारगेट `ssh` पर बिना बदले जाता है: `~/.ssh/config` से एक `Host` एलियास काम करता है, और वैसे ही `ProxyJump`, `IdentityFile` और `Port` भी काम करते हैं जो वह सेट करता है। `--identity` और `--ssh-arg` उन फ्लैग्स के लिए हैं जिन्हें कॉन्फ़िग कवर नहीं करता।
### `sonar remote````sh
sonar remote add [email protected] # name taken from the target
sonar remote add hetzner [email protected] # or given
sonar remote list # status, latency, version, load
sonar remote remove hetzner
sonar list --host hetzner # that host's ports
sonar list --host "*" # every host, with a HOST column
sonar info 3000 --host hetzner
```
एक पंजीकृत होस्ट वही डेमन चलाता है, और इस मशीन पर डेमन उससे एक SSH कनेक्शन रखता है — `ssh <target> sonar daemon stdio` — और जो कुछ भी वह रिपोर्ट करता है उसे उस स्थिति में मल्टीप्लेक्स करता है जिसे हर क्लाइंट पहले से पढ़ता है। कहीं भी कुछ नया सुनने (listen) के लिए नहीं खुलता: रिमोट डेमन का सॉकेट SSH उपयोगकर्ता के लिए निजी रहता है, और क्लाइंट स्वयं कभी SSH नहीं बोलते।
अब हर पंक्ति उस होस्ट को ले जाती है जिससे वह आई है। स्थानीय पंक्तियाँ `localhost` कहती हैं और वही कुंजियाँ रखती हैं जो उनके पास हमेशा थीं, इसलिए आज sonar पढ़ने वाली कोई भी चीज़ नहीं बदलती; रिमोट पंक्तियाँ पंजीकृत नाम कहती हैं और `<host>/<port>:<bind>` के रूप में कुंजीबद्ध होती हैं, जिससे दो मशीनों पर पोर्ट 3000 दो पंक्तियाँ बन सकती हैं। एक सब्सक्राइबर केवल localhost देखता है जब तक कि वह और न माँगे (`state.subscribe {"hosts": ["*"]}`).
लक्ष्य `ssh` पर बिना छेड़े जाता है, इसलिए `~/.ssh/config` एलियास, `ProxyJump` और पहचान (identities) सभी लागू होते हैं; `--ssh-arg`, `--identity` और `--port` वह कवर करते हैं जो कॉन्फ़िग नहीं करता। sonar कोई पासवर्ड और कोई कुंजी संग्रहीत नहीं करता। जो होस्ट चला जाता है, वह अपनी पंक्ति और अपनी स्थिति बनाए रखता है जबकि डेमन पुनः प्रयास करता है, एक सेकंड से तीस तक बैक ऑफ करते हुए, जब तक वह पंजीकृत रहता है।
`--host` अभी भी एक बेयर `user@host` भी लेता है जिसके बारे में sonar को कुछ नहीं पता: यह एजेंटलेस `ssh` + `ss`/`lsof` स्कैन पर वापस गिरता है और `sonar remote install` का संकेत प्रिंट करता है।
#### किसी अन्य मशीन पर कार्य करना
हर राइट भी `--host` लेता है, और वहाँ वही करता है जो यहाँ करता है:```sh
sonar kill 3000 --host hetzner # stop a port on that machine
sonar kill -g api --host hetzner # a whole group of its services
sonar kill-all --filter docker --host hetzner # its containers
sonar up api --host hetzner # start a group from its .sonar.yaml
sonar logs 3000 --host hetzner # tail its output here
sonar rename 3000 storefront --host hetzner # its name, in its database
sonar assign 3000 storefront --host hetzner
```
स्थानीय डेमॉन उस होस्ट के ब्रिज पर कॉल को आगे भेजता है और जो भी दूरस्थ डेमॉन ने उत्तर दिया, उसे वापस सौंप देता है, उसी लिफाफे में जिसमें एक स्थानीय कॉल लौटती है — हर परिणाम पंक्ति बताती है कि वह किस होस्ट पर हुआ, और एक kill के `affected` में वे `<host>/<port>:<bind>` कुंजियाँ होती हैं जिन्हें स्ट्रीम उन पंक्तियों के लिए उपयोग करती है। एक स्ट्रीमिंग कमांड स्ट्रीम करता है: `sonar up --host` हर सेवा को प्रिंट करता है जैसे ही दूर वाला पक्ष उसे शुरू करता है, और Ctrl-C दूरस्थ कार्य को रोक देता है, न कि केवल इस टर्मिनल को।
क्योंकि एक पंक्ति की कुंजी पहले से ही उसके होस्ट का नाम बताती है, एक क्लाइंट उसे सीधे एक सेलेक्टर के रूप में वापस सौंप सकता है — `{"key": "hetzner/3000:127.0.0.1"}` एक सेलेक्टर का पूरा रूप है, होस्ट सहित। एक कॉल एक मशीन पर कार्य करती है; दो का नाम लेना एक त्रुटि है, न कि प्रत्येक पर आधी kill।
दो चीज़ें स्थानीय रहती हैं। `sonar attach` *इस* टर्मिनल को एक प्रक्रिया के सामने रखता है, इसलिए यह `--host` को अस्वीकार करता है और कहता है कि ssh करके वहाँ attach करें। और एक एजेंट सत्र इस डेमॉन द्वारा धारित अवस्था है, इसलिए `sonar kill --session` का कोई दूरस्थ रूप नहीं है। बाकी सब कुछ के लिए यहाँ डेमॉन का चलना आवश्यक है — यह वह जगह है जहाँ दूसरी मशीन से कनेक्शन रहता है — और यह इसके बजाय चुपचाप इस मशीन को स्कैन करने के बजाय ऐसा कहता है।
`sonar up --host` के लिए समूह का नाम आवश्यक है: आपकी कार्यशील निर्देशिका में `.sonar.yaml` इस मशीन पर एक पथ है, और यह दूरस्थ डेमॉन है जो फ़ाइल को पढ़ता है और सेवाओं को शुरू करता है।
### डेमॉन
एक पृष्ठभूमि प्रक्रिया पोर्ट स्कैन करती है, समूहों को हल करती है, स्वास्थ्य की जाँच करती है, डेटाबेस रखती है और परिवर्तनों को उन सभी को स्ट्रीम करती है जो सदस्यता लिए हुए हैं — CLI, डेस्कटॉप ऐप और संपादक।```sh
sonar serve # in the foreground
sonar serve --detach # in the background
sonar daemon status # pid, uptime, subscribers, scans, intervals
sonar daemon path # the socket it listens on
sonar daemon log -n 50 -f # what it is doing
sonar daemon restart
sonar daemon stop
```
मैं आपकी मदद करने के लिए यहाँ हूँ, लेकिन आपने कोई इनपुट सामग्री प्रदान नहीं की है। कृपया वह Markdown सामग्री साझा करें जिसे आप अनुवाद करना चाहते हैं, और मैं आपके निर्देशों के अनुसार उसका अनुवाद करूँगा।```sh
sonar daemon path
sonar daemon status --json
sonar daemon log -n 5
# check
```
| क्या | कहाँ |
|---|---|
| सॉकेट | `$XDG_RUNTIME_DIR/sonar/daemon.sock`, अन्यथा `~/.config/sonar/daemon.sock`; Windows पर `\\.\pipe\sonar` |
| डेटाबेस | `~/.config/sonar/sonar.db` (`SONAR_DB` ओवरराइड करता है) |
| डेमन लॉग | `~/.config/sonar/daemon.log`, 5 MiB पर रोटेट होता है, तीन रखे जाते हैं |
| रन लॉग | `~/.config/sonar/logs/<group>/<service>.log` |
| कॉन्फ़िग | `~/.config/sonar/config.yaml` |
`SONAR_SOCKET` हर जगह सॉकेट पथ को ओवरराइड करता है, डेमन और उसके क्लाइंट दोनों के लिए — दूसरे पृथक इंस्टेंस के लिए उपयोगी। सॉकेट 0700 निर्देशिका में 0600 अनुमतियों के साथ बनाया जाता है, इसलिए केवल आप ही इससे बात कर सकते हैं। एक समय में केवल एक डेमन चलता है; क्रैश के बाद पीछे छूटा सॉकेट अगली शुरुआत पर साफ़ कर दिया जाता है।
डेमन 30 मिनट तक कोई क्लाइंट और कोई सब्सक्राइबर न होने पर अपने आप रुक जाता है। इसे बदलने के लिए कॉन्फ़िग फ़ाइल में `daemon.idle_timeout` सेट करें, या इसे चालू रखने के लिए `0` सेट करें।
जब कुछ बदल रहा होता है तो पोर्ट हर 2 सेकंड में स्कैन किए जाते हैं; जब कुछ नहीं बदल रहा होता है, तो स्कैनर सब्सक्राइबर जुड़े होने पर 5 सेकंड और बिना सब्सक्राइबर के 10 सेकंड तक अपनी गति धीमी कर लेता है। `daemon.scan_interval` उस आधार को स्थानांतरित करता है — न्यूनतम 1s — और दोनों सीमाएँ इसके साथ बढ़ती हैं, इसलिए इसे `5s` तक बढ़ाने से पुरानी सीमाओं पर वक्र को रोकने के बजाय 12.5s और 25s तक पीछे हट जाता है। `daemon.stats_interval` वह अलग गति है जिस पर cpu, मेमोरी और होस्ट लोड स्ट्रिप तब रीफ़्रेश होती है जब कुछ सब्सक्राइब होता है। दोनों डेमन शुरू होने पर पढ़े जाते हैं: फ़ाइल संपादित करें, फिर `sonar daemon restart` चलाएँ। `sonar daemon status` वर्तमान में स्कैनर पर लागू अनुकूली अंतराल के साथ प्रभावी मान (`scan base`, `stats tick`) प्रिंट करता है।
एक सब्सक्राइबर जो `include: ["health"]` माँगता है, वह डेमन को धीमी गति पर **हर सुनने वाले पोर्ट** की जाँच करने के लिए प्रेरित करता है, न कि केवल उन सेवाओं की जो `health:` पथ घोषित करती हैं — उन्हें हर टिक पर पोल किया जाता है और हर सब्सक्राइबर तक पहुँचता है चाहे स्वास्थ्य माँगा गया हो या नहीं।
### कॉन्फ़िगरेशन
`~/.config/sonar/config.yaml` वैकल्पिक है; फ़्लैग हमेशा जीतते हैं।```sh
sonar config path
sonar config init
# check
```
मैं देख रहा हूँ कि आपने इनपुट प्रदान नहीं किया है। कृपया वह Markdown सामग्री भेजें जिसे आप अनुवाद करना चाहते हैं, और मैं इसे हिंदी में अनुवाद कर दूँगा।```sh
sonar config edit # open it in $EDITOR
```
यहाँ आपके लिए अनुवाद है:
```markdown
## स्थापना
### आवश्यकताएँ
- Python 3.8+
- pip
### चरण
1. रिपॉजिटरी को क्लोन करें:
```bash
git clone https://github.com/example/repo.git
cd repo
```
2. निर्भरताएँ स्थापित करें:
```bash
pip install -r requirements.txt
```
3. टूल चलाएँ:
```bash
python main.py --help
```
## उपयोग
### बुनियादी उदाहरण
स्कैन शुरू करने के लिए:
```bash
python main.py --target example.com
```
### उन्नत विकल्प
| विकल्प | विवरण | डिफ़ॉल्ट |
|--------|--------|----------|
| `--target` | लक्ष्य होस्ट या URL | कोई नहीं |
| `--port` | स्कैन करने के लिए पोर्ट | `80` |
| `--verbose` | विस्तृत आउटपुट सक्षम करें | `false` |
### उदाहरण आउटपुट
```bash
$ python main.py --target example.com --verbose
[INFO] स्कैन शुरू हो रहा है example.com...
[+] पोर्ट 80 खुला पाया गया
[+] पोर्ट 443 खुला पाया गया
[+] स्कैन पूर्ण हुआ
```
## योगदान
योगदान का स्वागत है! कृपया निम्नलिखित चरणों का पालन करें:
1. रिपॉजिटरी को फोर्क करें
2. अपनी फीचर शाखा बनाएँ (`git checkout -b feature/amazing-feature`)
3. अपने परिवर्तनों को कमिट करें (`git commit -m 'Add some amazing feature'`)
4. शाखा को पुश करें (`git push origin feature/amazing-feature`)
5. एक पुल रिक्वेस्ट खोलें
## लाइसेंस
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए [LICENSE](https://github.com/raskrebs/sonar/blob/main/LICENSE) फ़ाइल देखें।
## अस्वीकरण
यह टूल केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए है। इस टूल का उपयोग करने से पहले सुनिश्चित करें कि आपके पास उचित अनुमति है। लेखक किसी भी दुरुपयोग के लिए ज़िम्मेदार नहीं है।
``````yaml
list:
columns: [port, process, group, container, image, containerport, url]
sort: port # port | pid | name | type
filter: "" # docker | user | system | "" (all)
all: false # include desktop apps by default
daemon:
idle_timeout: 30m # 0 keeps the daemon running
log_level: info # debug | info | warn | error
scan_interval: 2s # base port-scan cadence, minimum 1s
stats_interval: 1s # cpu/memory refresh while subscribed, minimum 250ms
color: true
services: # label custom/unknown ports
9000: php-fpm
5050: my-dashboard
```
अमान्य मानों को चेतावनी के साथ अनदेखा किया जाता है और sonar डिफ़ॉल्ट मानों के साथ आगे बढ़ता है।
पर्यावरण ओवरराइड जिनके पास कोई कॉन्फ़िग कुंजी नहीं है: `SONAR_DB`, `SONAR_SOCKET`,
`SONAR_NO_HINTS=1` नीचे दिए गए माइग्रेशन नोटिस को शांत करने के लिए, और
`SONAR_NO_AUTOSTART=1` किसी भी sonar क्लाइंट को उस डेमॉन को शुरू करने से रोकने के लिए जो उसे
नहीं मिला — CI में उपयोगी, जहाँ एक बिल्ड को कभी भी पीछे कोई प्रोसेस नहीं छोड़नी चाहिए।
sonar का अपना टेस्ट सूट हर टेस्ट बाइनरी के लिए `SONAR_NO_AUTOSTART=1` सेट करता है और,
रन के बाद, एक ऐसे डेमॉन की तलाश करता है जो उससे अधिक जीवित रहा। वह गेट केवल उस
`serve` का दावा करता है जो रन के निजी अस्थायी रूट से शुरू हुआ था, इसलिए एक मशीन पर
साथ-साथ चलने वाले दो सूट एक-दूसरे के डेमॉन को अकेला छोड़ देते हैं;
`SONAR_TESTENV_GATE_ALL=1` इसे वापस अस्थायी निर्देशिका के अंतर्गत हर `sonar serve` तक
विस्तृत कर देता है, जो वही है जो एक CI रनर चाहता है जो पूरी मशीन का मालिक है।
### एजेंट: MCP, स्किल्स और हुक```sh
sonar install mcp --claude-code # merge into <git root>/.mcp.json
sonar install mcp --cursor --scope user # ~/.cursor/mcp.json
sonar install mcp --codex # codex mcp add
sonar install skills --claude-code # the bundled sonar skill
sonar install hooks --claude-code # optional, see below
```
यहाँ आपके लिए अनुवाद है:
```markdown
यह टूल एक सरल, शक्तिशाली और उपयोग में आसान इंटरफ़ेस प्रदान करता है जो सुरक्षा पेशेवरों को नेटवर्क ट्रैफ़िक का विश्लेषण करने और संभावित खतरों की पहचान करने में सक्षम बनाता है। यह वास्तविक समय में पैकेट कैप्चर करता है और विभिन्न प्रोटोकॉल का समर्थन करता है, जिससे यह विभिन्न परिदृश्यों में उपयोगी होता है।
## मुख्य विशेषताएँ
- **वास्तविक समय विश्लेषण**: नेटवर्क ट्रैफ़िक की तुरंत निगरानी करें।
- **बहु-प्रोटोकॉल समर्थन**: TCP, UDP, HTTP, DNS और अधिक।
- **अनुकूलन योग्य फ़िल्टर**: विशिष्ट ट्रैफ़िक को अलग करने के लिए नियम बनाएँ।
- **विस्तृत रिपोर्ट**: विश्लेषण के लिए HTML या CSV प्रारूप में रिपोर्ट निर्यात करें।
## स्थापना
```bash
git clone https://github.com/example/tool.git
cd tool
pip install -r requirements.txt
```
## उपयोग
```bash
python tool.py -i eth0 -f "port 80"
```
यह कमांड `eth0` इंटरफ़ेस पर पोर्ट 80 से संबंधित ट्रैफ़िक को कैप्चर करेगा।
## लाइसेंस
यह परियोजना MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। विवरण के लिए [LICENSE](https://github.com/raskrebs/sonar/blob/main/LICENSE) फ़ाइल देखें।
``````sh
sonar install mcp --generic --print
sonar install skills --print
sonar install hooks --print
# check
```
`install mcp` `{"command": "sonar", "args": ["mcp"]}` को पंजीकृत करता है और फ़ाइल में बाकी सभी सर्वरों और कुंजियों को अकेला छोड़ देता है; इसे दो बार चलाने से कुछ नहीं बदलता, और `--uninstall` ठीक वही हटाता है जो sonar ने लिखा था।
`sonar mcp` वह सर्वर है: बाइनरी में निर्मित एक stdio MCP सर्वर जो एजेंट को मशीन का डेमन-दृश्य देता है। यह `list_ports` और `inspect_port` के साथ पढ़ता है, `wait_for_port` के साथ प्रतीक्षा करता है, `next_free_port` और `claim_port` के साथ पोर्ट चुनता और आरक्षित करता है, और एजेंट के बाकी सवालों का जवाब `tail_logs`, `health_check`, `dependency_graph`, `port_history` और `list_sessions` के साथ देता है; क्रियाएँ और संसाधन आगे आते हैं। यह एक डेमन शुरू करता है यदि कोई नहीं चल रहा है और अपने आप फिर से जुड़ जाता है यदि कोई बंद हो जाता है; इसके लॉग stderr पर जाते हैं, क्योंकि stdout प्रोटोकॉल ले जाता है।
`install skills` बंडल किया गया कौशल लिखता है, जो एजेंट को `sonar start --` के साथ सर्वर शुरू करना, सोने के बजाय `sonar wait` करना, और जो शुरू किया उसे साफ करना सिखाता है। `install hooks` दो Claude Code हुक जोड़ता है: एक `SONAR_SESSION` निर्यात करता है ताकि एक सत्र जो कुछ भी शुरू करे वह उसी से जुड़ा हो, दूसरा `sonar start --` सुझाता है जब एक नंगा dev सर्वर चलने वाला होता है (यह सलाह देता है, कभी ब्लॉक नहीं करता)। दोनों `--scope project|user`, `--print` और `--uninstall` लेते हैं।
### `sonar doctor`
एक कमांड जो sonar पर निर्भर हर चीज़ की जाँच करता है और बताता है कि जो भी गलत है उसके बारे में क्या करना है। यह वही है जो डेस्कटॉप ऐप ऑनबोर्डिंग के दौरान चलाता है, और जब कुछ ठीक न हो तो खुद चलाने के लिए है।```sh
sonar doctor # the table, and a one-line verdict
sonar doctor --json # {ok, checks, version, daemon_version}
sonar doctor --only db_ok,tray # just these
sonar doctor --only mcp_registered # a whole family
sonar doctor --project ~/code/api # a project other than the working directory
sonar doctor --fix --yes # apply the safe repairs, then check again
```
मैं देख रहा हूँ कि आपने इनपुट प्रदान नहीं किया है। कृपया वह Markdown सामग्री भेजें जिसे आप हिंदी में अनुवाद करना चाहते हैं, और मैं इसे आपके निर्देशों के अनुसार अनुवाद करूँगा।```sh
# check
sonar doctor --only daemon_reachable,daemon_protocol,socket_permissions,db_ok
sonar doctor --json --only config_parses | grep -q '"status": "ok"'
sonar doctor --only mcp_registered --project . > /dev/null
```
हर चेक `ok`, `warn`, `fail` या `skip` रिपोर्ट करता है। `skip` का मतलब है कि देखने के लिए कुछ था ही नहीं — Cursor इंस्टॉल नहीं है, मशीन पर docker नहीं है, सॉकेट Windows पर एक named pipe है — और यह कभी आपके खिलाफ नहीं गिना जाता। Exit code 0 है जब तक कि कुछ **failed** न हो, इसलिए `sonar doctor` एक setup script में शामिल होने लायक है।
| check | इसका क्या मतलब है |
| --- | --- |
| `cli_on_path` | जो binary आपने चलाई वही है जिसे PATH resolve करता है; अगर नहीं, तो shadowing install का नाम बताता है |
| `cli_version_current` | नवीनतम release से तुलना की गई, या `skip` जब GitHub 2s में पहुंच योग्य न हो |
| `config_parses` | आपका `config.yaml` लोड होता है; syntax error को line, column और caret के साथ रिपोर्ट किया जाता है |
| `config_dir_writable` | daemon अपना log, lock और database लिख सकता है |
| `daemon_reachable` | सॉकेट पर कुछ listening है |
| `daemon_version_matches` | चल रहा daemon उस CLI का version है जिसे आप उपयोग कर रहे हैं |
| `daemon_protocol` | daemon का protocol major इस build के साथ मेल खाता है |
| `socket_permissions` | सॉकेट आपका है और 0600 है, एक 0700 directory में (`skip` Windows पर) |
| `db_ok` | database खुलता है, नवीनतम schema पर है, और यह कितना बड़ा है |
| `mcp_registered.{claude_code,cursor,codex}` | sonar का MCP server उस client के config में है |
| `skills_installed` | bundled skill इंस्टॉल है और current है |
| `hooks_installed` | optional Claude Code hooks इंस्टॉल हैं |
| `project_config` | इस project में एक `.sonar.yaml` है जो लोड होता है |
| `docker` | docker CLI मौजूद है और उसका daemon जवाब देता है |
| `desktop_installed` | desktop app इंस्टॉल है, और कौन सा version (`skip` Windows पर) |
| `tray` | पुराना macOS `sonar-tray` binary अभी भी मौजूद है |
`--fix` केवल उन repairs को लागू करता है जो बिना निगरानी के करना सुरक्षित है, और पहले पूछता है जब तक कि आप `--yes` पास न करें: यह एक unparseable `config.yaml` को `config.yaml.broken-<timestamp>` पर ले जाता है और एक नया template लिखता है (कुछ भी कभी delete नहीं होता), एक daemon को restart करता है जो चल नहीं रहा है, और वह `sonar install mcp|skills|hooks` command चलाता है जिसका नाम check बताता है — working directory से, जिस तरह आप इसे टाइप करेंगे, इसलिए `--fix` को उस project के अंदर चलाएं जिसे आप repair कर रहे हैं, न कि `--project` को उस पर point करके। फिर यह दोबारा check करता है। जो कुछ भी यह छूएगा नहीं — PATH पर एक shadowing binary, एक skill जो sonar ने नहीं लिखी — वह आपके लिए `fix` column में सटीक command के साथ छोड़ दिया जाता है।
Desktop app daemon के `daemon.doctor` method के जरिए shelling out करने के बजाय वही checks चलाता है। Daemon वह सब कुछ चलाता है जो वह अपनी प्रक्रिया से कर सकता है; वे तीन checks जो उस CLI binary के बारे में हैं जिसे आपने invoke किया (`cli_on_path`, `cli_version_current`, `daemon_version_matches`) `skip` के रूप में लौटते हैं और detail में ऐसा बताया जाता है।
### Desktop app
Sonar app एक window में और menu bar या system tray में वही तस्वीर है: किनारे पर groups, grid में live stats और health के साथ ports, logs, और ऊपर की हर चीज़ के लिए buttons। यह उसी daemon से बात करता है, इसलिए CLI और app कभी असहमत नहीं होते। `sonar install desktop` इसे इंस्टॉल करता है और `sonar tray` इसे launch करता है।
जब तक app ship नहीं होती, macOS release tarballs अभी भी पुराने `sonar-tray` menu bar binary को ले जाते हैं, और `sonar tray` उस पर fall back करता है जब app इंस्टॉल न हो।
### `sonar install desktop`
App beta में है और अभी तक Apple द्वारा signed नहीं है, इसलिए CLI इसे इंस्टॉल करता है:```sh
brew install raskrebs/sonar/sonar && sonar install desktop
```
यह पूरा टेस्टर सेटअप है। Sonar प्रकाशित बिल्ड्स का एक मैनिफेस्ट लाता है,
आपकी मशीन के लिए उपयुक्त बिल्ड चुनता है, उसकी sha256 और उसका आकार जाँचता है, उसे इंस्टॉल करता है,
और उसे खोलता है।
**इसीलिए CLI डाउनलोड करता है।** macOS किसी भी चीज़ पर quarantine विशेषता जोड़ता है जिसे *ब्राउज़र* सेव करता है, और Gatekeeper किसी quarantine किए गए ऐप को खोलने से मना कर देता है जिसे Apple ने notarise नहीं किया है। यह फ़ाइल जो CLI डाउनलोड करता है उसे पहले स्थान पर यह विशेषता कभी नहीं मिलती, इसलिए बीटा बिना किसी प्रॉम्प्ट और बिना राइट-क्लिक-ओपन की प्रक्रिया के खुलता है। Sonar न तो quarantine विशेषताएँ सेट करता है और न ही हटाता है — हटाने के लिए कुछ भी नहीं है।```sh
sonar install desktop # install and launch
sonar install desktop --no-launch # install only
sonar install desktop --update # update; does nothing if current
sonar install desktop --check # exit 1 when an update is available
sonar install desktop --version 0.1.0-beta.1
sonar install desktop --force # ask a running Sonar to quit first
sonar install desktop --json # for scripts
```
कमांड को यह बताने के लिए किसी नेटवर्क की आवश्यकता नहीं है कि यह क्या करता है:```sh
sonar install desktop --help | grep -- '--no-launch'
# check
```
जहाँ यह जाता है:
| | |
| --- | --- |
| macOS | `/Applications/Sonar.app`, या `~/Applications/Sonar.app` जब पहला लिखने योग्य न हो (sonar कभी `sudo` का उपयोग नहीं करता) |
| Linux | `~/.local/opt/sonar-desktop/Sonar.AppImage`, साथ ही `~/.local/share/applications` में एक मेनू प्रविष्टि और `~/.local/bin` में एक `sonar-desktop` लिंक |
| Windows | अभी नहीं — कमांड ऐसा कहता है और कोड 1 के साथ बाहर निकलता है |
`--dir` दोनों पर निर्देशिका को ओवरराइड करता है। Linux पर, `--deb` AppImage के बजाय `apt`/`dpkg` के माध्यम से `.deb` स्थापित करता है, जहाँ रिलीज़ एक प्रकाशित करती है।
स्थापना परमाणु है: नया ऐप पुराने के बगल में अनपैक किया जाता है और एक नाम बदलने के साथ स्वैप किया जाता है, इसलिए एक असफल डाउनलोड आपको कभी भी काम करने वाले ऐप के बिना नहीं छोड़ता। यदि ऐप खुला है, तो sonar उसके नीचे एक बंडल को बदलने के बजाय मना कर देता है; `--force` इसे बाहर निकलने के लिए कहता है और दस सेकंड तक प्रतीक्षा करता है।
`sonar install desktop` `~/.config/sonar/config.yaml` में `desktop.installed_version` और `desktop.installed_path` रिकॉर्ड करता है, जो कि `sonar tray` को `--dir` के साथ स्थापित एक ऐप खोजने का तरीका है और `sonar doctor` की `desktop_installed` जाँच को संस्करण जानने का तरीका है। बिल्ड कहाँ से आते हैं वह `desktop.download_base` है, जिसे `SONAR_DESKTOP_BASE` द्वारा और फिर `--base` द्वारा ओवरराइड किया जाता है — उन्हें अपने स्वयं के बिल्ड की ओर इंगित करें ताकि एक का परीक्षण किया जा सके।
### `sonar relay`
रिले sonar का सर्वर पक्ष है: एक छोटी HTTP सेवा, जिसे हमारे द्वारा होस्ट किए गए ऐप के लिए चलाया जाता है और `ghcr.io/raskrebs/sonar-relay` के रूप में प्रकाशित किया जाता है ताकि आप अपना स्वयं का चला सकें। इसका स्थानीय डेमॉन से कोई लेना-देना नहीं है — `sonar serve` आपके पोर्ट देखता है, `sonar relay serve` एक फ्लीट के लिए HTTP का उत्तर देता है — और यह केवल इसलिए उसी बाइनरी में भेजा जाता है ताकि तैनात करने के लिए एक ही आर्टिफैक्ट हो।
आज यह गुमनाम उत्पाद टेलीमेट्री एकत्र करता है: प्रति स्थापना नामित घटनाओं का एक बैच, कोई पथ नहीं, कोई होस्टनाम नहीं, कोई URL नहीं, दरवाजे पर मना कर दिया जाता है यदि कोई मान भी एक जैसा दिखता है। यह वही सेवा है जो बाद में उजागर टनल को समाप्त करेगी और साइन-इन को धारण करेगी।```sh
sonar relay serve --db ./relay.db --project-keys "$(openssl rand -hex 24)"
```
`docs/RELAY.md` में रूट्स, सटीक वैलिडेशन नियम, स्टोरेज स्कीमा और Docker वाले किसी भी बॉक्स पर Caddy के पीछे एक-कमांड डिप्लॉय शामिल है।
## पुराने कमांड्स से माइग्रेशन
प्री-ग्रुप कमांड्स अब भी काम करते हैं और stderr पर एक लाइन प्रिंट करते हैं जो बताती है कि उनकी जगह क्या ले लिया गया है। वे अब से एक माइनर रिलीज़ बाद हट जाएँगे। `SONAR_NO_HINTS=1` नोटिस को शांत करता है, और `--json` आउटपुट उन्हें कभी नहीं दिखाता।
| पुराना | नया |
|---|---|
| `sonar run --tag X -- cmd` | `sonar start --group X -- cmd` |
| `sonar runs` | `sonar start --list` |
| `sonar list --tag X` | `sonar list --group X` |
| `sonar kill-all --filter docker` | `sonar kill --all --filter docker` |
| `sonar down X` | `sonar kill -g X` |
| `sonar profile create X` | `sonar init` |
| `sonar profile show X` | `sonar groups X` |
| `sonar up X` (एक प्रोफ़ाइल चेक करता था) | `sonar up X` अब ग्रुप को *शुरू* करता है |
| `sonar tray` (Swift मेन्यू बार ऐप) | `sonar tray` डेस्कटॉप ऐप लॉन्च करता है |
प्रोफ़ाइल्स पोर्ट्स का प्रति-मशीन स्नैपशॉट थीं; `.sonar.yaml` प्रोजेक्ट के साथ कमिट किया जाता है। एक को कन्वर्ट करें और उसे रखने से पहले पढ़ें — आपके लिए कुछ भी नहीं लिखा जाता:```sh
sonar profile list
# check
```
यहाँ आपका अनुवाद है:
- **`--no-verify`**: सभी सत्यापन चरणों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-update`**: सत्यापन के बाद अपडेट को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-cleanup`**: सत्यापन के बाद सफाई को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-report`**: सत्यापन के बाद रिपोर्टिंग को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-notify`**: सत्यापन के बाद अधिसूचना को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-log`**: सत्यापन के बाद लॉगिंग को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-color`**: रंगीन आउटपुट को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-interactive`**: इंटरैक्टिव मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-progress`**: प्रगति संकेतक को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-spinner`**: स्पिनर को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-banner`**: बैनर को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-header`**: हेडर को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-footer`**: फुटर को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-border`**: बॉर्डर को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-padding`**: पैडिंग को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-wrap`**: टेक्स्ट रैपिंग को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-emoji`**: इमोजी को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-unicode`**: यूनिकोड वर्णों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-ascii`**: ASCII वर्णों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-ansi`**: ANSI एस्केप कोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-tty`**: TTY का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-pipe`**: पाइप का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-redirect`**: रीडायरेक्ट का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-file`**: फ़ाइल का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-dir`**: निर्देशिका का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-link`**: लिंक का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-symlink`**: सिमलिंक का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-hardlink`**: हार्डलिंक का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-mount`**: माउंट का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-device`**: डिवाइस का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-socket`**: सॉकेट का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-fifo`**: FIFO का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-block`**: ब्लॉक डिवाइस का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-char`**: कैरेक्टर डिवाइस का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-unknown`**: अज्ञात फ़ाइल प्रकार का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-other`**: अन्य फ़ाइल प्रकार का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-all`**: सभी फ़ाइल प्रकार का पता लगाना अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-everything`**: सभी विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-nothing`**: कुछ भी अक्षम नहीं करता है (डिफ़ॉल्ट: `false`)।
- **`--no-default`**: डिफ़ॉल्ट विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-custom`**: कस्टम विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-user`**: उपयोगकर्ता विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-system`**: सिस्टम विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-global`**: वैश्विक विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-local`**: स्थानीय विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-project`**: प्रोजेक्ट विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-workspace`**: वर्कस्पेस विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-folder`**: फ़ोल्डर विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-path`**: पथ विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-file-path`**: फ़ाइल पथ विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-dir-path`**: निर्देशिका पथ विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-url`**: URL विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-uri`**: URI विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-ip`**: IP विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-host`**: होस्ट विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-port`**: पोर्ट विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-proto`**: प्रोटोकॉल विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-scheme`**: स्कीम विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-domain`**: डोमेन विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-subdomain`**: सबडोमेन विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-tld`**: TLD विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-email`**: ईमेल विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-user-agent`**: उपयोगकर्ता-एजेंट विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-cookie`**: कुकी विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-session`**: सत्र विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-token`**: टोकन विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-key`**: कुंजी विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-secret`**: गुप्त विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-password`**: पासवर्ड विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-credential`**: क्रेडेंशियल विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-auth`**: प्रमाणीकरण विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-ssl`**: SSL विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-tls`**: TLS विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-cert`**: प्रमाणपत्र विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-ca`**: CA विकल्पों को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-cert`**: प्रमाणपत्र सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-host`**: होस्ट सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-peer`**: पीयर सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-ssl`**: SSL सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-tls`**: TLS सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-certificate`**: प्रमाणपत्र सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-hostname`**: होस्टनाम सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-fingerprint`**: फिंगरप्रिंट सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-signature`**: हस्ताक्षर सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-checksum`**: चेकसम सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-hash`**: हैश सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-digest`**: डाइजेस्ट सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-integrity`**: अखंडता सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-origin`**: उत्पत्ति सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-source`**: स्रोत सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-author`**: लेखक सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-maintainer`**: अनुरक्षक सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-license`**: लाइसेंस सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-copyright`**: कॉपीराइट सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-version`**: संस्करण सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-release`**: रिलीज़ सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-build`**: बिल्ड सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-compile`**: संकलन सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-test`**: परीक्षण सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-run`**: रन सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-exec`**: निष्पादन सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-shell`**: शेल सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-command`**: कमांड सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-args`**: तर्क सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-options`**: विकल्प सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-flags`**: फ़्लैग सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-parameters`**: पैरामीटर सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-arguments`**: तर्क सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-input`**: इनपुट सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-output`**: आउटपुट सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-error`**: त्रुटि सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-warning`**: चेतावनी सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-info`**: सूचना सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-debug`**: डीबग सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-trace`**: ट्रेस सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verbose`**: वर्बोज़ सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-quiet`**: शांत सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-silent`**: मौन सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-loud`**: तेज़ सत्यापन को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-debug`**: डीबग मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-trace`**: ट्रेस मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-profile`**: प्रोफ़ाइल मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-benchmark`**: बेंचमार्क मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-performance`**: प्रदर्शन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-optimize`**: अनुकूलन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-compress`**: संपीड़न मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-decompress`**: विघटन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-encrypt`**: एन्क्रिप्शन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-decrypt`**: डिक्रिप्शन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-sign`**: हस्ताक्षर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-verify-sign`**: हस्ताक्षर सत्यापन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-encode`**: एन्कोडिंग मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-decode`**: डिकोडिंग मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-parse`**: पार्सिंग मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-serialize`**: सीरियलाइज़ेशन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-deserialize`**: डिसीरियलाइज़ेशन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-format`**: फ़ॉर्मेटिंग मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-validate`**: सत्यापन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-normalize`**: सामान्यीकरण मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-sanitize`**: स्वच्छता मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-filter`**: फ़िल्टर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-sort`**: सॉर्ट मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-search`**: खोज मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-replace`**: प्रतिस्थापन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-remove`**: निष्कासन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-delete`**: विलोपन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-add`**: जोड़ मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-insert`**: सम्मिलन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-update`**: अद्यतन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-merge`**: विलय मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-split`**: विभाजन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-join`**: जोड़ मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-concat`**: संयोजन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-append`**: परिशिष्ट मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-prepend`**: प्रस्तावना मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-patch`**: पैच मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-diff`**: डिफ़ मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-compare`**: तुलना मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-match`**: मिलान मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-convert`**: रूपांतरण मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-transform`**: परिवर्तन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-process`**: प्रक्रिया मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-analyze`**: विश्लेषण मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-scan`**: स्कैन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-detect`**: पता लगाने के मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-identify`**: पहचान मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-classify`**: वर्गीकरण मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-categorize`**: वर्गीकरण मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-group`**: समूह मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-cluster`**: क्लस्टर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-segment`**: खंड मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-tokenize`**: टोकनाइज़ेशन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-lex`**: लेक्स मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-parse`**: पार्स मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-ast`**: AST मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-ir`**: IR मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-codegen`**: कोडजन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-codegen-opt`**: कोडजन अनुकूलन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-linker`**: लिंकर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-loader`**: लोडर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-relocator`**: रिलोकेटर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-resolver`**: रिज़ॉल्वर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-symbol`**: प्रतीक मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-symbol-table`**: प्रतीक तालिका मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-string`**: स्ट्रिंग मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-string-table`**: स्ट्रिंग तालिका मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-section`**: अनुभाग मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-segment`**: खंड मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-header`**: हेडर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-footer`**: फुटर मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-body`**: बॉडी मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-content`**: सामग्री मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-metadata`**: मेटाडेटा मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-attribute`**: विशेषता मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-property`**: गुण मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-field`**: फ़ील्ड मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-record`**: रिकॉर्ड मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-entry`**: प्रविष्टि मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-item`**: आइटम मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-element`**: तत्व मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-node`**: नोड मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-edge`**: किनारा मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-graph`**: ग्राफ़ मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-tree`**: ट्री मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-list`**: सूची मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-array`**: सरणी मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-map`**: मानचित्र मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-set`**: सेट मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-queue`**: कतार मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-stack`**: स्टैक मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-heap`**: हीप मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-cache`**: कैश मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-buffer`**: बफ़र मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-stream`**: स्ट्रीम मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-pipe`**: पाइप मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-socket`**: सॉकेट मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-connection`**: कनेक्शन मोड को अक्षम करता है (डिफ़ॉल्ट: `false`)।
- **`--no-session`**: सत्र मोड```sh
sonar profile export my-app > .sonar.yaml
```
एक प्रोफ़ाइल कभी रिकॉर्ड नहीं करती कि कोई सेवा कैसे शुरू होती है, इसलिए प्रस्ताव में पोर्ट, नाम और हेल्थ पाथ होते हैं, और आप `cmd` भरते हैं।
## समस्या निवारण
**डेमन में कुछ गड़बड़ है।** `sonar daemon log -f` चलाएँ जब आप इसे दोबारा उत्पन्न करें, और `sonar daemon status` से pid, अपटाइम और स्कैन गिनती देखें। इसे `sonar daemon stop` से रोकें; इसके बिना भी हर रीड कमांड काम करता रहता है।
**"daemon unavailable, using direct scan"।** सॉकेट पर कुछ भी सुन नहीं रहा है। यह सामान्य है — रीड डेमन शुरू नहीं करते। यदि आप चाहते हैं तो `sonar serve -d` चलाएँ।
**क्रैश से बचा हुआ सॉकेट।** `sonar daemon path` इसे दिखाता है; डेमन शुरू करने पर पुराना सॉकेट अपने आप हट जाता है। यदि पहला डेमन चला गया हो और दूसरा डेमन शुरू होने से मना करे, तो `sonar daemon restart` लॉक साफ़ कर देता है।
**सूची से पोर्ट गायब हैं।** किसी अन्य उपयोगकर्ता के स्वामित्व वाली प्रक्रियाएँ विशेषाधिकारों के बिना अदृश्य होती हैं; sonar इसे तालिका के नीचे बताता है। उन्हें देखने के लिए `sudo sonar list` के साथ दोबारा चलाएँ। Linux पर, `ss` इंस्टॉल होना चाहिए (`iproute2`); Windows पर, `netstat` उपयोग होता है।
**किल का कोई असर नहीं हुआ।** Docker कंटेनर Docker डेमन के माध्यम से रोके जाते हैं: `docker ps` जाँचें। SIGTERM को अनदेखा करने वाली प्रक्रिया के लिए `-f` चाहिए, और किसी और चीज़ (systemd, Compose `restart: always`) द्वारा पर्यवेक्षित प्रक्रिया डिज़ाइन के अनुसार वापस आ जाती है — पर्यवेक्षक को रोकें।
**कुछ भी काम नहीं कर रहा और आपको कारण नहीं पता।** `sonar doctor` एक साथ बाइनरी, कॉन्फ़िग, डेमन, डेटाबेस और हर इंटीग्रेशन की जाँच करता है, और जो भी समस्या पाता है उसे ठीक करने वाला कमांड प्रिंट करता है।
**बग रिपोर्ट करना।** इन्हें शामिल करें, साथ ही `sonar daemon log` की अंतिम पंक्तियाँ:```sh
sonar version
sonar daemon status
sonar doctor --json
# check
```
---
[Read more](https://github.com/raskrebs/sonar)