diff options
author | johannst <johannst@users.noreply.github.com> | 2024-08-27 22:25:00 +0000 |
---|---|---|
committer | johannst <johannst@users.noreply.github.com> | 2024-08-27 22:25:00 +0000 |
commit | 3b226d19bb19a87eb565f3e1d16e14f446b56e76 (patch) | |
tree | 0e5c8df4ad9797727adc1ca8a86b1b25eebb4f7a /print.html | |
parent | b00e3cd018cde863a28af849b06c37981d7e36cd (diff) | |
download | notes-3b226d19bb19a87eb565f3e1d16e14f446b56e76.tar.gz notes-3b226d19bb19a87eb565f3e1d16e14f446b56e76.zip |
deploy: 9b47b98b7c5efce0bf50d57aa5d7e374bcbabf23
Diffstat (limited to 'print.html')
-rw-r--r-- | print.html | 341 |
1 files changed, 317 insertions, 24 deletions
@@ -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 <(echo -e 'a1\na2') <(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 <file>.asc <file> <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 <key.asc> </code></pre> @@ -1806,7 +1835,7 @@ gpg> save <pre><code class="language-markdown"> > r2 -B <baddr> <exe> # open <exe> mapped to addr <baddr> oob <addr> # reopen current file at <baddr> </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"> > r2 [-w] <file> 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:<wifiname>;T:WPA2;P:<wifipasswd>;;' # Generate picture for printing. qrencode -t png -o wifi.png 'WIFI:S:<wifiname>;T:WPA2;P:<wifipasswd>;;' </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 & 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 & 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:<wifiname>;T:WPA2;P:<wifipasswd> -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 <pid> @@ -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 <pid> 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> & <code>socket(2)</code> syscalls for a running process + child processes:</p> <pre><code class="language-markdown">strace -f -e trace=open,socket -p <pid> </code></pre> @@ -2535,7 +2624,7 @@ opts: -l <filter> . show who calls into lib matched by <filter> -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 > c perf script --per-event-dump # fold & 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 -> do_foo() -> do_work()</code></li> <li><code>main -> do_bar() -> 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 <name> # 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 <SRC FILE | OBJ FILE> </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 <cstdio> 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 & 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 -> banana@tree7.some-dns-path +# ssh tree5 -> 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 <if> [<filter>] - -n Don't covert host/port names. + -n Don't convert host/port names. -w <file|-> Write pcap trace to file or stdout (-). -r <file> Read & 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 <host> 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 << 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> |