nl-qdisc(8)
π nl-qdisc β bestie, it's time to manage some qdiscs
okay so first things first: this is nl-qdisc, manual section 8, from the System Manager's Manual. It's a little family of tools and they are, no cap, iconic once you get the vibe. Let's go. β¨
πΈ NAME πΈ
nl-qdisc-{add|list|delete} β Manage queueing disciplines
π¦ SYNOPSIS π¦
nl-qdisc-add --dev dev --parent id [OPTIONS] qdisc-type [QDISC]
nl-qdisc-delete [ --interactive ] [OPTIONS]
nl-qdisc-list [OPTIONS]
π DESCRIPTION π
The nl-qdisc tools let you manage and configure queueing disciplines (qdiscs for short, we're on a nickname basis) inside the kernel. That's the whole assignment. π
β¨ OPTIONS β¨
These are the shared options, the ones everybody gets. Read them, they're your friends. π«Ά
-hor--helpβ Prints the help text to the console and then exits. Your "what do I do" button. π-vor--versionβ Prints versioning information to the console and exits. Receipts, basically.-qor--quietβ Do not print informal notifications about actions taken to the console. By default a short description of each qdisc added/update/deleted gets printed to the console β this option disables that behaviour. Silence is golden. π€«-dor--dev=DEVβ The network device the qdisc is attached to. Where the drama lives.-por--parent=IDβ Identifier of the parent qdisc/class this qdisc is attached to. You can specify that identifier as a classid, a name, or one of the special values"root"or"ingress". β¨-ior--id=IDβ Identifier of qdisc. Can be specified as a classid or a name.
π nl-qdisc-add Options
--updateβ Update the qdisc if it already exists. Otherwise, trying to add a qdisc that already exists will result in an error. Note that this does not include changing the type of the qdisc β if that's what you want, use--replaceinstead. π--replaceβ Replace or update the qdisc if it already exists. Same behaviour as--update, but it will completely replace the qdisc if it already exists. Glow up mode. π--update-onlyβ Update an existing qdisc, but do not create it if it does not exist.--replace-onlyβ Update or replace an existing qdisc, but do not create it if it does exist. (That's literally how the page words it, bestie β I'm just the messenger π)
π nl-qdisc-delete Options
--interactiveβ Interactive mode requires confirmation by the user for each qdisc deleted. It prints a prompt for every qdisc matching the provided filter, and you have to answer'y'esor'n'o. Consent culture, but for qdiscs. π--yesβ Makes the default answer for interactive prompts be'y'es. This option is also required to delete all qdiscs on all network devices. Big power, use it responsibly. π₯-kor--kind=TYPEβ Only delete qdiscs of this type.
π§ nl-qdisc-list Options
--detailsβ Show detailed information for each qdisc listed.--statsβ Show statistics information for each qdisc listed. This option will also turn on detailed information automatically. Two for one, we love. β¨-ror--recursiveβ List all TC objects recurisvely attached to all qdiscs matching the filter. (Yep, "recurisvely" β that's the spelling in the original, and I will not be editing it, that's a whole other job π)-kor--kind=TYPEβ Only list qdiscs of this type.
π USAGE π
Here's the moment where it all clicks. Watch this. π
Add a HTB root qdisc with id "5:":
nl-qdisc-add --dev eth0 --parent root --id 5: htb
List all qdiscs on eth0 and print statistical data:
nl-qdisc-list --stats --dev eth0
Delete the qdisc "5:":
nl-qdisc-delete --id 5:
π SEE ALSO π
β AUTHOR β
Thomas Graf is the original author and current maintainer of libnl and libnl tools. Many people have contributed to it since. π«Ά
and that's the whole page, bestie β no notes, you ate. π β¨
libnl Β· 21 October 2010 Β· nl-qdisc(8) β mwah, go forth and queue those disciplines πΈπ¦π
π¦ where this page comes from
- alpine 3.22: libnl3-doc 3.11.0-r0 Β· LGPL-2.1-or-later
- alpine 3.23: libnl3-doc 3.11.0-r0 Β· LGPL-2.1-or-later
- alpine 3.24: libnl3-doc 3.11.0-r0 Β· LGPL-2.1-or-later
- arch rolling: libnl 3.12.0-1 Β· LGPL-2.1-only
- centos-stream 10: libnl3-cli 3.11.0-1.el10 Β· LGPL-2.1-only
- centos-stream 9: libnl3-cli 3.11.0-1.el9 Β· LGPL-2.1-only
- centos-stream 9: libnl3-cli 3.11.0-1.el9 Β· LGPL-2.1-only
- debian bookworm: libnl-utils 3.7.0-0.2+b1
- debian trixie: libnl-utils 3.7.0-2
- fedora 43: libnl3-cli 3.11.0-6.fc43 Β· LGPL-2.1-only
- fedora 43: libnl3-cli 3.11.0-6.fc43 Β· LGPL-2.1-only
- fedora 43: libnl3-cli 3.12.0-2.fc43 Β· LGPL-2.1-only
- fedora 43: libnl3-cli 3.12.0-2.fc43 Β· LGPL-2.1-only
- fedora 44: libnl3-cli 3.12.0-3.fc44 Β· LGPL-2.1-only
- fedora 44: libnl3-cli 3.12.0-3.fc44 Β· LGPL-2.1-only
- nixpkgs unstable: libnl 3.12.0
- opensuse-leap 16.0: libnl-tools 3.11.0-160000.2.2 Β· GPL-2.0-only
- opensuse-leap 16.0: libnl-tools 3.11.0-160000.2.2 Β· GPL-2.0-only
- opensuse-leap 16.0: libnl-tools 3.11.0-160000.2.2 Β· GPL-2.0-only
- opensuse-leap 16.0: libnl-tools 3.11.0-160000.2.2 Β· GPL-2.0-only
- ubuntu jammy: libnl-utils 3.5.0-0.1
- ubuntu noble: libnl-utils 3.7.0-0.3build1
- ubuntu noble: libnl-utils 3.7.0-0.3build1.1
- ubuntu questing: libnl-utils 3.7.0-2build1
- ubuntu resolute: libnl-utils 3.12.0-2
- ubuntu stonking: libnl-utils 3.12.0-2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms