By the end of this lesson
Distinguish success, rejected input and missing files, and read service information without starting jobs.
Before you start
- Lesson 9; the recipe and records.json are in your practice folder.
Three words to know
- Exit status
- A number a process returns to its calling shell; zero conventionally means success.
- stderr
- A separate output stream normally used for errors and diagnostics.
- Service
- A program managed by the operating system, sometimes triggered by a timer.
1. Trigger a small, understandable error
cd "$HOME/openvist-learn"
python3 count_records.py missing_field < records.json
printf 'exit=%s\n' "$?"What you should see · example output
An error describing the rejected input, no successful JSON result, then exit=2.
The command completed, but the data did not meet its contract. That is different from an SSH connection failure or a file the shell cannot open. Return to status as the field name for the successful sample. Do not keep repeating an operation with real side effects merely because its output is unfamiliar.
2. Save separate result and error files
python3 count_records.py status < records.json > result.json 2> errors.txt
printf 'exit=%s\n' "$?"
cat result.json
cat errors.txtWhat you should see · example output
exit=0, the JSON result, and no text from errors.txt on a successful run.
The > operator captures standard output. The 2> operator captures standard error. An empty error file is expected for this successful example. Before sharing logs, inspect them for private values, access tokens and personal paths.
3. Observe services without starting anything
systemctl --user list-timers --all --no-pagerWhat you should see · example output
A timer table, possibly with no user timers configured. Names and times vary.
journalctl --user -n 10 --no-pagerWhat you should see · example output
Up to ten accessible user-journal entries, or a message that no entries are available.
These two commands inspect state; they do not create a timer, start an audit or generate a recipe. User services differ from system services. A minimal server or account without an available user manager/journal may return no entries or a connection error. That alone does not mean your Python script failed. A one-shot service can be inactive after finishing successfully; inspect its recorded exit result rather than judging the word inactive alone.
4. Your next useful step
- Repeat the small sample from a clean SSH session using the correct working folder.
- Use the JSON Validator to inspect your synthetic input and Text Diff to compare two saved results.
- Choose another published recipe only after reading its runtime, input contract, side effects and test limits.
You have reached the end of this first route: you can connect, find a file, transfer it, run a Python program and inspect what happened. Scheduling your own persistent jobs, Python dependencies and programming-language foundations are separate future lessons, not hidden prerequisites.
YOUR TURN
A small check before you continue
What evidence would you share if the recipe fails? Should you include your SSH password?
Show a suggested answer
Share the command with private details removed, interpreter version, relevant error and immediate exit status, plus a small synthetic input. Never share your password, private key or API credentials.
Sources and scope
Documentation and examples reviewed 2026-10-18. Provider screens, package versions and output wording can differ. Examples show expected outcomes; they are not a claim that OpenViST connected to your server or verified your setup.
