VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

Translate Like a Pro | 10410 — crictl CLI Localization: CRI Runtime Endpoints, Pods, Containers, Logs and Unicode QA

crictl CLI localization is the careful translation of container-runtime troubleshooting instructions for people who operate Kubernetes nodes in different languages. If you need to translate crictl pods, crictl ps, crictl logs, runtime endpoints, image inspection or error messages, the central rule is simple: explain the operation naturally, but preserve the executable command, object identifiers and evidence exactly. crictl communicates with a Container Runtime Interface (CRI) service, not directly with the Kubernetes API used by kubectl.

This practical crictl translation guide serves international platform engineers, technical translators, documentation writers, support teams and instructors who must make node-level diagnostics understandable without causing unsafe actions. A Kubernetes pod name, sandbox ID, container ID, namespace, runtime socket and registry reference may all appear in the same support note, yet they play different roles. Readers should be able to follow the translated explanation and still reach the identical runtime object on the identical host.

We begin with the safest observation commands, progress through pod and container evidence, examine failures and state changes, and finish with multilingual quality checks. The examples use invented IDs and non-production wording. Always inspect the installed crictl release, CRI-compatible runtime, host operating system, permissions and endpoint configuration before applying a command; not every example or optional feature behaves identically on every release.

  • Main problem: translate CRI node diagnostics without changing executable syntax or object identity.
  • Audience: international operations teams, translators, support desks and students.
  • Safe route: establish endpoint and version; inspect sandboxes; inspect containers and logs; escalate only with evidence.
  • Do not translate: command names, flags, IDs, registry references, JSON/YAML keys or timestamps inside original records.
  • Evidence standard: identify host, runtime, selected ID, observation time and command scope.
  • Publication standard: readable local language, protected code, redacted secrets, Unicode and accessibility QA.

The runtime model and first checks

Know which layer crictl observes

A Kubernetes workload has several layers: desired state in the control plane, a pod sandbox at the CRI boundary, and processes managed by the underlying runtime. crictl is a node troubleshooting client. When a node is unhealthy, it may reveal runtime state unavailable from a disconnected control plane, but it does not replace a deployment controller or provide a cluster-wide view.

Translate “node”, “pod sandbox”, “container” and “workload” consistently, without treating them as interchangeable names for one thing. The phrase “list pods” may refer to local CRI sandboxes rather than all Kubernetes pods in a namespace. Explain the local scope early, particularly when source documentation omits it.

Give a reviewer two sentences: “Check the pods visible through this node’s CRI runtime” and “Check every pod in the cluster.” Ask which one crictl can support. Record the runtime host, endpoint and observation time beside the translated output so the reader knows why a pod might be absent.

Distinguish crictl from kubectl and nerdctl

kubectl talks to Kubernetes API resources, whereas crictl uses CRI calls. nerdctl offers a broader Docker-like interface to containerd, often exposing namespaces and general container operations. The tools can observe related workloads, but their commands, object models and privileges are not synonymous. A runtime operator may use more than one of them during an incident.

Avoid translating every “pod” into a Kubernetes API object and avoid describing `crictl ps` as equivalent to `kubectl get pods`. Preserve exact tool names in code. Add an explanatory comparison only when it helps: the same workload may have a Kubernetes name, a sandbox ID and one or more container IDs.

Prepare a three-column note: operator question, correct tool, and scope of evidence. Have a newcomer choose the right client for “is the node’s CRI responding?” versus “what did the deployment controller desire?” If they choose incorrectly, the translation needs a clearer subject and boundary.

Treat runtime endpoints as addresses, not words

crictl can be given a runtime endpoint using a flag, environment variable or configuration file. On Linux, a common example is `unix:///run/containerd/containerd.sock`; another installation may use a CRI-O socket. The endpoint chooses the server to which commands are sent, so a substituted path can silently switch the investigation to a different service.

A socket URI is executable configuration, not a natural-language phrase. Preserve the `unix://` scheme, slashes and filename exactly; translate only labels like “runtime endpoint” or “connection timeout.” A translated procedure should say whether a displayed path is an illustrative example or the value confirmed on the reader’s host.

Ask a tester to compare the chosen endpoint with the live host configuration before running inspection. Make a deliberately mismatched path in a disposable lab and observe the connection error. The translation must guide the tester to confirm the path, not encourage copying a path from an unrelated operating system.

Read the configuration without changing it

A documentation example may show `/etc/crictl.yaml` with `runtime-endpoint`, `image-endpoint`, `timeout` and `debug`. Those are configuration keys. Their values can be interpreted only in relation to the installed tool and runtime. The safest first task is to locate the effective configuration and record the endpoint rather than assume defaults.

Translate the prose surrounding a YAML block, not the YAML keys. Explain a timeout as a connection-wait setting rather than proof the runtime is broken. When images use a separate endpoint, distinguish that from the runtime endpoint, and avoid flattening both settings into one vague “server address.”

Have a reviewer read a sample configuration and identify which lines are keys, which are path values and which are optional diagnostics. Compare the copy-pasted YAML against the approved source byte for byte. A translated comment can be informative; an altered key can make the example unusable.

Check installation and version compatibility

Kubernetes documentation recommends choosing a crictl release appropriate to the Kubernetes environment. A binary may be present but speak to a CRI service with different supported methods or behavior. Recording `crictl –version` and a runtime version check provides context for later troubleshooting, especially when instructions circulate for several years.

Retain exact version strings, platform architectures and command names; do not convert semantic version numbers into local punctuation conventions. Translate “supported”, “tested” and “installed” as different claims. A translated article should not promise that a command described in current documentation exists in every older build.

Build a small compatibility box containing client version, node OS, runtime implementation and a link to the version-specific reference used. A second reader should be able to decide whether to continue with a lab or consult older documentation. Treat missing subcommands as evidence about scope, not evidence that translation failed.

Use crictl info as a snapshot of runtime context

`crictl info` requests information from the connected runtime. Its output may contain structured fields, driver details, registry configuration and environment-specific data. That makes it useful for orientation, but output is not a generic statement about every node in the cluster and may include details a team should not publish openly.

Explain the purpose of the command in the target language, yet leave the token `info` literal. Preserve JSON key spelling and booleans, including `true` and `false`, even when local vocabulary suggests a translated equivalent. If screenshots expose internal registry or filesystem paths, redact those values consistently.

Ask the reviewer to identify the effective runtime and whether the response is complete. Compare translated captions with the unmodified captured output, then remove internal addresses before publishing an educational sample. A missing or empty field should be described as observed, not silently filled in from an assumed default.

Pods, containers and evidence

List pod sandboxes without assuming readiness

`crictl pods` shows local pod sandbox records reported through the CRI service. A visible sandbox might be ready or not ready, and old attempts may remain while a workload restarts. Namespaces and attempt counts can appear in tabular output, but the precise set of columns depends on the client and formatting.

Translate the headings in an explanatory table if they are your own teaching labels; do not edit raw command output presented as evidence. Explain that an attempt number is a retry-related field, not a priority score. Distinguish the sandbox’s ready state from application-level health or the Kubernetes pod’s overall readiness signals.

Give a learner an example with two sandbox attempts for the same logical pod and ask which record requires further inspection. The correct answer should refer to observed ID and state rather than infer an outcome from the display name. Document whether the listing was filtered and which node produced it.

Filter pod listings precisely

The `pods` command may accept filters such as names or labels, depending on release. Filters narrow a local dataset; they do not search every node. A translation that says “find the pod anywhere” could send an engineer in circles when the requested sandbox is on another host or no longer exists.

Preserve flag names and label expressions. Treat the `=` in a label selector as syntax, not a typographic detail. When showing an illustrative label like `app=sample`, explain that the value is fictional and should match the operator’s own deployment only after deliberate replacement.

Take one unfiltered snapshot and one filtered snapshot in a safe environment. Ask whether the filtered result proves absence from the whole cluster; it does not. A good translated instruction states both the selection criteria and the limit of the conclusion, instead of disguising an empty response as a definitive diagnosis.

Inspect pod sandboxes by ID

`crictl inspectp` looks up a pod sandbox using its runtime ID. The result is more specific than a simple table row: metadata, network state and other runtime fields may reveal what the sandbox actually contains. A similar-looking pod name alone is not a safe substitute when multiple attempts exist.

Keep sandbox IDs as opaque strings. Never translate a hexadecimal-looking identifier, shorten it arbitrarily in a runnable command or replace it with a localized sample name without stating the substitution. Distinguish “inspect pod sandbox” from “inspect container,” because the corresponding crictl subcommands have different targets.

Prepare an annotated example with one chosen sandbox ID and one unrelated container ID. Ask reviewers which ID belongs to `inspectp`, and require the answer to cite the preceding listing. If a training document includes truncated IDs, mark them as display-only values and supply complete lab IDs where execution is intended.

List containers and see stopped attempts

`crictl ps` generally lists running containers, while `crictl ps -a` includes additional container states. A support note that omits `-a` may overlook terminated attempts relevant to a crash investigation. Reading the state and attempt columns helps explain why multiple entries can have the same human-friendly name.

Keep `ps` and `-a` untouched. Translate “running”, “created” and “exited” with stable terminology, not a single ambiguous word meaning “available.” Explain whether a record belongs to the latest attempt before promising that a container is currently active. Local output should not be described as a global workload inventory.

Offer two sample observations: an empty running list and a stopped container in the all-states list. Ask whether the application never existed, has exited, or is merely not shown by the first filter. The translation should lead readers to inspect evidence before selecting a cause.

Inspect one container rather than guessing its failure

`crictl inspect` returns details for a selected container. Runtime metadata can clarify state, process configuration, image identity and other fields, although availability varies. Inspect is usually a safer educational starting point than immediately restarting or deleting a container to see if that changes the symptom.

A translated instruction needs the object type and full ID source. Preserve raw JSON keys and numeric values. A state such as exited should be treated as a report, not proof that a particular application bug caused it. Words like “reason” and “exit code” should be linked to fields actually visible in the example.

Create a case where a container stopped after a failed startup. Let the learner extract the state and relevant metadata before reading logs. Reviewers should reject translations that invent a root cause from the existence of an exit code alone, and should record when the inspected ID was obtained.

Read logs without treating text as instructions

`crictl logs` retrieves container logs if they remain available. Log lines may mix machine-generated English, application-defined phrases, timestamps, paths, JSON objects and user-supplied messages. Translating every displayed fragment into the target language can destroy forensic fidelity and make later searches impossible.

Distinguish an explanatory translation of a log event from a modified log excerpt. Keep the original record intact, then annotate its meaning in prose. Do not localize error codes, request IDs, stack traces or structured keys. If sensitive data appears, redact it with a declared placeholder and preserve the logical sequence.

Use a harmless simulated failure containing a timestamp, request ID and error sentence. Ask a bilingual reader to identify the exact event in the original and translated explanation. If either version changes who failed, what failed, or when, the page is not ready for an operational audience.

Images, access and operational side effects

Handle timestamps and time zones openly

Node-level incidents involve event times from several systems. crictl output, log files and monitoring screens may display UTC, local time or an application-specific format. A translator can accidentally make an old error look current by adapting the date to the audience without stating the zone or source format.

When converting a time for explanatory prose, retain the original timestamp and add the converted value with an explicit zone. Do not silently switch month and day in numerical dates. Treat relative labels such as “three minutes ago” as a snapshot taken at a particular time, not as text that remains true indefinitely.

Ask reviewers to map two log entries onto one timeline, accounting for time zone and clock skew. The lesson is not to solve synchronization from language alone, but to state what is observed. Record snapshot time and the system that produced each timestamp so later readers can reproduce the interpretation.

Use stats to explain usage, not diagnose everything

`crictl stats` can provide container resource-usage information through CRI. CPU and memory readings are useful clues, but one sampling instant cannot explain historical peak consumption or guarantee an application has sufficient resources. Available counters and field names depend on runtime capabilities.

Translate units carefully, and avoid substituting decimal conventions into raw numeric fields. A count of bytes is not automatically mebibytes; a CPU figure needs its unit or rate explained. Use clear qualifiers such as “at the time of observation” and “as reported by this runtime” rather than asserting a universal capacity problem.

Present a short table with time, ID, reported CPU field and reported memory field. Ask the reader which conclusions follow and which require more monitoring. The translation passes when it preserves both the measured quantity and the uncertainty, without turning a number into an unsupported diagnosis.

Keep image names, tags and digests exact

`crictl images` lists images known to the CRI image service, and `crictl inspecti` can inspect an image. A repository path, tag and immutable digest play different roles in image identity. A visible tag is a human-readable selector that may point to different content later; a digest identifies content.

Never translate image repository names, `sha256:` prefixes, registry hostnames or tag values. Preserve punctuation including colons and slashes. Explain the difference between a pullable reference and a sentence naming the software. Where a sample tag says `latest`, do not imply it guarantees the newest or safest build.

Ask a reader to compare two references that share the same repository but differ by digest. A correct explanatory translation should not collapse them into “the same image.” Check that copied examples contain no typographic quote substitutions or line wraps that make image references invalid in a terminal.

Treat image pulls as network and security actions

`crictl pull` requests an image from an image registry through the runtime’s image service. Unlike listing local images, a pull can contact a remote service, consume bandwidth, alter local storage and involve credentials. A guide should never present it as a purely observational troubleshooting step.

Translate “pull” as obtaining image content from a registry, not launching a container. Keep the repository URI untouched and describe authentication requirements without displaying secrets. When an example uses a public image, make clear that production teams should use their own approved registries and pinned versions.

During review, label each command as read-only, local state change, remote transfer or potentially destructive. A tester should be able to recognize that an image pull may fail due to network, permission, tag or trust-policy issues. Avoid presenting a successful pull as proof the application can start.

Explain exec and attach as interactions with running processes

`crictl exec` can run a command inside a running container, while `attach` connects to the process streams in supported circumstances. These are interactive or process-affecting operations; the result depends on the container’s contents, user privileges and TTY behavior. Running `sh` assumes an appropriate shell is present.

Preserve `-i`, `-t`, the target ID and the command following it. Do not promise a shell exists in minimal images. Translate the safety boundary explicitly: an interactive session may expose sensitive environment data or change runtime state. Avoid using a pasted example that alters application files on a live node.

Use a disposable training container and an innocuous command that only prints a non-sensitive value. The reviewer should explain the difference between attaching to existing streams and starting an additional process. If the translated text implies the operation is a remote login to the host, revise it.

Separate sandbox, container and restart attempts

A failed application can leave evidence at several levels: an existing sandbox, a stopped container, a replacement container and changing log files. The Kubernetes-facing name may remain familiar while the runtime IDs differ. Translators who equate a familiar name with one immutable object can erase the restart history.

Use terms that preserve lifecycle: sandbox creation, container creation, start, termination and subsequent attempt. Keep the attempt number as data. A phrase like “restart the same container” may be misleading when the runtime actually creates another object; prefer a description grounded in the particular trace.

Construct a two-attempt timeline with distinct IDs and one stable workload name. Ask the reader to connect each log excerpt with its source ID. The exercise reveals whether the translation distinguishes the object that failed from the object now running, which matters when incidents are handed between teams.

Failures, safety and multilingual release checks

Explain deletion and stop operations conservatively

crictl exposes commands such as `stop`, `stopp`, `rm`, `rmp` and `rmi` for different runtime objects. Stopping a container, stopping a pod sandbox and removing an image are not interchangeable. On Kubernetes-managed nodes, the kubelet or controller may subsequently reconcile state, so manual action can be surprising.

Do not collapse these verbs into one generic “clear” or “reset.” In bilingual runbooks, label destructive and state-changing operations, require the intended target ID, and identify the authority required before execution. Never present deletion as the first troubleshooting step when inspection would preserve evidence.

Give reviewers a proposed clean-up command for a fictional ID and ask them to identify its target, likely effect and rollback limitations. If they cannot answer all three, the translation must supply missing context. Production documentation should include approval and maintenance-window expectations appropriate to the organization.

Distinguish a runtime socket failure from a workload failure

When crictl cannot connect, the cause may involve an incorrect socket path, an unavailable service, permissions or a mismatched environment. This is a different problem from a healthy CRI service reporting a stopped application. Mixing the two produces troubleshooting loops in which operators investigate the wrong layer.

Translate connection failure wording precisely: “unable to connect to the runtime endpoint” is not “pod crashed.” Preserve error text in a literal excerpt and explain likely next checks separately. An empty list, a timeout and an authentication or permission denial each represent different evidence and require different follow-up.

Create three lab snippets: missing socket, permission denial and successful connection with no matching containers. Have reviewers rank the first diagnostic question for each. The translated guide succeeds when readers do not infer application state from a failed client-server connection.

Protect sensitive paths, identities and environment values

Runtime output may expose internal registry names, node hostnames, mounted paths, environment variables or command arguments containing credentials. An educational translation that republishes an exact screenshot can accidentally reveal infrastructure structure even when the principal topic is merely a command.

Preserve technical syntax while replacing sensitive values with stable placeholders such as `registry.example.invalid`, `CONTAINER_ID` and `TOKEN_REDACTED`. Explain that placeholders are not runnable without deliberate substitution. Never replace a secret by a plausible-looking real value or publish an actual bearer token for realism.

Reviewers should scan raw outputs and screenshots before language editing. Verify that redaction is consistent across tables, captions and alt text; a hostname concealed in one paragraph can reappear inside a log block. Keep a local audit of what was removed without placing secrets in the published copy.

Keep structured YAML and JSON machine-readable

CRI examples may use JSON or YAML for sandbox and container configuration. Human-facing explanations can be translated freely, but keys, booleans, delimiters, indentation rules and required schema values must remain valid. A copied example with curly quotation marks or a translated key can fail before reaching the runtime.

Protect structural tokens before translation. A JSON key like `metadata` is not a heading to be localized inside the code sample; explanatory text can still say what metadata means. Distinguish invented sample values, which a learner may replace, from parser-defined keywords that must remain literal.

Compare the source and translated code blocks with a parser or strict diff, ignoring only intentionally documented sample substitutions. Run a small disposable test when tooling is available. An article should state whether a command is illustrative or executed, rather than relying on syntactically plausible examples that nobody has checked.

Prepare right-to-left and Unicode displays

Arabic, Hebrew and other right-to-left languages can reorder punctuation visually around English commands, slash-separated paths and long IDs. Unicode normalization can also affect search and copy-paste, especially when a translated sentence contains visually similar characters from multiple scripts. Technical accuracy includes the copied bytes.

Keep executable snippets in left-to-right code blocks and isolate them visually from surrounding prose. Avoid decorative full-width punctuation inside flags or JSON. Translate interface labels with care while preserving their relationship to the original field. A screenshot’s appearance alone is not evidence that text copies correctly.

Test copying commands into a harmless terminal buffer, not immediately executing them. Inspect quotes, spaces, dashes and ID lengths; then test a screen reader’s reading order and narrow mobile layout. Any mismatch between displayed and copied text should block publication until the unsafe formatting is corrected.

Build a bilingual terminology register

A multilingual crictl guide may be maintained by translators who do not share every detail of Linux or Kubernetes. A short approved glossary prevents “sandbox,” “container,” “runtime,” “image,” “registry,” “endpoint” and “socket” from drifting between chapters and screenshots. Terms should be defined in the context of CRI.

Record the English term, approved local rendering, a one-sentence operational definition and a “do not confuse with” note. The glossary should not demand translation of product and command names. Allow the technical reviewer to flag terms whose local-language equivalent suggests the wrong action or privilege.

A good test asks translators to describe a stopped container, a ready pod sandbox and a failed socket connection without reusing one vague word for all three. Compare the resulting sentences with the diagram of the runtime stack. Revise the glossary based on actual misunderstandings, not taste alone.

Application and release

Review accessibility and alternative text

Technical articles are used on phones, assistive technologies and printed handouts. Long raw output tables may be impossible to read at small widths, while an image-only error message leaves screen-reader users without the evidence. Accessibility is therefore part of factual communication, not merely visual polish.

Write descriptive alt text that reports the important state without pretending the screenshot is live. Separate language explanations from code, provide headings that make sense out of context and avoid colour-only distinctions. A transcript of essential output should keep exact identifiers where safe and mark redactions.

Ask an editor to navigate the article using only headings, then use a keyboard and screen reader to find the pod ID, warning and next safe action. Check tables on narrow screens. If the evidence depends on reading a tiny screenshot, convert that content to selectable text with an explanatory caption.

Release a reproducible multilingual troubleshooting example

A publishable example includes tool version, runtime type, endpoint scope, observation command, expected classes of response, limitations and a safe next step. It also states whether the sample is illustrative or was actually tested. This makes a translated article useful beyond one team’s immediate incident.

Use a consistent visual pattern: what the operator needs to know, which literal command they may examine, what the output can and cannot prove, and how to continue safely. Preserve raw snippets while translating surrounding explanation. Link to maintained upstream documentation for release-dependent flags instead of freezing an unsupported promise.

Have two reviewers complete different tasks: a technical reviewer checks each command and inference, and a reader unfamiliar with CRI explains the investigation in their own words. Record every unresolved question. Only publish when a new operator can identify the boundary between observation, remote action and deletion.

An end-to-end incident reading exercise

Imagine an application on one node has restarted twice and a colleague asks for a translated incident note. Start by identifying the node and the configured CRI endpoint, then record the client and runtime versions. Run only observation commands in the first pass: obtain the local sandbox listing, locate the relevant attempt, record its sandbox ID, list all containers and match them by their metadata. A stopped container and a running replacement are two different pieces of evidence, not one object whose history can be casually merged.

Next, inspect the stopped container and retrieve its available logs. Keep error lines and IDs in the original form, translate the explanation outside the log block, and separate directly observed fields from hypotheses. A timestamp without a zone should be marked as ambiguous until its source is known. If an image needs inspection, identify its exact tag or digest and avoid requesting a pull merely to complete a description. This preserves the record and limits the risk of changing the state during language work.

Finally, write a concise conclusion that an operator in another country can verify. It should name which host and runtime were inspected, which object IDs correspond to the two attempts, what the evidence actually reports and what remains uncertain. If the team proposes stopping or removing an object, place that decision in a separately approved operational step. A readable translation is one that protects the evidence and makes the next decision easier, not one that offers a convenient but unverified explanation.

Frequently asked questions

Does crictl replace kubectl?

No. crictl communicates with a CRI-compatible runtime, commonly while debugging a node. kubectl communicates with the Kubernetes API. Each reports a different layer, so a disagreement may be useful evidence rather than proof one tool is wrong.

What is a pod sandbox?

It is a runtime-managed environment associated with a pod. A sandbox ID is not a Kubernetes deployment name or a container ID. Translate the concept, but preserve the exact ID used for `crictl inspectp`.

Why does crictl show no containers?

First check which node and runtime endpoint you connected to and whether `ps` is showing only running containers. An empty listing is narrower evidence than a conclusion that a workload does not exist anywhere.

Should I translate command output?

For instructions, translate what the output means. Keep original log lines, JSON keys, IDs and command excerpts intact when they serve as evidence. If you provide a translated explanatory table, clearly label it as an interpretation.

Which crictl version should documentation assume?

State the version tested and consult the matching upstream documentation. Command availability and output can change. For operations affecting live workloads, verify flags with the installed binary’s help rather than inferring compatibility.

Is crictl logs guaranteed to show all previous application history?

No. Log retention, rotation and runtime availability affect what can be read. Give the selected container ID and observation time, and do not claim that an empty log establishes an application never emitted output.

Can I show a production screenshot?

Only after reviewing for secrets, personal data, internal hostnames and service details. Prefer safe synthetic examples and mark them as such. Make alt text and transcribed captions follow the same redaction policy as the image.

Why are Unicode and right-to-left tests necessary?

Visual text can look correct yet copy with altered hyphens, spaces, quotes or character order. Test actual copied bytes, code-block direction, keyboard navigation and screen-reader order before publishing translated technical instructions.

Does a successful image pull prove a container works?

No. It shows an image retrieval operation succeeded in that context. Startup can still fail because of configuration, permissions, resources, dependencies or application errors. Keep the inference limited to what was observed.

What is the safest first step when a runtime looks broken?

Confirm the host, permissions, endpoint and version, then run a non-destructive information request. Preserve evidence before changing state. Organizations should follow their own incident and access procedures for privileged diagnostics.

Further reading and next steps

For tool-specific syntax, consult Kubernetes: Debugging nodes with crictl and the cri-tools crictl reference. For the broader containerd CLI context, compare nerdctl CLI localization; its namespace and image operations are not interchangeable with the CRI-focused diagnostics here.

Use this guide as a training standard: preserve syntax, be precise about state and scope, cite the actual evidence, and keep technical decisions independent of wording preferences. When a translation makes the distinction between local observation and runtime mutation immediately clear, a global team can collaborate without losing the meaning of the underlying commands.