LTTNG-TRACK(1)
π lttng-track π
LTTng Manual β’ the one where we let specific processes record events
β¨ NAME β¨
lttng-track β Allow specific processes to record LTTng events
πΈ SYNOPSIS πΈ
Okay bestie, hold onto your strawberry milk, there are four shapes of this command. Here's the kernel one first:
Allow specific processes to record Linux kernel events:
lttng [GENERAL OPTIONS] track --kernel [--session=SESSION]
(--pid=PID[,PID]... | --vpid=VPID[,VPID]... |
--uid=UID[,UID]... | --vuid=VUSER[,VUSER]... |
--gid=GID[,GID]... | --vgid=VGROUP[,VGROUP]...)...
lttng [GENERAL OPTIONS] track --kernel [--session=SESSION]
--all (--pid | --vpid | --uid | --vuid | --gid | --vgid)...
And now the user space ones:
Allow specific processes to record user space events:
lttng [GENERAL OPTIONS] track --userspace [--session=SESSION]
(--vpid=VPID[,VPID]... | --vuid=VUSER[,VUSER]... |
--vgid=VGROUP[,VGROUP]...)...
lttng [GENERAL OPTIONS] track --userspace [--session=SESSION]
--all (--vpid | --vgid | --vuid)...
π¦ DESCRIPTION π¦
The lttng track command lets one or more processes record LTTng events, based on their attributes, within:
- With the
--session=SESSIONoption β the recording session named SESSION. - Without the
--sessionoption β the current recording session (go readlttng-concepts(7)to learn more about the current recording session, it's giving very educational π ).
See lttng-concepts(7) to learn more about recording sessions and recording event rules, fr fr.
So here's the tea: the track command adds values to inclusion sets of process attributes. The available inclusion sets are, for a given recording session:
With the --kernel option:
- Process ID (PID).
- Virtual process ID (VPID).
This is the PID as seen by the application.
- Unix user ID (UID).
- Virtual Unix user ID (VUID).
This is the UID as seen by the application.
- Unix group ID (GID).
- Virtual Unix group ID (VGID).
This is the GID as seen by the application.
With the --userspace option:
- VPID
- VUID
- VGID
When an event E satisfies all the other explicit and implicit conditions of an event rule ER, ER matches E if the attributes of the process for which LTTng creates E are all part of the inclusion sets of the recording session and domain of ER. (iykyk β¨)
By default, when a recording session is created (see lttng-create(1)), all processes are allowed to record events. In other words, all the inclusion sets of the recording session contain all the possible process attribute values. Everyone's invited to the party π
But the way that it works: if a given inclusion set IS contains all the possible values (the --all option), then using the track command to add one or more values V to IS:
- Removes all the values from IS.
This effectively makes IS empty.
- Adds V to IS.
Example: with the PID inclusion set, you can record all the system calls of a given process:
$ lttng enable-event --kernel --all --syscall
$ lttng track --kernel --pid=2345
$ lttng start
See the βEXAMPLESβ section below for usage examples.
Remove values from an inclusion set with the lttng-untrack(1) command.
π Inclusion set example π
This example operates on the Linux kernel process ID (PID) inclusion set of the current recording session to show how an inclusion set works. Main character energy for the PID set honestly.
Assume the maximum system PID is 7 for this example.
- Initial inclusion set:
[0] [1] [2] [3] [4] [5] [6] [7]
- Command:
$ lttng track --kernel --pid=3,6,7
Inclusion set is now:
[ ] [ ] [ ] [3] [ ] [ ] [6] [7]
- Command:
$ lttng untrack --kernel --pid=7
Inclusion set is now:
[ ] [ ] [ ] [3] [ ] [ ] [6] [ ]
- Command:
$ lttng track --kernel --pid=1,5
Inclusion set is now:
[ ] [1] [ ] [3] [ ] [5] [6] [ ]
Remove values from an inclusion set with the lttng-untrack(1) command.
π OPTIONS π
See lttng(1) for GENERAL OPTIONS.
π§ Tracing domain
One of:
-k,--kernelβ Add values to one or more Linux kernel inclusion sets.-u,--userspaceβ Add values to one or more user space inclusion sets.
π Recording target
-s SESSION,--session=SESSIONβ Add values to one or more inclusion sets of the recording session named SESSION instead of the current recording session.
π Inclusion set selection
-p [PID[,PID]...],--pid[=PID[,PID]...]β For each PID argument, add PID to the process ID inclusion set of the selected recording session and domain.
PID is the process ID attribute of a process as seen from the root PID namespace (see pid_namespaces(7)).
Only available with the --kernel option.
--vpid[=VPID[,VPID]...]β For each VPID argument, add VPID to the virtual process ID inclusion set of the selected recording session and domain.
VPID is the virtual process ID attribute of a process as seen from the PID namespace of the process (see pid_namespaces(7)).
--uid[=USER[,USER]...]β For each USER argument, add USER to the user ID inclusion set of the selected recording session and domain.
USER is either:
- The real user ID (see
getuid(3)) of a process as seen from the root user namespace (seeuser_namespaces(7)). - A user name.
The connected LTTng session daemon (see lttng-sessiond(8)) performs the user name resolution on addition to the user ID inclusion set.
Only available with the --kernel option.
--vuid[=VUSER[,VUSER]...]β For each VUSER argument, add VUSER to the virtual user ID inclusion set of the selected recording session and domain.
VUSER is either:
- The real user ID (see
getuid(3)) of a process as seen from the user namespace (seeuser_namespaces(7)). - A user name.
The connected LTTng session daemon (see lttng-sessiond(8)) performs the user name resolution on addition to the virtual user ID inclusion set.
--gid[=GROUP[,GROUP]...]β For each GROUP argument, add GROUP to the group ID inclusion set of the selected recording session and domain.
GROUP is either:
- The real group ID (see
getgid(3)) of a process as seen from the root user namespace (seeuser_namespaces(7)). - A group name.
The connected LTTng session daemon (see lttng-sessiond(8)) performs the group name resolution on addition to the group ID inclusion set.
Only available with the --kernel option.
--vgid[=VGROUP[,VGROUP]...]β For each VGROUP argument, add VGROUP to the virtual group ID inclusion set of the selected recording session and domain.
VGROUP is either:
- The real group ID (see
getgid(3)) of a process as seen from the user namespace (seeuser_namespaces(7)). - A group name.
The connected LTTng session daemon (see lttng-sessiond(8)) performs the group name resolution on addition to the virtual group ID inclusion set.
π«Ά Inclusion set operation
-a,--allβ With one or more empty--pid,--vpid,--uid,--vuid,--gid, and--vgidoptions: add all the possible values to the selected inclusion sets.
β Program information
-h,--helpβ Show help.
This option attempts to launch /usr/bin/man to view this manual page. Override the manual pager path with the LTTNG_MAN_BIN_PATH environment variable.
--list-optionsβ List available command options and quit.
π EXIT STATUS π
0β Success1β Command error2β Undefined command3β Fatal error4β Command warning (something went wrong during the command)
π ENVIRONMENT π
LTTNG_ABORT_ON_ERRORβ Set to1to abort the process after the first error is encountered.LTTNG_HOMEβ Path to the LTTng home directory.
Defaults to $HOME.
Useful when the Unix user running the commands has a non-writable home directory.
LTTNG_LIST_LEGACYβ Set to1to use the legacy output format (LTTng 2.14 and earlier) for thelttng-list(1)command instead of the modern output format.
Note that the legacy output doesnβt show anything related to features introduced after LTTng 2.14. (it's giving vintage, but not in a cute way π)
LTTNG_MAN_BIN_PATHβ Absolute path to the manual pager to use to read the LTTng command-line help (withlttng-help(1)or with the--helpoption) instead of/usr/bin/man.LTTNG_NO_UTF_8β Set to1to NOT emit multi-byte UTF-8 sequences, even if the locale claims to support it.LTTNG_SESSION_CONFIG_XSD_PATHβ Path to the directory containing thesession.xsdrecording session configuration XML schema.LTTNG_SESSIOND_PATHβ Absolute path to the LTTng session daemon binary (seelttng-sessiond(8)) to spawn from thelttng-create(1)command.
The --sessiond-path general option overrides this environment variable.
LTTNG_TERM_COLORβ Controls when to emit terminal SGR codes in the output.
The NO_COLOR environment variable overrides this.
One of:
auto(default) β Only emit SGR codes when the standard output is connected to a color-capable terminal.alwaysβ Always emit SGR codes.neverβ Never emit SGR codes.
NO_COLORβ If set and not empty, then itβs equivalent to settingLTTNG_TERM_COLORtonever.
See NO_COLOR <https://no-color.org/> to learn more.
π FILES π
$LTTNG_HOME/.lttngrcβ Unix userβs LTTng runtime configuration.
This is where LTTng stores the name of the Unix userβs current recording session between executions of lttng(1). lttng-create(1) and lttng-set-session(1) set the current recording session. She's got the receipts π
$LTTNG_HOME/lttng-tracesβ Default output directory of LTTng traces in local and snapshot modes.
Override this path with the --output option of the lttng-create(1) command.
$LTTNG_HOME/.lttngβ Unix userβs LTTng runtime and configuration directory.$LTTNG_HOME/.lttng/sessionsβ Default directory containing the Unix userβs saved recording session configurations (seelttng-save(1)andlttng-load(1))./etc/lttng/sessionsβ Directory containing the system-wide saved recording session configurations (seelttng-save(1)andlttng-load(1)).
Note π‘$LTTNG_HOMEdefaults to the value of theHOMEenvironment variable.
π EXAMPLES π
okay bestie, here are the lilβ real-world moments where you actually use lttng track. Theyβre giving βshow me, donβt tell meβ energy, and we love that. β¨
Example 1. Add the PIDs 1728 and 3775 to the Linux kernel process ID inclusion set of the current recording session.
See the --pid option.
$ lttng track --kernel --pid=1728,3775
Example 2. Add the ID of a specific user to the user space virtual user ID inclusion set of a specific recording session.
See the --vuid and --session options.
$ lttng track --userspace --session=my-session --vuid=http
Example 3. Add all the possible group IDs to the Linux kernel group ID inclusion set of the current recording session.
See the --all and --gid options.
$ lttng track --kernel --all --gid
π RESOURCES π
Links, links, links β all the places to vibe with the LTTng community, no gatekeeping:
- LTTng project website:
https://lttng.org - LTTng documentation:
https://lttng.org/docs - LTTng bug tracker:
https://bugs.lttng.org - Git repositories:
https://git.lttng.org - GitHub organization:
https://github.com/lttng - Continuous integration:
https://ci.lttng.org/ - Mailing list (
https://lists.lttng.org/) for support and development:lttng-dev@lists.lttng.org - IRC channel (
irc://irc.oftc.net/lttng):#lttngonirc.oftc.net - Mastodon:
https://mastodon.social/@lttng
π COPYRIGHT π
This program is part of the LTTng-tools project.
LTTng-tools is distributed under the GNU General Public License version 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). See the LICENSE (https://github.com/lttng/lttng-tools/blob/master/LICENSE) file for details.
π«Ά THANKS π«Ά
Special thanks to Michel Dagenais and the DORSAL laboratory (http://www.dorsal.polymtl.ca/) at Γcole Polytechnique de MontrΓ©al for the LTTng journey.
Also thanks to the Ericsson teams working on tracing which helped us greatly with detailed bug reports and unusual test cases.
π SEE ALSO π
bestie, thatβs the whole page π
itβs from LTTng 2.15.1, dated 14 June 2021, and itβs the LTTNG-TRACK(1) manual page. periodt β¨
π¦ where this page comes from
- ubuntu stonking: lttng-tools 2.15.1-1 Β· LGPL-2.1-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms