Linux 4.X Tracing Tools Using BPF Superpowers

Total Page:16

File Type:pdf, Size:1020Kb

Linux 4.X Tracing Tools Using BPF Superpowers Linux 4.x Tracing Tools Using BPF Superpowers Brendan Gregg, NeElix [email protected] December 4–9, 2016 | Boston, MA www.usenix.org/lisa16 #lisa16 Demo me GIVE ME 15 MINUTES AND I'LL CHANGE YOUR VIEW OF LINUX TRACING inspired by Greg Law's: Give me fiOeen minutes and I'll change your view of GDB Demo LISA 2014 perf-tools (Orace) LISA 2016 bcc tools (BPF) Wielding Superpowers WHAT DYNAMIC TRACING CAN DO Previously • Metrics were vendor chosen, closed source, and incomplete • The art of inference & making do # ps alx F S UID PID PPID CPU PRI NICE ADDR SZ WCHAN TTY TIME CMD 3 S 0 0 0 0 0 20 2253 2 4412 ? 186:14 swapper 1 S 0 1 0 0 30 20 2423 8 46520 ? 0:00 /etc/init 1 S 0 16 1 0 30 20 2273 11 46554 co 0:00 –sh […] Crystal Ball Observability Dynamic Tracing Linux Event Sources Event Tracing Efficiency Eg, tracing TCP retransmits Kernel Old way: packet capture tcpdump 1. read send 2. dump buffer receive Analyzer 1. read 2. process file system disks 3. print New way: dynamic tracing Tracer 1. configure tcp_retransmit_skb() 2. read New CLI Tools # biolatency Tracing block device I/O... Hit Ctrl-C to end. ^C usecs : count distribution 4 -> 7 : 0 | | 8 -> 15 : 0 | | 16 -> 31 : 0 | | 32 -> 63 : 0 | | 64 -> 127 : 1 | | 128 -> 255 : 12 |******** | 256 -> 511 : 15 |********** | 512 -> 1023 : 43 |******************************* | 1024 -> 2047 : 52 |**************************************| 2048 -> 4095 : 47 |********************************** | 4096 -> 8191 : 52 |**************************************| 8192 -> 16383 : 36 |************************** | 16384 -> 32767 : 15 |********** | 32768 -> 65535 : 2 |* | 65536 -> 131071 : 2 |* | New Visualizaons and GUIs NeElix Intended Usage Self-service UI: Flame Graphs Tracing Reports … should be open sourced; you may also build/buy your own Conquer Performance Measure anything Introducing BPF BPF TRACING A Linux Tracing Timeline • 1990’s: Stac tracers, prototype dynamic tracers • 2000: LTT + DProbes (dynamic tracing; not integrated) • 2004: kprobes (2.6.9) • 2005: DTrace (not Linux), SystemTap (out-of-tree) • 2008: Orace (2.6.27) • 2009: perf (2.6.31) • 2009: tracepoints (2.6.32) • 2010-2016: Orace & perf_events enhancements • 2014-2016: BPF patches also: LTTng, ktap, sysdig, ... Ye Olde BPF Berkeley Packet Filter # tcpdump host 127.0.0.1 and port 22 -d (000) ldh [12] (001) jeq #0x800 jt 2 jf 18 (002) ld [26] (003) jeq #0x7f000001 jt 6 jf 4 (004) ld [30] (005) jeq #0x7f000001 jt 6 jf 18 (006) ldb [23] (007) jeq #0x84 jt 10 jf 8 (008) jeq #0x6 jt 10 jf 9 (009) jeq #0x11 jt 10 jf 18 (010) ldh [20] (011) jset #0x1fff jt 18 jf 12 (012) ldxb 4*([14]&0xf) (013) ldh [x + 14] (014) jeq #0x16 jt 17 jf 15 (015) ldh [x + 16] (016) jeq #0x16 jt 17 jf 18 (017) ret #65535 (018) ret #0 BPF Enhancements by Linux Version • 3.18: bpf syscall eg, Ubuntu: • 3.19: sockets • 4.1: kprobes • 4.4: bpf_perf_event_output 16.04 • 4.6: stack traces • 4.7: tracepoints 16.10 • 4.9: profiling Enhanced BPF is in Linux BPF • aka eBPF == enhanced Berkeley Packet Filter – Lead developer: Alexei Starovoitov (Facebook) • Many uses – Virtual networking – Security – Programmac tracing • Different front-ends – C, perf, bcc, ply, … BPF mascot BPF for Tracing User Program Kernel 1. generate verifier BPF bytecode kprobes 2. load BPF uprobes per- event 3. perf_output tracepoints data 3. async stasGcs maps read Raw BPF samples/bpf/sock_example.c 87 lines truncated C/BPF samples/bpf/tracex1_kern.c 58 lines truncated bcc • BPF Compiler Collecon Tracing layers: – hrps://github.com/iovisor/bcc – Lead developer: Brenden Blanco bcc tool bcc tool … (PlumGRID) • Includes tracing tools bcc … • Front-ends Python lua front-ends – Python user – Lua kernel Kernel – C helper libraries BPF Events bcc/BPF bcc examples/tracing/bitehist.py enre program ply/BPF hps://github.com/wkz/ply/blob/master/README.md enre program The Tracing Landscape, Dec 2016 (my opinion) dtrace4L. ply/BPF (less brutal) ktap sysdig perf stap Orace bcc/BPF Ease of use (alpha) (mature) C/BPF Stage of Development Raw BPF (brutal) Scope & Capability State of BPF, Dec 2016 State of bcc, Dec 2016 1. Dynamic tracing, kernel-level (BPF support for kprobes) 1. Stac tracing, user-level (USDT probes via uprobes) 2. Dynamic tracing, user-level (BPF support for uprobes) 2. Stac tracing, dynamic USDT (needs library support) 3. Stac tracing, kernel-level (BPF support for tracepoints) 3. Debug output (Python with BPF.trace_pipe() and 4. Timed sampling events (BPF with perf_event_open) BPF.trace_fields()) 5. PMC events (BPF with perf_event_open) 4. Per-event output (BPF_PERF_OUTPUT macro and 6. Filtering (via BPF programs) BPF.open_perf_buffer()) 7. Debug output (bpf_trace_printk()) 5. Interval output (BPF.get_table() and table.clear()) 8. Per-event output (bpf_perf_event_output()) 6. Histogram prinGng (table.print_log2_hist()) 9. Basic variables (global & per-thread variables, via BPF maps) 7. C struct navigaon, kernel-level (maps to bpf_probe_read()) 10. Associave arrays (via BPF maps) 8. Symbol resoluon, kernel-level (ksym(), ksymaddr()) 11. Frequency counGng (via BPF maps) 9. Symbol resoluon, user-level (usymaddr()) 12. Histograms (power-of-2, linear, and custom, via BPF maps) 10. BPF tracepoint support (via TRACEPOINT_PROBE) 11. BPF stack trace support (incl. walk method for stack frames) 13. Timestamps and Gme deltas (bpf_kGme_get_() and BPF) 14. Stack traces, kernel (BPF stackmap) 12. Examples (under /examples) 15. Stack traces, user (BPF stackmap) 13. Many tools (/tools) 16. Overwrite ring buffers 14. Tutorials (/docs/tutorial*.md) 17. String factory (stringmap) 15. Reference guide (/docs/reference_guide.md) 18. OpGonal: bounded loops, < and <=, … 16. Open issues: (hrps://github.com/iovisor/bcc/issues) done not yet For end-users HOW TO USE BCC/BPF Installaon hrps://github.com/iovisor/bcc/blob/master/INSTALL.md • eg, Ubuntu Xenial: # echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | \ sudo tee /etc/apt/sources.list.d/iovisor.list # sudo apt-get update # sudo apt-get install bcc-tools – puts tools in /usr/share/bcc/tools, and tools/old for older kernels – 16.04 is good, 16.10 berer: more tools work – bcc should also arrive as an official Ubuntu snap Pre-bcc Performance Checklist 1. uptime 2. dmesg | tail 3. vmstat 1 4. mpstat -P ALL 1 5. pidstat 1 6. iostat -xz 1 7. free -m 8. sar -n DEV 1 9. sar -n TCP,ETCP 1 10. top hp://techblog.neElix.com/2015/11/linux-performance-analysis-in-60s.html bcc General Performance Checklist 1. execsnoop 2. opensnoop 3. ext4slower (…) 4. biolatency 5. biosnoop 6. cachestat 7. tcpconnect 8. tcpaccept 9. tcpretrans 10. gethostlatency 11. runqlat 12. profile 1. execsnoop # execsnoop PCOMM PID RET ARGS bash 15887 0 /usr/bin/man ls preconv 15894 0 /usr/bin/preconv -e UTF-8 man 15896 0 /usr/bin/tbl man 15897 0 /usr/bin/nroff -mandoc -rLL=169n -rLT=169n -Tutf8 man 15898 0 /usr/bin/pager -s nroff 15900 0 /usr/bin/locale charmap nroff 15901 0 /usr/bin/groff -mtty-char -Tutf8 -mandoc -rLL=169n -rLT=169n groff 15902 0 /usr/bin/troff -mtty-char -mandoc -rLL=169n -rLT=169n -Tutf8 groff 15903 0 /usr/bin/grotty […] 2. opensnoop # opensnoop PID COMM FD ERR PATH 27159 catalina.sh 3 0 /apps/tomcat8/bin/setclasspath.sh 4057 redis-server 5 0 /proc/4057/stat 2360 redis-server 5 0 /proc/2360/stat 30668 sshd 4 0 /proc/sys/kernel/ngroups_max 30668 sshd 4 0 /etc/group 30668 sshd 4 0 /root/.ssh/authorized_keys 30668 sshd 4 0 /root/.ssh/authorized_keys 30668 sshd -1 2 /var/run/nologin 30668 sshd -1 2 /etc/nologin 30668 sshd 4 0 /etc/login.defs 30668 sshd 4 0 /etc/passwd 30668 sshd 4 0 /etc/shadow 30668 sshd 4 0 /etc/localtime 4510 snmp-pass 4 0 /proc/cpuinfo […] 3. ext4slower # ext4slower 1 Tracing ext4 operations slower than 1 ms TIME COMM PID T BYTES OFF_KB LAT(ms) FILENAME 06:49:17 bash 3616 R 128 0 7.75 cksum 06:49:17 cksum 3616 R 39552 0 1.34 [ 06:49:17 cksum 3616 R 96 0 5.36 2to3-2.7 06:49:17 cksum 3616 R 96 0 14.94 2to3-3.4 06:49:17 cksum 3616 R 10320 0 6.82 411toppm 06:49:17 cksum 3616 R 65536 0 4.01 a2p 06:49:17 cksum 3616 R 55400 0 8.77 ab 06:49:17 cksum 3616 R 36792 0 16.34 aclocal-1.14 06:49:17 cksum 3616 R 15008 0 19.31 acpi_listen 06:49:17 cksum 3616 R 6123 0 17.23 add-apt-repository 06:49:17 cksum 3616 R 6280 0 18.40 addpart 06:49:17 cksum 3616 R 27696 0 2.16 addr2line 06:49:17 cksum 3616 R 58080 0 10.11 ag […] also: btrfsslower, xfsslower, zfslower 4. biolatency # biolatency -mT 1 Tracing block device I/O... Hit Ctrl-C to end. 06:20:16 msecs : count distribution 0 -> 1 : 36 |**************************************| 2 -> 3 : 1 |* | 4 -> 7 : 3 |*** | 8 -> 15 : 17 |***************** | 16 -> 31 : 33 |********************************** | 32 -> 63 : 7 |******* | 64 -> 127 : 6 |****** | […] 5. biosnoop # biosnoop TIME(s) COMM PID DISK T SECTOR BYTES LAT(ms) 0.000004001 supervise 1950 xvda1 W 13092560 4096 0.74 0.000178002 supervise 1950 xvda1 W 13092432 4096 0.61 0.001469001 supervise 1956 xvda1 W 13092440 4096 1.24 0.001588002 supervise 1956 xvda1 W 13115128 4096 1.09 1.022346001 supervise 1950 xvda1 W 13115272 4096 0.98 1.022568002 supervise 1950 xvda1 W 13188496 4096 0.93 1.023534000 supervise 1956 xvda1 W 13188520 4096 0.79 1.023585003 supervise 1956 xvda1 W 13189512 4096 0.60 2.003920000 xfsaild/md0 456 xvdc W 62901512 8192 0.23 2.003931001 xfsaild/md0 456 xvdb W 62901513 512 0.25 2.004034001 xfsaild/md0 456 xvdb W 62901520 8192 0.35 2.004042000 xfsaild/md0 456 xvdb W 63542016 4096 0.36 2.004204001 kworker/0:3 26040 xvdb W 41950344 65536 0.34 2.044352002 supervise 1950 xvda1 W 13192672 4096 0.65 […] 6.
Recommended publications
  • UNIX Shell Programming (15CS35) Solution Internal Assessment
    UNIX Shell Programming (15CS35) Solution Internal Assessment- II November - 2016 1. Explain significance of following commands (2x5=10 M) i. cp ?????? progs Wild card ? matches any single character, hence the above command (cp) copies files whose names are six in length to progs directory ii. ls *.[xyz]* Wild card * matches any number of characters, hence the above command (ls) lists all the files having extension as either x, or y or z. iii. ls jones[0-9][0- 9][0-9] In the above command the character class[0-9] matches any digit between 0 to 9. Hence the above command lists all the files beginning with jones and having last three characters as any digit between 0 to 9. iv. echo * The above command lists all the file in the current directory. v. cp foo foo* The above command copies the file foo to file called foo*. Here the wild card * loses its meaning. 1. Write UNIX commands for the following (2 X 5= 10 M) i. Find and replace all the occurrences of unix with UNIX in the file after confirming the user. : 1,$s/unix/UNIX/gc ii. List all the files in the current directory which names are having exactly 5 characters and any number of characters in their extension. ls ?????.* iii. Copy all files stored in /home/vtu with .c, .cpp and .java extensions to progs sub- directory in current directory cp /home/vtu/*.{c,cpp,java} ./progs iv. Delete all files containing agra or agar in their file names. rm *ag[ra][ar]* v.
    [Show full text]
  • Moxa Nport Real TTY Driver for Arm-Based Platform Porting Guide
    Moxa NPort Real TTY Driver for Arm-based Platform Porting Guide Moxa Technical Support Team [email protected] Contents 1 Introduction ...................................................................................2 2 Porting to the Moxa UC-Series—Arm-based Computer ....................2 2.1 Build binaries on a general Arm platform ...................................................... 2 2.2 Cross-compiler and the Real TTY driver ........................................................ 3 2.3 Moxa cross-compiling interactive script......................................................... 4 2.4 Manually build the Real TTY driver with a cross-compiler ................................ 5 2.5 Deploy cross-compiled binary to target......................................................... 8 3 Porting to Raspberry Pi OS .............................................................9 4 Porting to the Yocto Project on Raspberry Pi ................................ 10 4.1 Prerequisite............................................................................................... 10 4.2 Create a Moxa layer for the Yocto Project..................................................... 11 4.3 Install a Moxa layer into the Yocto Project.................................................... 17 4.4 Deploy the Yocto image in Raspberry Pi ....................................................... 17 4.5 Start the Real TTY driver in Raspberry Pi ..................................................... 18 4.6 Set the default tty mapping to the Real TTY configuration ............................
    [Show full text]
  • Printing Printf: Formatted Printing
    Printing printf: formatted printing So far we have just been copying stuff from standard-in, files, pipes, etc to the screen or another file. Say I have a file with names and phone numbers. I would like to print it out with vertically aligned columns. (so my printout is not in the same format as the input file) File contents: Desired display: Bob 4929 Bob 4929 Chuck 4882 Chuck 4882 printf is a command from the C programming language to control printing. Shell script #!/bin/bash printf "Hello world.\n" a=`echo Hello world. | wc | nawk '{print $2}' ` printf "This phrase contains %d words\n" $a Run it alpaca.ceri.memphis.edu512:> printex.sh Hello world. This phrase contains 2 words alpaca.ceri.memphis.edu513:> #!/bin/bash printf "Hello world.\n" a=`echo Hello world. | wc | nawk '{print $2}' ` printf "This phrase contains %d words\n" $a We need the double quotes “ . “ to define an argument (the stuff inside the quotes) for printf. #!/bin/bash printf "Hello world.\n" a=`echo Hello world. | wc | nawk '{print $2}' ` printf "This phrase contains %d words\n" $a The argument in double quotes has - Regular text (“Hello world”, “This text contains “) - Some funny new thing - %d – a format specifier. - The already known specification for a new line - \n #!/bin/bash printf "Hello world.\n" a=`echo Hello world. | wc | nawk '{print $2}' ` printf "This phrase contains %d words\n" $a We also have another argument, the $a, which is a shell variable, at the end. Note that the items are delimited with spaces, not commas.
    [Show full text]
  • Unix Commands (09/04/2014)
    Unix Commands (09/04/2014) • Access control – login <login_name> – exit – passwd <login_name> – yppassswd <loginname> – su – • Login as Super user – su <login> • Login as user <login> • Root Prompt – [root@localhost ~] # • User Prompt – [bms@raxama ~] $ On Line Documentation – man <command/topic> – info <command/topic> • Working with directories – mkdir –p <subdir> ... {-p create all directories in path if not present} mkdir –p /2015/Jan/21/14 will create /2015, Jan, 21 & 14 in case any of these is absent – cd <dir> – rm -r <subdir> ... Man Pages • 1 Executable programs or shell commands • 2 System calls (functions provided by the kernel) • 3 Library calls (functions within program libraries) • 4 Special files (usually found in /dev) • 5 File formats and conventions eg /etc/passwd • 6 Games • 7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) • 8 System administration commands (usually only for root) • 9 Kernel routines [Non standard] – man grep, {awk,sed,find,cut,sort} – man –k mysql, man –k dhcp – man crontab ,man 5 crontab – man printf, man 3 printf – man read, man 2 read – man info Runlevels used by Fedora/RHS Refer /etc/inittab • 0 - halt (Do NOT set initdefault to this) • 1 - Single user mode • 2 - Multiuser, – without NFS (The same as 3, if you do not have networking) • 3 - Full multi user mode w/o X • 4 - unused • 5 - X11 • 6 - reboot (Do NOT set init default to this) – init 6 {Reboot System} – init 0 {Halt the System} – reboot {Requires Super User} – <ctrl> <alt> <del> • in tty[2-7] mode – tty switching • <ctrl> <alt> <F1-7> • In Fedora 10 tty1 is X.
    [Show full text]
  • Gnu Coreutils Core GNU Utilities for Version 5.93, 2 November 2005
    gnu Coreutils Core GNU utilities for version 5.93, 2 November 2005 David MacKenzie et al. This manual documents version 5.93 of the gnu core utilities, including the standard pro- grams for text and file manipulation. Copyright c 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”. Chapter 1: Introduction 1 1 Introduction This manual is a work in progress: many sections make no attempt to explain basic concepts in a way suitable for novices. Thus, if you are interested, please get involved in improving this manual. The entire gnu community will benefit. The gnu utilities documented here are mostly compatible with the POSIX standard. Please report bugs to [email protected]. Remember to include the version number, machine architecture, input files, and any other information needed to reproduce the bug: your input, what you expected, what you got, and why it is wrong. Diffs are welcome, but please include a description of the problem as well, since this is sometimes difficult to infer. See section “Bugs” in Using and Porting GNU CC. This manual was originally derived from the Unix man pages in the distributions, which were written by David MacKenzie and updated by Jim Meyering.
    [Show full text]
  • Processes in Linux/Unix
    Processes in Linux/Unix A program/command when executed, a special instance is provided by the system to the process. This instance consists of all the services/resources that may be utilized by the process under execution. • Whenever a command is issued in unix/linux, it creates/starts a new process. For example, pwd when issued which is used to list the current directory location the user is in, a process starts. • Through a 5 digit ID number unix/linux keeps account of the processes, this number is call process id or pid. Each process in the system has a unique pid. • Used up pid’s can be used in again for a newer process since all the possible combinations are used. • At any point of time, no two processes with the same pid exist in the system because it is the pid that Unix uses to track each process. Initializing a process A process can be run in two ways: 1. Foreground Process : Every process when started runs in foreground by default, receives input from the keyboard and sends output to the screen. When issuing pwd command $ ls pwd Output: $ /home/geeksforgeeks/root When a command/process is running in the foreground and is taking a lot of time, no other processes can be run or started because the prompt would not be available until the program finishes processing and comes out. 2. Backround Process : It runs in the background without keyboard input and waits till keyboard input is required. Thus, other processes can be done in parallel with the process running in background since they do not have to wait for the previous process to be completed.
    [Show full text]
  • Systems Supplement for COP 3601
    Systems Guide for COP 3601: Introduction to Systems Software Charles N. Winton Department of Computer and Information Sciences University of North Florida 2010 Chapter 1 A Basic Guide for the Unix Operating System 1. 1 Using the Unix On-line Manual Pages Facility The following are some of the Unix commands for which you may display manual pages: cal cat cd chmod cp cut date echo egrep ex fgrep file find gcc gdb grep kill less ln locate ls mail make man mesg mkdir mv nohup nl passwd pr ps pwd rm rmdir set sleep sort stty tail tee time touch tr tty uname umask unset vim wall wc which who whoami write For example, to display the manual pages for the command "cp" enter man cp Note that you may also enter man man to find out more about the "man" command. In addition there may be commands unique to the local environment with manual pages; e.g., man turnin accesses a manual page for a project submission utility named Aturnin@ that has been added to the system. If you enter a command from the Unix prompt that requires an argument, the system will recognize that the command is incomplete and respond with an error message. For example, if the command "cp" had been entered at the Unix prompt the system would respond with the information such as shown below: cp: missing file arguments Try `cp --help' for more information. The "cp" command is a copy command. If the arguments which tell the command which file to copy and where to locate the copied file are missing, then the usage error message is generated.
    [Show full text]
  • Tips for Riding Metro for People with Disabilities and Senior
    50.173 2/18 50.173 [email protected]. purchase one, call 202-962-2700 or email email or 202-962-2700 call one, purchase Metrobuses. Reduced Fare SmarTrip Fare Reduced ID and how to to how and ID disabilities. ® points on most most on points To find out if you’re eligible for a Metro Metro a for eligible you’re if out find To providing Metro services to individuals with with individuals to services Metro providing Eligibility Certification and Outreach at 202-962-2703. 202-962-2703. at Outreach and Certification Eligibility and transfer transfer and operate vehicles and equipment when when equipment and vehicles operate about Metro’s free travel training, Contact the Office of of Office the Contact training, travel free Metro’s about for locations. for intersections intersections don’t know how, let us show them. For more information information more For them. show us let how, know don’t sensitivity training and are trained to to trained are and training sensitivity Prince George’s counties. See wmata.com wmata.com See counties. George’s Prince announce stops, stops, announce who doesn’t use Metrobus or Metrorail because they they because Metrorail or Metrobus use doesn’t who Managers and Train Operators receive receive Operators Train and Managers select public libraries in Montgomery and and Montgomery in libraries public select audio systems systems audio If you know a senior citizen or someone with a disability disability a with someone or citizen senior a know you If Metrobus Operators and Metrorail Station Station Metrorail and Operators Metrobus at all Metro sales offices, transit stores and and stores transit offices, sales Metro all at Digital signs and and signs Digital The benefits are life-changing.
    [Show full text]
  • Shell Scripting
    Shell Scripting Alexander B. Pacheco LTS Research Computing Outline 1 Introduction Types of Shell Variables File Permissions Input and Output 2 Shell Scripting Getting Started with Writing Simple Scripts Arithmetic Operations Flow Control Arrays Command Line Arguments Functions 3 Unix Utilities grep sed 4 awk programming 5 Wrap Up 2 / 76 Introduction Introduction What is a SHELL The command line interface is the primary interface to Linux/Unix operating systems. Shells are how command-line interfaces are implemented in Linux/Unix. Each shell has varying capabilities and features and the user should choose the shell that best suits their needs. The shell is simply an application running on top of the kernel and provides a powerful interface to the system. her Softwa Ot re Shell Kernel rdwa a r e H 4 / 76 Types of Shell sh : Bourne Shell Developed by Stephen Bourne at AT&T Bell Labs csh : C Shell Developed by Bill Joy at University of California, Berkeley ksh : Korn Shell Developed by David Korn at AT&T Bell Labs backward-compatible with the Bourne shell and includes many features of the C shell bash : Bourne Again Shell Developed by Brian Fox for the GNU Project as a free software replacement for the Bourne shell (sh). Default Shell on Linux and Mac OSX The name is also descriptive of what it did, bashing together the features of sh, csh and ksh tcsh : TENEX C Shell Developed by Ken Greer at Carnegie Mellon University It is essentially the C shell with programmable command line completion, command-line editing, and a few other features.
    [Show full text]
  • CIS18A: Introduction to Linux/Unix CLASSROOM ATC
    http://voyager.deanza.fhda.edu/~lalitha/cis18a/cis18a.html CIS18A: Introduction to Linux/Unix CLASSROOM ATC 204 WINTER 2015 : Section INFO: 00444 CIS -018A-61Y College academic Calendar: Winter 2015 http://deanza.fhda.edu/calendar/winterdates.html Instructor Information Name: Lalitha Krishnamurthy Office Hours: Not applicable ie None Email: krishnamurthylalitha at fhda dot edu Online Lab Hours: Wednesdays 845PM-10PM Lecture timings for CIS18A : M/W 6 PM - 750 PM Course Description This course is designed to discuss Linux/Unix Operating environment and its features. Linux/Unix commands, file structure, Regular expressions, shell features will be discussed Introduction to the features of the UNIX/LINUX operating system including text editing, text file manipulation, electronic mail, Internet utilities, directory structures, input/output handling, and shell features are part of the course curriculum CIS18A Student Learning Outcome Statements (SLO) Use the Unix/Linux Operating System utilities and shell features for basic file manipulation, networking, and communication. Course Objectives Edit text using the vi editor Maintain file and directory system Establish security and file permission, Perform basic file maintenance and use information utilities Utilize the shells Run shell commands, Implement quoting rules Communicate with email and communication utilities Apply filters and use implement basic regular expression Use basic utilities to explore system data, user data, and common tasks: exit, passwd, who, whoami, finger, w, tty, stty, uname, clear,
    [Show full text]
  • GPL-3-Free Replacements of Coreutils 1 Contents
    GPL-3-free replacements of coreutils 1 Contents 2 Coreutils GPLv2 2 3 Alternatives 3 4 uutils-coreutils ............................... 3 5 BSDutils ................................... 4 6 Busybox ................................... 5 7 Nbase .................................... 5 8 FreeBSD ................................... 6 9 Sbase and Ubase .............................. 6 10 Heirloom .................................. 7 11 Replacement: uutils-coreutils 7 12 Testing 9 13 Initial test and results 9 14 Migration 10 15 Due to the nature of Apertis and its target markets there are licensing terms that 1 16 are problematic and that forces the project to look for alternatives packages. 17 The coreutils package is good example of this situation as its license changed 18 to GPLv3 and as result Apertis cannot provide it in the target repositories and 19 images. The current solution of shipping an old version which precedes the 20 license change is not tenable in the long term, as there are no upgrades with 21 bugfixes or new features for such important package. 22 This situation leads to the search for a drop-in replacement of coreutils, which 23 need to provide compatibility with the standard GNU coreutils packages. The 24 reason behind is that many other packages rely on the tools it provides, and 25 failing to do that would lead to hard to debug failures and many custom patches 26 spread all over the archive. In this regard the strict requirement is to support 27 the features needed to boot a target image with ideally no changes in other 28 components. The features currently available in our coreutils-gplv2 fork are a 29 good approximation. 30 Besides these specific requirements, the are general ones common to any Open 31 Source Project, such as maturity and reliability.
    [Show full text]
  • Dyalog for UNIX UI Guide
    Dyalog for UNIX UI Guide Dyalog version 18.0 The tool of thought for software solutions Dyalog is a trademark of Dyalog Limited Copyright © 1982-2020 by Dyalog Limited All rights reserved. Dyalog for UNIX UI Guide Dyalog version 18.0 Document Revision: 20210429_180 Unless stated otherwise, all examples in this document assume that ⎕IO ⎕ML ← 1 No part of this publication may be reproduced in any form by any means without the prior written permission of Dyalog Limited. Dyalog Limited makes no representations or warranties with respect to the contents hereof and specifically disclaims any implied warranties of merchantability or fitness for any particular purpose. Dyalog Limited reserves the right to revise this publication without notification. email: [email protected] https://www.dyalog.com TRADEMARKS: SQAPL is copyright of Insight Systems ApS. Array Editor is copyright of davidliebtag.com Raspberry Pi is a trademark of the Raspberry Pi Foundation. Oracle®, Javascript™ and Java™ are registered trademarks of Oracle and/or its affiliates. UNIX® is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Limited. Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries. Windows® is a registered trademark of Microsoft Corporation in the United States and other countries. macOS® and OS X® (operating system software) are trademarks of Apple Inc., registered in the U.S. and other countries. All other trademarks and copyrights are acknowledged. iii Contents Overview
    [Show full text]