pixopctl

pixopctl

Operator wrapper for pixop-live.service only. It runs systemctl / journalctl with Pixop-specific semantics for restart and recover, and exposes a quick health probe against the local metrics HTTP endpoint.

Version note: On the appliance, run pixop-version and pixopctl (no args) to confirm commands exist. Guest operators do not type sudo; the script re-executes via its absolute path.

Usage

pixopctl {start|stop|restart|recover|status|enable|disable|logs|health}
pixopctl -h|--help
CommandMutates runtime?Action
startYessystemctl start pixop-live.service
stopYessystemctl stop pixop-live.service
restartYesPixop-only systemctl restart — primary SRT ingest stays up
recoverYesOrdered pipeline recovery (see below)
statusNosystemctl --no-pager status pixop-live.service
enable / disableBoot policysystemctl enable / disable on pixop-live.service only
logsNojournalctl -u pixop-live (see Logs)
healthNoHTTP GET http://127.0.0.1:${PIXOP_METRICS_PORT:-8080}/v1/metrics (first lines only)
Refused commandExitMessage
pull, rollback2Directs you to pixop-image-update

Unknown commands and invalid help usage exit 2. restart / recover return 1 if pixop-live.service is not active after restart, or if ingress recovery steps fail.

Service relationships

ComponentManaged by pixopctl?Typical companion
pixop-live.serviceYespixop-stack for full pipeline
tsduck-in@main, tsduck-out@*Notsduckctl
Container imagesNopixop-image-update
Automated wedged-pipeline recoveryNo (invokes pixopctl)pixop-healthcheck timer → recover when configured

Stopping only Pixop with pixopctl stop leaves TSDuck ingress/egress running; that is usually wrong for maintenance. Use pixop-stack stop for a full pipeline stop.

Restart vs recover

Both commands leave egress (tsduck-out@*) running. Only recover touches primary ingress.

Steprestartrecover
Stop tsduck-in@mainNoYes (tsduckctl stop main --type in, errors ignored)
Restart pixop-live.serviceYesYes
Start tsduck-in@mainNoYes + tsduckctl check main --type in
Wait for UDP SRT ingest bindNoImplicit in tsduckctl start / check

recover is the conservative path used by pixop-healthcheck when automatic restart is enabled. Use it when Pixop is wedged but you want ingress torn down and brought back cleanly.

Stream outage during recover

Recover stops primary ingress before restarting Pixop. Active SRT senders see a disconnect until ingress restarts and re-binds (default UDP 5000). Egress on 5001 may keep running, but downstream may see stale or interrupted output while Pixop restarts. Plan recover during a maintenance window or accept a brief ingest gap.

Primary ingress instance name defaults to main (PIXOP_STACK_PRIMARY_IN override for tests only).

Health vs pixop-flow

ToolWhat it measuresRestarts?
pixopctl healthPrometheus-style text from /v1/metricsNo
pixop-flowUDP payload Mbps at five pipeline stages via tcpdumpNo
pixop-healthcheckJSON metrics + policy; may call recoverOnly when policy says so

health does not prove end-to-end SRT connectivity or correct video PID; it only shows that the metrics HTTP server responds. For bitrate and backbone utilization, use pixop-flow.

Output configuration

Video output (resolution, chroma, bit depth, color signalling, bitrate, and other NVEnc settings) is controlled by /etc/pixop-live/nvencc.args, not by pixopctl itself.

# edit nvencc.args, then:
pixopctl restart

Use restart (not recover) after nvencc.args changes so ingest SRT stays connected.

Logs

SourceCommand / path
Service lifecycle (systemd)pixopctl logs or journalctl -u pixop-live
Application diagnostics/var/log/pixop-live/live.log (TERMINAL-format stderr via systemd)

pixopctl logs defaults to journalctl -n 200 -f. Pass extra journalctl arguments after --, for example:

pixopctl logs -- -n 500 --since "1 hour ago"

Task-oriented examples

GoalCommand
Confirm Pixop unit statepixopctl status
Bounce Pixop after config editpixopctl restart
Healthcheck-style recoverypixopctl recover
Quick metrics sanity checkpixopctl health
Persist start on bootpixopctl enable (does not start now)
Stop entire pipelinepixop-stack stop (not pixopctl)

Not supported

  • pull / rollback — container updates use digest-pinned pixop-image-update.
  • TSDuck instances — use tsduckctl.
  • Host OS, NVIDIA driver, systemd unit changes — require a new tested AMI or QCOW2 appliance image.

LIVE_IMAGE_PREV in live.env may exist as an audit trail after image apply; pixopctl does not read it.

Troubleshooting

SymptomCheck
recover fails on ingresstsduckctl status main --type in; tsduckctl logs main
health fails / emptypixopctl status; port PIXOP_METRICS_PORT (default 8080)
Restart succeeds but bad videonvencc.args, license, ingress PID — not pixopctl scope

Related


Did this page help you?