aboutsummaryrefslogtreecommitdiffhomepage
path: root/print.html
diff options
context:
space:
mode:
authorjohannst <johannst@users.noreply.github.com>2024-08-27 22:25:00 +0000
committerjohannst <johannst@users.noreply.github.com>2024-08-27 22:25:00 +0000
commit3b226d19bb19a87eb565f3e1d16e14f446b56e76 (patch)
tree0e5c8df4ad9797727adc1ca8a86b1b25eebb4f7a /print.html
parentb00e3cd018cde863a28af849b06c37981d7e36cd (diff)
downloadnotes-3b226d19bb19a87eb565f3e1d16e14f446b56e76.tar.gz
notes-3b226d19bb19a87eb565f3e1d16e14f446b56e76.zip
deploy: 9b47b98b7c5efce0bf50d57aa5d7e374bcbabf23
Diffstat (limited to 'print.html')
-rw-r--r--print.html341
1 files changed, 317 insertions, 24 deletions
diff --git a/print.html b/print.html
index b58d01d..6975464 100644
--- a/print.html
+++ b/print.html
@@ -89,7 +89,7 @@
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
- <ol class="chapter"><li class="chapter-item expanded affix "><a href="intro.html">Introduction</a></li><li class="chapter-item expanded "><a href="shells/index.html"><strong aria-hidden="true">1.</strong> Shells</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="shells/zsh.html"><strong aria-hidden="true">1.1.</strong> zsh</a></li><li class="chapter-item expanded "><a href="shells/bash.html"><strong aria-hidden="true">1.2.</strong> bash</a></li><li class="chapter-item expanded "><a href="shells/fish.html"><strong aria-hidden="true">1.3.</strong> fish</a></li></ol></li><li class="chapter-item expanded "><a href="cli/index.html"><strong aria-hidden="true">2.</strong> CLI foo</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="cli/awk.html"><strong aria-hidden="true">2.1.</strong> awk</a></li><li class="chapter-item expanded "><a href="cli/sed.html"><strong aria-hidden="true">2.2.</strong> sed</a></li><li class="chapter-item expanded "><a href="cli/column.html"><strong aria-hidden="true">2.3.</strong> column</a></li><li class="chapter-item expanded "><a href="cli/sort.html"><strong aria-hidden="true">2.4.</strong> sort</a></li><li class="chapter-item expanded "><a href="cli/tr.html"><strong aria-hidden="true">2.5.</strong> tr</a></li></ol></li><li class="chapter-item expanded "><a href="tools/index.html"><strong aria-hidden="true">3.</strong> Tools</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="tools/tmux.html"><strong aria-hidden="true">3.1.</strong> tmux</a></li><li class="chapter-item expanded "><a href="tools/emacs.html"><strong aria-hidden="true">3.2.</strong> emacs</a></li><li class="chapter-item expanded "><a href="tools/gpg.html"><strong aria-hidden="true">3.3.</strong> gpg</a></li><li class="chapter-item expanded "><a href="tools/radare2.html"><strong aria-hidden="true">3.4.</strong> radare2</a></li><li class="chapter-item expanded "><a href="tools/qemu.html"><strong aria-hidden="true">3.5.</strong> qemu</a></li><li class="chapter-item expanded "><a href="tools/pacman.html"><strong aria-hidden="true">3.6.</strong> pacman</a></li><li class="chapter-item expanded "><a href="tools/dot.html"><strong aria-hidden="true">3.7.</strong> dot</a></li><li class="chapter-item expanded "><a href="tools/ffmpeg.html"><strong aria-hidden="true">3.8.</strong> ffmpeg</a></li><li class="chapter-item expanded "><a href="tools/gnuplot.html"><strong aria-hidden="true">3.9.</strong> gnuplot</a></li><li class="chapter-item expanded "><a href="tools/restic.html"><strong aria-hidden="true">3.10.</strong> restic</a></li><li class="chapter-item expanded "><a href="tools/qrencode.html"><strong aria-hidden="true">3.11.</strong> qrencode</a></li></ol></li><li class="chapter-item expanded "><a href="monitor/index.html"><strong aria-hidden="true">4.</strong> Resource analysis & monitor</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="monitor/lsof.html"><strong aria-hidden="true">4.1.</strong> lsof</a></li><li class="chapter-item expanded "><a href="monitor/pidstat.html"><strong aria-hidden="true">4.2.</strong> pidstat</a></li><li class="chapter-item expanded "><a href="monitor/pgrep.html"><strong aria-hidden="true">4.3.</strong> pgrep</a></li><li class="chapter-item expanded "><a href="monitor/ps.html"><strong aria-hidden="true">4.4.</strong> ps</a></li><li class="chapter-item expanded "><a href="monitor/pmap.html"><strong aria-hidden="true">4.5.</strong> pmap</a></li><li class="chapter-item expanded "><a href="monitor/pstack.html"><strong aria-hidden="true">4.6.</strong> pstack</a></li></ol></li><li class="chapter-item expanded "><a href="trace_profile/index.html"><strong aria-hidden="true">5.</strong> Trace and Profile</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="trace_profile/time.html"><strong aria-hidden="true">5.1.</strong> time</a></li><li class="chapter-item expanded "><a href="trace_profile/strace.html"><strong aria-hidden="true">5.2.</strong> strace</a></li><li class="chapter-item expanded "><a href="trace_profile/ltrace.html"><strong aria-hidden="true">5.3.</strong> ltrace</a></li><li class="chapter-item expanded "><a href="trace_profile/perf.html"><strong aria-hidden="true">5.4.</strong> perf</a></li><li class="chapter-item expanded "><a href="trace_profile/oprofile.html"><strong aria-hidden="true">5.5.</strong> OProfile</a></li><li class="chapter-item expanded "><a href="trace_profile/callgrind.html"><strong aria-hidden="true">5.6.</strong> callgrind</a></li></ol></li><li class="chapter-item expanded "><a href="debug/index.html"><strong aria-hidden="true">6.</strong> Debug</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="debug/gdb.html"><strong aria-hidden="true">6.1.</strong> gdb</a></li><li class="chapter-item expanded "><a href="debug/gdbserver.html"><strong aria-hidden="true">6.2.</strong> gdbserver</a></li></ol></li><li class="chapter-item expanded "><a href="binary/index.html"><strong aria-hidden="true">7.</strong> Binary</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="binary/od.html"><strong aria-hidden="true">7.1.</strong> od</a></li><li class="chapter-item expanded "><a href="binary/xxd.html"><strong aria-hidden="true">7.2.</strong> xxd</a></li><li class="chapter-item expanded "><a href="binary/readelf.html"><strong aria-hidden="true">7.3.</strong> readelf</a></li><li class="chapter-item expanded "><a href="binary/objdump.html"><strong aria-hidden="true">7.4.</strong> objdump</a></li><li class="chapter-item expanded "><a href="binary/nm.html"><strong aria-hidden="true">7.5.</strong> nm</a></li></ol></li><li class="chapter-item expanded "><a href="development/index.html"><strong aria-hidden="true">8.</strong> Development</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="development/c++filt.html"><strong aria-hidden="true">8.1.</strong> c++filt</a></li><li class="chapter-item expanded "><a href="development/c++.html"><strong aria-hidden="true">8.2.</strong> c++</a></li><li class="chapter-item expanded "><a href="development/glibc.html"><strong aria-hidden="true">8.3.</strong> glibc</a></li><li class="chapter-item expanded "><a href="development/gcc.html"><strong aria-hidden="true">8.4.</strong> gcc</a></li><li class="chapter-item expanded "><a href="development/git.html"><strong aria-hidden="true">8.5.</strong> git</a></li><li class="chapter-item expanded "><a href="development/cmake.html"><strong aria-hidden="true">8.6.</strong> cmake</a></li><li class="chapter-item expanded "><a href="development/make.html"><strong aria-hidden="true">8.7.</strong> make</a></li><li class="chapter-item expanded "><a href="development/ld.so.html"><strong aria-hidden="true">8.8.</strong> ld.so</a></li><li class="chapter-item expanded "><a href="development/symbolver.html"><strong aria-hidden="true">8.9.</strong> symbol versioning</a></li><li class="chapter-item expanded "><a href="development/python.html"><strong aria-hidden="true">8.10.</strong> python</a></li><li class="chapter-item expanded "><a href="development/gcov.html"><strong aria-hidden="true">8.11.</strong> gcov</a></li><li class="chapter-item expanded "><a href="development/pgo.html"><strong aria-hidden="true">8.12.</strong> pgo</a></li></ol></li><li class="chapter-item expanded "><a href="linux/index.html"><strong aria-hidden="true">9.</strong> Linux</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="linux/systemd.html"><strong aria-hidden="true">9.1.</strong> systemd</a></li><li class="chapter-item expanded "><a href="linux/coredump.html"><strong aria-hidden="true">9.2.</strong> coredump</a></li><li class="chapter-item expanded "><a href="linux/ptrace_scope.html"><strong aria-hidden="true">9.3.</strong> ptrace_scope</a></li><li class="chapter-item expanded "><a href="linux/cryptsetup.html"><strong aria-hidden="true">9.4.</strong> cryptsetup</a></li><li class="chapter-item expanded "><a href="linux/swap.html"><strong aria-hidden="true">9.5.</strong> swap</a></li><li class="chapter-item expanded "><a href="linux/input.html"><strong aria-hidden="true">9.6.</strong> input</a></li><li class="chapter-item expanded "><a href="linux/acl.html"><strong aria-hidden="true">9.7.</strong> acl</a></li><li class="chapter-item expanded "><a href="linux/zfs.html"><strong aria-hidden="true">9.8.</strong> zfs</a></li></ol></li><li class="chapter-item expanded "><a href="network/index.html"><strong aria-hidden="true">10.</strong> Network</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="network/ss.html"><strong aria-hidden="true">10.1.</strong> ss</a></li><li class="chapter-item expanded "><a href="network/tcpdump.html"><strong aria-hidden="true">10.2.</strong> tcpdump</a></li><li class="chapter-item expanded "><a href="network/tshark.html"><strong aria-hidden="true">10.3.</strong> tshark</a></li><li class="chapter-item expanded "><a href="network/firewall-cmd.html"><strong aria-hidden="true">10.4.</strong> firewall-cmd</a></li><li class="chapter-item expanded "><a href="network/nftables.html"><strong aria-hidden="true">10.5.</strong> nftables</a></li></ol></li><li class="chapter-item expanded "><a href="web/index.html"><strong aria-hidden="true">11.</strong> Web</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="web/html.html"><strong aria-hidden="true">11.1.</strong> html</a></li><li class="chapter-item expanded "><a href="web/css.html"><strong aria-hidden="true">11.2.</strong> css</a></li><li class="chapter-item expanded "><a href="web/chartjs.html"><strong aria-hidden="true">11.3.</strong> chartjs</a></li></ol></li><li class="chapter-item expanded "><a href="arch/index.html"><strong aria-hidden="true">12.</strong> Arch</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="arch/x86_64.html"><strong aria-hidden="true">12.1.</strong> x86_64</a></li><li class="chapter-item expanded "><a href="arch/armv8.html"><strong aria-hidden="true">12.2.</strong> armv8</a></li><li class="chapter-item expanded "><a href="arch/arm64.html"><strong aria-hidden="true">12.3.</strong> arm64</a></li><li class="chapter-item expanded "><a href="arch/armv7.html"><strong aria-hidden="true">12.4.</strong> armv7</a></li><li class="chapter-item expanded "><a href="arch/riscv.html"><strong aria-hidden="true">12.5.</strong> riscv</a></li></ol></li></ol>
+ <ol class="chapter"><li class="chapter-item expanded affix "><a href="intro.html">Introduction</a></li><li class="chapter-item expanded "><a href="shells/index.html"><strong aria-hidden="true">1.</strong> Shells</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="shells/zsh.html"><strong aria-hidden="true">1.1.</strong> zsh</a></li><li class="chapter-item expanded "><a href="shells/bash.html"><strong aria-hidden="true">1.2.</strong> bash</a></li><li class="chapter-item expanded "><a href="shells/fish.html"><strong aria-hidden="true">1.3.</strong> fish</a></li></ol></li><li class="chapter-item expanded "><a href="cli/index.html"><strong aria-hidden="true">2.</strong> CLI foo</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="cli/awk.html"><strong aria-hidden="true">2.1.</strong> awk</a></li><li class="chapter-item expanded "><a href="cli/sed.html"><strong aria-hidden="true">2.2.</strong> sed</a></li><li class="chapter-item expanded "><a href="cli/column.html"><strong aria-hidden="true">2.3.</strong> column</a></li><li class="chapter-item expanded "><a href="cli/sort.html"><strong aria-hidden="true">2.4.</strong> sort</a></li><li class="chapter-item expanded "><a href="cli/tr.html"><strong aria-hidden="true">2.5.</strong> tr</a></li><li class="chapter-item expanded "><a href="cli/tac.html"><strong aria-hidden="true">2.6.</strong> tac</a></li><li class="chapter-item expanded "><a href="cli/paste.html"><strong aria-hidden="true">2.7.</strong> paste</a></li></ol></li><li class="chapter-item expanded "><a href="tools/index.html"><strong aria-hidden="true">3.</strong> Tools</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="tools/tmux.html"><strong aria-hidden="true">3.1.</strong> tmux</a></li><li class="chapter-item expanded "><a href="tools/emacs.html"><strong aria-hidden="true">3.2.</strong> emacs</a></li><li class="chapter-item expanded "><a href="tools/gpg.html"><strong aria-hidden="true">3.3.</strong> gpg</a></li><li class="chapter-item expanded "><a href="tools/radare2.html"><strong aria-hidden="true">3.4.</strong> radare2</a></li><li class="chapter-item expanded "><a href="tools/qemu.html"><strong aria-hidden="true">3.5.</strong> qemu</a></li><li class="chapter-item expanded "><a href="tools/pacman.html"><strong aria-hidden="true">3.6.</strong> pacman</a></li><li class="chapter-item expanded "><a href="tools/dot.html"><strong aria-hidden="true">3.7.</strong> dot</a></li><li class="chapter-item expanded "><a href="tools/ffmpeg.html"><strong aria-hidden="true">3.8.</strong> ffmpeg</a></li><li class="chapter-item expanded "><a href="tools/gnuplot.html"><strong aria-hidden="true">3.9.</strong> gnuplot</a></li><li class="chapter-item expanded "><a href="tools/restic.html"><strong aria-hidden="true">3.10.</strong> restic</a></li><li class="chapter-item expanded "><a href="tools/qrencode.html"><strong aria-hidden="true">3.11.</strong> qrencode</a></li></ol></li><li class="chapter-item expanded "><a href="process/index.html"><strong aria-hidden="true">4.</strong> Process management & inspection</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="process/lsof.html"><strong aria-hidden="true">4.1.</strong> lsof</a></li><li class="chapter-item expanded "><a href="process/pidstat.html"><strong aria-hidden="true">4.2.</strong> pidstat</a></li><li class="chapter-item expanded "><a href="process/pgrep.html"><strong aria-hidden="true">4.3.</strong> pgrep</a></li><li class="chapter-item expanded "><a href="process/ps.html"><strong aria-hidden="true">4.4.</strong> ps</a></li><li class="chapter-item expanded "><a href="process/pmap.html"><strong aria-hidden="true">4.5.</strong> pmap</a></li><li class="chapter-item expanded "><a href="process/pstack.html"><strong aria-hidden="true">4.6.</strong> pstack</a></li><li class="chapter-item expanded "><a href="process/taskset.html"><strong aria-hidden="true">4.7.</strong> taskset</a></li><li class="chapter-item expanded "><a href="process/nice.html"><strong aria-hidden="true">4.8.</strong> nice</a></li></ol></li><li class="chapter-item expanded "><a href="trace_profile/index.html"><strong aria-hidden="true">5.</strong> Trace and Profile</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="trace_profile/time.html"><strong aria-hidden="true">5.1.</strong> time</a></li><li class="chapter-item expanded "><a href="trace_profile/strace.html"><strong aria-hidden="true">5.2.</strong> strace</a></li><li class="chapter-item expanded "><a href="trace_profile/ltrace.html"><strong aria-hidden="true">5.3.</strong> ltrace</a></li><li class="chapter-item expanded "><a href="trace_profile/perf.html"><strong aria-hidden="true">5.4.</strong> perf</a></li><li class="chapter-item expanded "><a href="trace_profile/oprofile.html"><strong aria-hidden="true">5.5.</strong> OProfile</a></li><li class="chapter-item expanded "><a href="trace_profile/callgrind.html"><strong aria-hidden="true">5.6.</strong> callgrind</a></li></ol></li><li class="chapter-item expanded "><a href="debug/index.html"><strong aria-hidden="true">6.</strong> Debug</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="debug/gdb.html"><strong aria-hidden="true">6.1.</strong> gdb</a></li><li class="chapter-item expanded "><a href="debug/gdbserver.html"><strong aria-hidden="true">6.2.</strong> gdbserver</a></li></ol></li><li class="chapter-item expanded "><a href="binary/index.html"><strong aria-hidden="true">7.</strong> Binary</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="binary/od.html"><strong aria-hidden="true">7.1.</strong> od</a></li><li class="chapter-item expanded "><a href="binary/xxd.html"><strong aria-hidden="true">7.2.</strong> xxd</a></li><li class="chapter-item expanded "><a href="binary/readelf.html"><strong aria-hidden="true">7.3.</strong> readelf</a></li><li class="chapter-item expanded "><a href="binary/objdump.html"><strong aria-hidden="true">7.4.</strong> objdump</a></li><li class="chapter-item expanded "><a href="binary/nm.html"><strong aria-hidden="true">7.5.</strong> nm</a></li></ol></li><li class="chapter-item expanded "><a href="development/index.html"><strong aria-hidden="true">8.</strong> Development</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="development/c++filt.html"><strong aria-hidden="true">8.1.</strong> c++filt</a></li><li class="chapter-item expanded "><a href="development/c++.html"><strong aria-hidden="true">8.2.</strong> c++</a></li><li class="chapter-item expanded "><a href="development/glibc.html"><strong aria-hidden="true">8.3.</strong> glibc</a></li><li class="chapter-item expanded "><a href="development/gcc.html"><strong aria-hidden="true">8.4.</strong> gcc</a></li><li class="chapter-item expanded "><a href="development/git.html"><strong aria-hidden="true">8.5.</strong> git</a></li><li class="chapter-item expanded "><a href="development/cmake.html"><strong aria-hidden="true">8.6.</strong> cmake</a></li><li class="chapter-item expanded "><a href="development/make.html"><strong aria-hidden="true">8.7.</strong> make</a></li><li class="chapter-item expanded "><a href="development/ld.so.html"><strong aria-hidden="true">8.8.</strong> ld.so</a></li><li class="chapter-item expanded "><a href="development/symbolver.html"><strong aria-hidden="true">8.9.</strong> symbol versioning</a></li><li class="chapter-item expanded "><a href="development/python.html"><strong aria-hidden="true">8.10.</strong> python</a></li><li class="chapter-item expanded "><a href="development/gcov.html"><strong aria-hidden="true">8.11.</strong> gcov</a></li><li class="chapter-item expanded "><a href="development/pgo.html"><strong aria-hidden="true">8.12.</strong> pgo</a></li></ol></li><li class="chapter-item expanded "><a href="linux/index.html"><strong aria-hidden="true">9.</strong> Linux</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="linux/systemd.html"><strong aria-hidden="true">9.1.</strong> systemd</a></li><li class="chapter-item expanded "><a href="linux/coredump.html"><strong aria-hidden="true">9.2.</strong> coredump</a></li><li class="chapter-item expanded "><a href="linux/ptrace_scope.html"><strong aria-hidden="true">9.3.</strong> ptrace_scope</a></li><li class="chapter-item expanded "><a href="linux/cryptsetup.html"><strong aria-hidden="true">9.4.</strong> cryptsetup</a></li><li class="chapter-item expanded "><a href="linux/swap.html"><strong aria-hidden="true">9.5.</strong> swap</a></li><li class="chapter-item expanded "><a href="linux/input.html"><strong aria-hidden="true">9.6.</strong> input</a></li><li class="chapter-item expanded "><a href="linux/acl.html"><strong aria-hidden="true">9.7.</strong> acl</a></li><li class="chapter-item expanded "><a href="linux/zfs.html"><strong aria-hidden="true">9.8.</strong> zfs</a></li><li class="chapter-item expanded "><a href="linux/cpufreq.html"><strong aria-hidden="true">9.9.</strong> cpufreq</a></li><li class="chapter-item expanded "><a href="linux/cups.html"><strong aria-hidden="true">9.10.</strong> cups</a></li></ol></li><li class="chapter-item expanded "><a href="network/index.html"><strong aria-hidden="true">10.</strong> Network</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="network/ssh.html"><strong aria-hidden="true">10.1.</strong> ssh</a></li><li class="chapter-item expanded "><a href="network/ss.html"><strong aria-hidden="true">10.2.</strong> ss</a></li><li class="chapter-item expanded "><a href="network/tcpdump.html"><strong aria-hidden="true">10.3.</strong> tcpdump</a></li><li class="chapter-item expanded "><a href="network/tshark.html"><strong aria-hidden="true">10.4.</strong> tshark</a></li><li class="chapter-item expanded "><a href="network/firewall-cmd.html"><strong aria-hidden="true">10.5.</strong> firewall-cmd</a></li><li class="chapter-item expanded "><a href="network/nftables.html"><strong aria-hidden="true">10.6.</strong> nftables</a></li></ol></li><li class="chapter-item expanded "><a href="web/index.html"><strong aria-hidden="true">11.</strong> Web</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="web/html.html"><strong aria-hidden="true">11.1.</strong> html</a></li><li class="chapter-item expanded "><a href="web/css.html"><strong aria-hidden="true">11.2.</strong> css</a></li><li class="chapter-item expanded "><a href="web/chartjs.html"><strong aria-hidden="true">11.3.</strong> chartjs</a></li></ol></li><li class="chapter-item expanded "><a href="arch/index.html"><strong aria-hidden="true">12.</strong> Arch</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="arch/x86_64.html"><strong aria-hidden="true">12.1.</strong> x86_64</a></li><li class="chapter-item expanded "><a href="arch/armv8.html"><strong aria-hidden="true">12.2.</strong> armv8</a></li><li class="chapter-item expanded "><a href="arch/arm64.html"><strong aria-hidden="true">12.3.</strong> arm64</a></li><li class="chapter-item expanded "><a href="arch/armv7.html"><strong aria-hidden="true">12.4.</strong> armv7</a></li><li class="chapter-item expanded "><a href="arch/riscv.html"><strong aria-hidden="true">12.5.</strong> riscv</a></li></ol></li></ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
@@ -1015,6 +1015,8 @@ status -f # abs path of current file
<li><a href="cli/./column.html">column</a></li>
<li><a href="cli/./sort.html">sort</a></li>
<li><a href="cli/./tr.html">tr</a></li>
+<li><a href="cli/./tac.html">tac</a></li>
+<li><a href="cli/./paste.html">paste</a></li>
</ul>
<div style="break-before: page; page-break-before: always;"></div><h1 id="awk1"><a class="header" href="#awk1">awk(1)</a></h1>
<pre><code class="language-markdown">awk [opt] program [input]
@@ -1346,6 +1348,33 @@ echo moose | tr -d 'os'
<pre><code class="language-sh">echo moooooossse | tr -s 'os'
# output: mose
</code></pre>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="tac1"><a class="header" href="#tac1">tac(1)</a></h1>
+<pre><code class="language-sh"># Reverse output lines of file(s) and concatenate (reverse of cat).
+tac FILE [FILE]
+
+echo -e 'aa\nbb\ncc\ndd' | tac
+# dd
+# cc
+# bb
+# aa
+</code></pre>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="paste1"><a class="header" href="#paste1">paste(1)</a></h1>
+<pre><code># Concatenate input files linewise and join them by a TAB char.
+
+paste FILE [FILE]
+ -d CHAR delimiter to join each line
+</code></pre>
+<h1 id="examples-5"><a class="header" href="#examples-5">Examples</a></h1>
+<pre><code class="language-sh"># Read two files.
+paste &lt;(echo -e 'a1\na2') &lt;(echo -e 'b1\nb2')
+a1 b1
+a2 b2
+
+# Can read from stdin.
+echo -e 'a1 a2\nb1 b2\nc1 c2\nd1 d2' | paste - -
+# a1 a2 b1 b2
+# c1 c2 d1 d2
+</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="tools"><a class="header" href="#tools">Tools</a></h1>
<ul>
<li><a href="tools/./tmux.html">tmux</a></li>
@@ -1770,7 +1799,7 @@ gpg --verify &lt;file&gt;.asc &lt;file&gt;
<li>http://keyserver.ubuntu.com</li>
<li>hkps://pgp.mailbox.org</li>
</ul>
-<h2 id="examples-5"><a class="header" href="#examples-5">Examples</a></h2>
+<h2 id="examples-6"><a class="header" href="#examples-6">Examples</a></h2>
<h3 id="list-basic-key-information-from-file-with-long-keyids"><a class="header" href="#list-basic-key-information-from-file-with-long-keyids">List basic key information from file with long keyids</a></h3>
<pre><code class="language-bash">gpg --keyid-format 0xlong &lt;key.asc&gt;
</code></pre>
@@ -1806,7 +1835,7 @@ gpg&gt; save
<pre><code class="language-markdown"> &gt; r2 -B &lt;baddr&gt; &lt;exe&gt; # open &lt;exe&gt; mapped to addr &lt;baddr&gt;
oob &lt;addr&gt; # reopen current file at &lt;baddr&gt;
</code></pre>
-<h1 id="examples-6"><a class="header" href="#examples-6">Examples</a></h1>
+<h1 id="examples-7"><a class="header" href="#examples-7">Examples</a></h1>
<h2 id="patch-file-alter-bytes"><a class="header" href="#patch-file-alter-bytes">Patch file (alter bytes)</a></h2>
<pre><code class="language-markdown"> &gt; r2 [-w] &lt;file&gt;
oo+ # re-open for write if -w was not passed
@@ -2206,6 +2235,9 @@ set title "the plot"
set xlabel "abc"
set ylabel "def"
+# Grid.
+set grind
+
# Output format, 'help set term' for all output formats.
set term svg
# Output file.
@@ -2310,14 +2342,16 @@ qrencode -t ansiutf8 'WIFI:S:&lt;wifiname&gt;;T:WPA2;P:&lt;wifipasswd&gt;;;'
# Generate picture for printing.
qrencode -t png -o wifi.png 'WIFI:S:&lt;wifiname&gt;;T:WPA2;P:&lt;wifipasswd&gt;;;'
</code></pre>
-<div style="break-before: page; page-break-before: always;"></div><h1 id="resource-analysis--monitor"><a class="header" href="#resource-analysis--monitor">Resource analysis &amp; monitor</a></h1>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="process-management--inspection"><a class="header" href="#process-management--inspection">Process management &amp; inspection</a></h1>
<ul>
-<li><a href="monitor/./lsof.html">lsof</a></li>
-<li><a href="monitor/./pidstat.html">pidstat</a></li>
-<li><a href="monitor/./pgrep.html">pgrep</a></li>
-<li><a href="monitor/./ps.html">ps</a></li>
-<li><a href="monitor/./pmap.html">pmap</a></li>
-<li><a href="monitor/./pstack.html">pstack</a></li>
+<li><a href="process/./lsof.html">lsof</a></li>
+<li><a href="process/./pidstat.html">pidstat</a></li>
+<li><a href="process/./pgrep.html">pgrep</a></li>
+<li><a href="process/./ps.html">ps</a></li>
+<li><a href="process/./pmap.html">pmap</a></li>
+<li><a href="process/./pstack.html">pstack</a></li>
+<li><a href="process/./taskset.html">taskset</a></li>
+<li><a href="process/./nice.html">nice</a></li>
</ul>
<div style="break-before: page; page-break-before: always;"></div><h1 id="lsof8"><a class="header" href="#lsof8">lsof(8)</a></h1>
<pre><code class="language-markdown">lsof
@@ -2347,7 +2381,7 @@ qrencode -t png -o wifi.png 'WIFI:S:&lt;wifiname&gt;;T:WPA2;P:&lt;wifipasswd&gt;
-s states (UDP)
Unbound, Idle
</code></pre>
-<h1 id="examples-7"><a class="header" href="#examples-7">Examples</a></h1>
+<h1 id="examples-8"><a class="header" href="#examples-8">Examples</a></h1>
<h2 id="file-flags"><a class="header" href="#file-flags">File flags</a></h2>
<p>Show open files with file flags for process:</p>
<pre><code class="language-markdown">lsof +fg -p &lt;pid&gt;
@@ -2448,7 +2482,8 @@ sigignore mask of ignored signals
sigmask mask of blocked signals
</code></pre>
<h2 id="example-use-output-for-scripting"><a class="header" href="#example-use-output-for-scripting">Example: Use output for scripting</a></h2>
-<pre><code class="language-sh">for tid in $(ps -o tid --no-header -T -p 31084); do
+<pre><code class="language-sh"># Print the cpu affinity for each thread of process 31084.
+for tid in $(ps -o tid --no-header -T -p 31084); do
taskset -c -p $tid;
done
</code></pre>
@@ -2474,6 +2509,60 @@ opts:
<pre><code class="language-markdown">pstack &lt;pid&gt;
Dump stack for all threads of process.
</code></pre>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="taskset1"><a class="header" href="#taskset1">taskset(1)</a></h1>
+<p>Set cpu affinity for new processes or already running ones.</p>
+<pre><code># Pin all (-a) tasks of new command on cores 0,1,2,4.
+taskset -ac 0-2,4 CMD [ARGS]
+
+# Pin all tasks of running PID onto cores 0,2,4.
+taskset -ac 0-5:2 -p PID
+</code></pre>
+<h3 id="example-4"><a class="header" href="#example-4">Example</a></h3>
+<p>Utility script to extract cpu lists grouped by the last-level-cache.</p>
+<pre><code class="language-python">import subprocess
+
+res = subprocess.run(["lscpu", "-p=cpu,cache"], capture_output=True, check=True)
+
+LLC2CPU = dict()
+
+for line in res.stdout.decode().splitlines():
+ if line.startswith("#"):
+ continue
+
+ cpu, cache = line.split(",")
+ llc = cache.split(":")[-1]
+
+ LLC2CPU.setdefault(llc, list()).append(int(cpu))
+
+LLC2RANGE = dict()
+
+for llc, cpus in LLC2CPU.items():
+ first_cpu = cpus[0]
+ prev_cpu = cpus[0]
+ for cpu in cpus[1:]:
+ if cpu != prev_cpu + 1:
+ LLC2RANGE.setdefault(llc, list()).append(f"{first_cpu}-{prev_cpu}")
+ # New range begins.
+ first_cpu = cpu
+ prev_cpu = cpu
+ # Trailing range.
+ LLC2RANGE.setdefault(llc, list()).append(f"{first_cpu}-{prev_cpu}")
+
+print(LLC2RANGE)
+</code></pre>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="nice1"><a class="header" href="#nice1">nice(1)</a></h1>
+<p>Adjust <code>niceness</code> of a new command or running process.</p>
+<p>Niceness influences the scheduling priority and ranges between:</p>
+<ul>
+<li><code>-20</code> most favorable</li>
+<li><code>19</code> least favorable</li>
+</ul>
+<pre><code class="language-sh"># Adjust niceness +5 for the launched process.
+nice -n 5 yes
+
+# Adjust niceness of running process.
+renice -n 5 -p PID
+</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="trace-and-profile"><a class="header" href="#trace-and-profile">Trace and Profile</a></h1>
<ul>
<li><a href="trace_profile/./time.html">time</a></li>
@@ -2517,7 +2606,7 @@ opts:
trace=signal ............... trace signal related syscalls
signal ..................... trace signals delivered to the process
</code></pre>
-<h1 id="examples-8"><a class="header" href="#examples-8">Examples</a></h1>
+<h1 id="examples-9"><a class="header" href="#examples-9">Examples</a></h1>
<p>Trace <code>open(2)</code> &amp; <code>socket(2)</code> syscalls for a running process + child processes:</p>
<pre><code class="language-markdown">strace -f -e trace=open,socket -p &lt;pid&gt;
</code></pre>
@@ -2535,7 +2624,7 @@ opts:
-l &lt;filter&gt; . show who calls into lib matched by &lt;filter&gt;
-C .......... demangle
</code></pre>
-<h1 id="example-4"><a class="header" href="#example-4">Example</a></h1>
+<h1 id="example-5"><a class="header" href="#example-5">Example</a></h1>
<p>List which program/libs call into <code>libstdc++</code>:</p>
<pre><code class="language-bash">ltrace -l '*libstdc++*' -C -o ltrace.log ./main
</code></pre>
@@ -2657,7 +2746,7 @@ perf script | FlameGraph/stackcollapse-perf.pl | FlameGraph/flamegraph.pl &gt; c
perf script --per-event-dump
# fold &amp; generate as above
</code></pre>
-<h2 id="examples-9"><a class="header" href="#examples-9">Examples</a></h2>
+<h2 id="examples-10"><a class="header" href="#examples-10">Examples</a></h2>
<h3 id="estimate-max-instructions-per-cycle"><a class="header" href="#estimate-max-instructions-per-cycle">Estimate max instructions per cycle</a></h3>
<pre><code class="language-c">#define NOP4 "nop\nnop\nnop\nnop\n"
#define NOP32 NOP4 NOP4 NOP4 NOP4 NOP4 NOP4 NOP4 NOP4
@@ -2682,7 +2771,7 @@ int main() {
<li><code>main -&gt; do_foo() -&gt; do_work()</code></li>
<li><code>main -&gt; do_bar() -&gt; do_work()</code></li>
</ul>
-<pre><code class="language-sh">perf report --stdio -g graph,callee
+<pre><code class="language-sh">perf report --stdio -g graph,caller
# Children Self Command Shared Object Symbols
# ........ ........ ....... .................... .................
@@ -3088,7 +3177,7 @@ thread name &lt;name&gt;
# cmds
end
</code></pre>
-<h1 id="examples-10"><a class="header" href="#examples-10">Examples</a></h1>
+<h1 id="examples-11"><a class="header" href="#examples-11">Examples</a></h1>
<h2 id="automatically-print-next-instr"><a class="header" href="#automatically-print-next-instr">Automatically print next instr</a></h2>
<p>When ever the debugee stops automatically print the memory at the current
instruction pointer (<code>$rip</code> x86) and format as instruction <code>/i</code>.</p>
@@ -3272,7 +3361,7 @@ executed. To workaround that bug one can create a wrapper function which calls
host:port
tty
</code></pre>
-<h2 id="example-5"><a class="header" href="#example-5">Example</a></h2>
+<h2 id="example-6"><a class="header" href="#example-6">Example</a></h2>
<pre><code class="language-markdown"># Start gdbserver.
gdbserver localhost:1234 /bin/ls
@@ -4926,7 +5015,7 @@ default:
<p>Outputs:</p>
<pre><code class="language-text">xfoox xbarx xbazx
</code></pre>
-<h2 id="examples-11"><a class="header" href="#examples-11">Examples</a></h2>
+<h2 id="examples-12"><a class="header" href="#examples-12">Examples</a></h2>
<h3 id="config-based-settings"><a class="header" href="#config-based-settings">Config based settings</a></h3>
<pre><code class="language-make">conf-y := default
conf-$(FOO) := $(conf-y) foo
@@ -5537,7 +5626,7 @@ link time <code>-lgcov</code>.</p>
generated for a single file for example such as</p>
<pre><code class="language-shell">gcov &lt;SRC FILE | OBJ FILE&gt;
</code></pre>
-<h2 id="example-6"><a class="header" href="#example-6">Example</a></h2>
+<h2 id="example-7"><a class="header" href="#example-7">Example</a></h2>
<pre><code class="language-cpp">#include &lt;cstdio&gt;
void tell_me(int desc) {
@@ -5752,6 +5841,8 @@ rather than re-write it.</p>
<li><a href="linux/./input.html">input</a></li>
<li><a href="linux/./acl.html">acl</a></li>
<li><a href="linux/./zfs.html">zfs</a></li>
+<li><a href="linux/./cpufreq.html">cpufreq</a></li>
+<li><a href="linux/./cups.html">cups</a></li>
</ul>
<div style="break-before: page; page-break-before: always;"></div><h1 id="systemd"><a class="header" href="#systemd">systemd</a></h1>
<h2 id="systemctl"><a class="header" href="#systemctl">systemctl</a></h2>
@@ -6423,13 +6514,196 @@ cache.</p>
└─zfs-import.target
└─zfs-import-cache.service
</code></pre>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="cpufreq"><a class="header" href="#cpufreq">cpufreq</a></h1>
+<p>The <code>sysfs</code> interface to cpu frequency settings and current state.</p>
+<pre><code>/sys/devices/system/cpu/cpu*/cpufreq/
+</code></pre>
+<h2 id="cpupower1"><a class="header" href="#cpupower1">cpupower(1)</a></h2>
+<p>A CLI interface to peek and poke the cpu frequency settings.</p>
+<pre><code># Show current frequency of all cores.
+cpupower -c all frequency-info -f -m
+
+# Show currently set frequency governor.
+cpupower -c all frequency-info -p
+
+# List available frequency governors.
+cpupower -c all frequency-info -g
+
+# Change frequency governor to POWERSAVE (eg).
+cpupower -c all frequency-set -g powersave
+</code></pre>
+<h2 id="example-8"><a class="header" href="#example-8">Example</a></h2>
+<p>Watch cpu frequency.</p>
+<pre><code class="language-sh">watch -n1 "cpupower -c all frequency-info -f -m | xargs -n2 -d'\n'"
+</code></pre>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="cups1"><a class="header" href="#cups1">cups(1)</a></h1>
+<h2 id="discover"><a class="header" href="#discover">Discover</a></h2>
+<pre><code class="language-sh"># List available printer driver.
+lpinfo -m
+
+# List available printer devices (connected + network).
+lpinfo -v
+</code></pre>
+<h2 id="install-printer"><a class="header" href="#install-printer">Install printer</a></h2>
+<pre><code class="language-sh"># Add device with PRINTER name, practically all modern network printer use the
+# everywhere driver.
+lpadmin -p PRINTER -m everywhere -v DEVICE_URI
+
+# Delete named printer.
+lpadmin -x PRINTER
+</code></pre>
+<h2 id="printer--printing-options"><a class="header" href="#printer--printing-options">Printer &amp; Printing options</a></h2>
+<pre><code class="language-sh"># List printer options.
+# CHECK printer-make-and-model
+lpoptions -p Brother_MFC_L2750DW_series
+# List printing options.
+lpoptions -p Brother_MFC_L2750DW_series -l
+
+# Set the default printer (stored in ~/.cups/lpoptions).
+lpoptions -d Brother_MFC_L2750DW_series
+</code></pre>
+<h2 id="inspect-installed-printer"><a class="header" href="#inspect-installed-printer">Inspect installed printer.</a></h2>
+<pre><code class="language-sh"># List default printer.
+lpstat -d
+# List installed printer (-l for longer output).
+lpstat -p
+# List printer accepting state.
+lpstat -a
+# List printer and the attached device (eg device uri).
+lpstat -v
+
+# List all states at once.
+lpstat -t
+</code></pre>
+<h2 id="print-jobs"><a class="header" href="#print-jobs">Print jobs</a></h2>
+<pre><code class="language-sh"># Create print job.
+lp -d PRINTER FILE
+ -n NUM number of copies
+ -P PAGE_LIST pages to print (eg 1,3-5,10)
+ -o media=a4 paper format
+ -o number-up={2|4|6|9|16} input pages per output page
+ -o sides=one-sided print front-page only
+ -o sides=two-sided-long-edge print duplex
+
+# Remove pending print job.
+lprm JOOBID
+</code></pre>
+<h2 id="control-printer"><a class="header" href="#control-printer">Control printer</a></h2>
+<pre><code class="language-sh"># Enable/disable printer.
+cupsenable PRINTER
+cupsdisable PRINTER
+
+# Accept/rejects jobs for printer.
+cupsaccept PRINTER
+cupsreject PRINTER
+</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="network-1"><a class="header" href="#network-1">Network</a></h1>
<ul>
+<li><a href="network/./ssh.html">ssh</a></li>
<li><a href="network/./tcpdump.html">tcpdump</a></li>
<li><a href="network/./tshark.html">tshark</a></li>
<li><a href="network/./firewall-cmd.html">firewall-cmd</a></li>
<li><a href="network/./nftables.html">nftables</a></li>
</ul>
+<div style="break-before: page; page-break-before: always;"></div><h1 id="ssh-1"><a class="header" href="#ssh-1">ssh (1)</a></h1>
+<h2 id="ssh-tunnel"><a class="header" href="#ssh-tunnel">ssh tunnel</a></h2>
+<p>Abbreviations used:</p>
+<ul>
+<li><code>LPORT</code>: local port</li>
+<li><code>LADDR</code>: local address</li>
+<li><code>RPORT</code>: remote port</li>
+<li><code>RADDR</code>: remote address</li>
+</ul>
+<p>The <code>-L</code> flag sets up a ssh tunnel to forward port <code>LPORT</code> on the local host to
+<code>RADDR:RPORT</code> via the machine <code>gateway</code> (ssh tunnel endpoint).</p>
+<pre><code class="language-sh"># Forward local port to remote port on gateway.
+ssh -L LPORT:RPORT gateway
+
+# Forward local port to remote port on remote address via gateway.
+ssh -L LPORT:RADDR:RPORT gateway
+</code></pre>
+<p>In this scenario, requests are issued on the local machine and target some
+remote resource, effectively making a remote resource accessible on the local
+machine, which may be hidden behind the tunnel endpoint (gateway).</p>
+<p>The <code>-R</code> flag sets up a ssh tunnel to expose the local port <code>LPORT</code> as <code>RPORT</code>
+on the remote machine <code>gateway</code>.</p>
+<pre><code class="language-sh"># Expose local port via remote port on gateway.
+ssh -R RPORT:LPORT gateway
+
+# Expose local port of machine with local address via remote port on gateway.
+ssh -R RPORT:LADDR:LPORT gateway
+</code></pre>
+<p>In this scenario, requests are issued on the gateway and target some resource
+in the local network, effectively exposing the local resource on the remote
+machine (gateway).</p>
+<p>The trick to memorize the syntax is to read the forwarding rules left
+(source) to right (destination) while <code>-L</code> means that requests are issued
+locally and <code>-R</code> means that requests are issued remotely.</p>
+<p>The following flags are useful for setting up ssh tunnels:</p>
+<ul>
+<li><code>-N</code> just stop before running the command on the remote side (w/o cmd dont
+drop into shell)</li>
+<li><code>-f</code> run <code>ssh</code> command in the background</li>
+</ul>
+<h3 id="example-9"><a class="header" href="#example-9">Example</a></h3>
+<pre><code class="language-sh"># Forward requests on localhost:8080 to moose:1234 and keep ssh in forground
+# but dont drop into a shell.
+ssh -N -L 8080:1234 moose
+
+# Forward requests on moose:80 to localhost:8080 and keep ssh in forground but
+# dont drop into a shell.
+ssh -N -R 80:8080 moose
+</code></pre>
+<h2 id="ssh-keys"><a class="header" href="#ssh-keys">ssh keys</a></h2>
+<p>Utility script to generate ssh key pairs.</p>
+<pre><code class="language-sh">NAME=${1:?Pass new keyname as first arg}
+
+TYPE=ed25519
+FILE=${HOME}/.ssh/${NAME}-${TYPE}
+
+if [[ -f ${FILE} || -f ${FILE}.pub ]]; then
+ echo "Key with name '${NAME}' already exists, remove following files explicitly:"
+ echo " ${FILE} ${FILE}.pub"
+ exit 1;
+fi
+
+set -x
+ssh-keygen -C "${NAME}.${USER}@${HOSTNAME}" -f ${FILE} -t ${TYPE} -a 100
+</code></pre>
+<blockquote>
+<p>In case one needs to generate many keys at one, one can provide a passphrase
+by <code>-N "toor"</code> or an empty one as <code>-N ""</code>.</p>
+</blockquote>
+<h2 id="ssh-config---sshconfig"><a class="header" href="#ssh-config---sshconfig">ssh config - <code>~/.ssh/config</code></a></h2>
+<p>Frequently used configs for single match.</p>
+<pre><code class="language-nginx"># When ssh-ing into FOO or BAR do it as user git with given key.
+host foo bar
+ user git
+ identityfile ~/.ssh/some-key
+
+# When ssh-ing into moose actually log into host with ip addr 1.2.3.4.
+# Can be used as alias for machines w/o DNS entries.
+host moose
+ user root
+ port 8022
+ hostname 1.2.3.4
+ identityfile ~/.ssh/some-key
+</code></pre>
+<p>Pattern matching and evaluation order.</p>
+<pre><code class="language-nginx"># For parameters, the first valued obtained will be used.
+# Therefore, more host-specific blocks should come first.
+
+host tree7
+ user banana
+
+hoste tree*
+ user cherry
+ # can reference matched hostname with %h
+ hostname %h.some-dns-path
+
+# ssh tree7 -&gt; banana@tree7.some-dns-path
+# ssh tree5 -&gt; cherry@tree5.some-dns-path
+</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="ss8"><a class="header" href="#ss8">ss(8)</a></h1>
<pre><code class="language-markdown">ss [option] [filter]
</code></pre>
@@ -6450,7 +6724,7 @@ cache.</p>
(EXPR) .............. Group exprs
</code></pre>
-<h1 id="examples-12"><a class="header" href="#examples-12">Examples</a></h1>
+<h1 id="examples-13"><a class="header" href="#examples-13">Examples</a></h1>
<p>Show all tcp IPv4 sockets connecting to port <code>443</code>:</p>
<pre><code class="language-markdown">ss -4 'dport 443'
</code></pre>
@@ -6460,7 +6734,7 @@ cache.</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="tcpdump1"><a class="header" href="#tcpdump1">tcpdump(1)</a></h1>
<h1 id="cli-3"><a class="header" href="#cli-3">CLI</a></h1>
<pre><code class="language-markdown">tcpdump [opts] -i &lt;if&gt; [&lt;filter&gt;]
- -n Don't covert host/port names.
+ -n Don't convert host/port names.
-w &lt;file|-&gt; Write pcap trace to file or stdout (-).
-r &lt;file&gt; Read &amp; parse pcap file.
</code></pre>
@@ -6475,7 +6749,7 @@ tcp/udp/icmp Filter for protocol.
<blockquote>
<p>Use <code>and/or/not</code> and <code>()</code> to build filter expressions.</p>
</blockquote>
-<h1 id="examples-13"><a class="header" href="#examples-13">Examples</a></h1>
+<h1 id="examples-14"><a class="header" href="#examples-14">Examples</a></h1>
<h2 id="capture-packets-from-remote-host"><a class="header" href="#capture-packets-from-remote-host">Capture packets from remote host</a></h2>
<pre><code class="language-makrdown"># -k: Start capturing immediately.
ssh &lt;host&gt; tcpdump -i any -w - | sudo wireshark -k -i -
@@ -6507,7 +6781,7 @@ tcp/udp/ssh/wg/... Filter for protocol.
<blockquote>
<p>Use <code>tshak -G</code> to list all fields that can be used in display filters.</p>
</blockquote>
-<h1 id="examples-14"><a class="header" href="#examples-14">Examples</a></h1>
+<h1 id="examples-15"><a class="header" href="#examples-15">Examples</a></h1>
<h2 id="capture-and-filter-packet-to-file"><a class="header" href="#capture-and-filter-packet-to-file">Capture and filter packet to file</a></h2>
<pre><code class="language-bash"># Capture TCP traffic with port 80 on interface eth0 to file.
sudo tshark -i eht0 -f 'tcp and port 80' -w tx.pcap
@@ -7297,6 +7571,25 @@ mov al, 0xaa
mov cx, 0x10
rep stosb
</code></pre>
+<h2 id="time-stamp-counter---rdtsc"><a class="header" href="#time-stamp-counter---rdtsc">Time stamp counter - <code>rdtsc</code></a></h2>
+<pre><code class="language-c">static inline uint64_t rdtsc() {
+ uint32_t eax, edx;
+ asm volatile("rdtsc" : "=d"(edx), "=a"(eax)::);
+ return (uint64_t)edx &lt;&lt; 32 | eax;
+}
+</code></pre>
+<blockquote>
+<p>Constant TSC behavior ensures that the duration of each clock tick is uniform
+and supports the use of the TSC as a wall clock timer even if the processor
+core changes frequency. This is the architectural behavior moving forward.</p>
+<ul>
+<li>18.17 TIME-STAMP COUNTER - <a href="https://software.intel.com/content/www/us/en/develop/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-3a-3b-3c-and-3d-system-programming-guide.html">intel64-vol3</a></li>
+</ul>
+</blockquote>
+<p>On linux one can check the <code>constant_tsc</code> cpu flag, to validate if the
+implemented TSC ticks with a constant frequency.</p>
+<pre><code class="language-sh">grep constant_tsc /proc/cpuinfo
+</code></pre>
<h2 id="sysv-x86_64-abi"><a class="header" href="#sysv-x86_64-abi"><a href="https://gitlab.com/x86-psABIs/x86-64-ABI">SysV x86_64 ABI</a></a></h2>
<h3 id="passing-arguments-to-functions"><a class="header" href="#passing-arguments-to-functions">Passing arguments to functions</a></h3>
<ul>