SlideShare a Scribd company logo
1 of 171
Download to read offline
http://bit.ly/33NpWEk
Linux SystemsLinux Systems
TroubleshootingTroubleshooting
Thomas UphillThomas Uphill
thomas@uphillian.comthomas@uphillian.com
http://bit.ly/33NpWEk
MeMe
consulting@uphillian.comconsulting@uphillian.com
http://bit.ly/33NpWEk
ResourcesResources
tutorial.mdtutorial.md
https://github.com/uphillian/lisa2019https://github.com/uphillian/lisa2019
https://github.com/uphillian/troubleshootinglinuxhttps://github.com/uphillian/troubleshootinglinux
http://bit.ly/33NpWEk
A storyA story
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
DB
http://bit.ly/33NpWEk
DB ⇨
http://bit.ly/33NpWEk
DB ⇨ gethostname
http://bit.ly/33NpWEk
DB ⇨ gethostname
http://bit.ly/33NpWEk
DB ⇨ gethostname
Backup
http://bit.ly/33NpWEk
DB ⇨ gethostname
Backup ⇨
http://bit.ly/33NpWEk
DB ⇨ gethostname
Backup ⇨ gethostname
http://bit.ly/33NpWEk
DB ⇨ gethostname
Backup ⇨ gethostname
http://bit.ly/33NpWEk
DB ⇨ gethostname
Backup ⇨ gethostname
http://bit.ly/33NpWEk
DB ⇨ gethostname
Backup ⇨ gethostname
http://bit.ly/33NpWEk
DB ⇨ gethostname
Backup ⇨ gethostname
http://bit.ly/33NpWEk
Where to start?Where to start?
http://bit.ly/33NpWEk
ltraceltrace
http://bit.ly/33NpWEk
ltraceltrace
Why?
http://bit.ly/33NpWEk
ltraceltrace
http://bit.ly/33NpWEk
ltraceltrace
Because UNIX is old
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
Love KenLove Ken
http://bit.ly/33NpWEk
Love KenLove Ken
KISSKISS
http://bit.ly/33NpWEk
How it all worksHow it all works
http://bit.ly/33NpWEk
KernelKernel
http://bit.ly/33NpWEk
KernelKernel
http://bit.ly/33NpWEk
KernelKernel
hardware
http://bit.ly/33NpWEk
KernelKernel
⇳ driver/module ⇳
hardware
http://bit.ly/33NpWEk
KernelKernel
application
⇳ driver/module ⇳
hardware
http://bit.ly/33NpWEk
KernelKernel
application
⇳ system calls ⇳
⇳ driver/module ⇳
hardware
http://bit.ly/33NpWEk
KernelKernel
application user
⇳ system calls ⇳
⇳ driver/module ⇳
hardware
http://bit.ly/33NpWEk
KernelKernel
application user
⇳ system calls ⇳
kernel
⇳ driver/module ⇳
hardware
http://bit.ly/33NpWEk
System CallsSystem Calls
http://bit.ly/33NpWEk
DocumentationDocumentation
http://bit.ly/33NpWEk
DocumentationDocumentation
http://bit.ly/33NpWEk
DocumentationDocumentation
man syscallsman syscalls
http://bit.ly/33NpWEk
DocumentationDocumentation
man syscallsman syscalls ⇒⇒
http://bit.ly/33NpWEk
Shared LibrariesShared Libraries
http://bit.ly/33NpWEk
Shared LibrariesShared Libraries
glibcglibc
http://bit.ly/33NpWEk
Shared LibrariesShared Libraries
glibcglibc
libc.solibc.so
http://bit.ly/33NpWEk
ltraceltrace
http://bit.ly/33NpWEk
ltraceltrace
... nally... nally
http://bit.ly/33NpWEk
[root@localhost ~]# ltrace hostname
_libc_start_main(0x401230, 1, 0x7ffd4a91dd48, 0x401ea0 <unfinished ..
rindex("hostname", '/') = ni
strcmp("hostname", "domainname") = 4
strcmp("hostname", "ypdomainname") = -1
strcmp("hostname", "nisdomainname") = -6
getopt_long(1, 0x7ffd4a91dd48, "aAdfbF:h?iIsVy", 0x4028a0, nil) = -1
__errno_location() = 0x
malloc(128) = 0x
gethostname("localhost.localdomain", 128) = 0
memchr("localhost.localdomain", '0', 128) = 0x
puts("localhost.localdomain"localhost.localdomain) = 22
+++ exited (status 0) +++
http://bit.ly/33NpWEk
[root@localhost ~]# ltrace -S hostname
brk@SYS(nil)
mmap@SYS(nil, 4096, 3, 34, -1, 0)
access@SYS("/etc/ld.so.preload", 04)
open@SYS("/etc/ld.so.cache", 524288, 01)
fstat@SYS(3, 0x7ffcfb5c0830)
mmap@SYS(nil, 22425, 1, 2, 3, 0)
close@SYS(3)
open@SYS("/lib64/libnsl.so.1", 524288, 022033410520)
read@SYS(3, "177ELF002001001", 832)
fstat@SYS(3, 0x7ffcfb5c0890)
mmap@SYS(nil, 2202232, 5, 2050, 3, 0)
mprotect@SYS(0x7f28902ba000, 2097152, 0)
mmap@SYS(0x7f28904ba000, 8192, 3, 2066, 3, 90112)
mmap@SYS(0x7f28904bc000, 6776, 3, 50, -1, 0)
close@SYS(3)
open@SYS("/lib64/libc.so.6", 524288, 022033410520)
read@SYS(3, "177ELF002001001003", 832)
fstat@SYS(3, 0x7ffcfb5c0860)
mmap@SYS(nil, 3981792, 5, 2050, 3, 0)
mprotect@SYS(0x7f2890099000, 2097152, 0)
mmap@SYS(0x7f2890299000, 24576, 3, 2066, 3, 1843200)
mmap@SYS(0x7f289029f000, 16864, 3, 50, -1, 0)
close@SYS(3)
http://bit.ly/33NpWEk
# file /bin/hostname
/bin/hostname: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), d
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
ExecutableExecutable
and
LinkableLinkable
FormatFormat
http://bit.ly/33NpWEk
LinkerLinker
ld.sold.so
/etc/ld.so.conf/etc/ld.so.conf
/lib64/ld-linux-x86_64.so.2/lib64/ld-linux-x86_64.so.2
man ld.soman ld.so
http://bit.ly/33NpWEk
# ldd /bin/hostname
linux-vdso.so.1 => (0x00007ffcda7dd000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f43c4f06000)
libc.so.6 => /lib64/libc.so.6 (0x00007f43c4b39000)
/lib64/ld-linux-x86-64.so.2 (0x00007f43c5120000)
# objdump -R /bin/hostname
/bin/hostname: file format elf64-x86-64
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
...
0000000000603140 R_X86_64_JUMP_SLOT gethostname@GLIBC_2.2.5
# man ld.so
http://bit.ly/33NpWEk
man ld.soman ld.so
LD_PRELOADLD_PRELOAD
A list of additional, user-specified, ELF shared libraries
to be loaded before all others.
http://bit.ly/33NpWEk
man ld.soman ld.so
LD_DEBUGLD_DEBUG
# LD_DEBUG=help /bin/true
Valid options for the LD_DEBUG environment variable are:
libs display library search paths
reloc display relocation processing
files display progress for input file
...
# LD_DEBUG=versions /bin/true
checking for version `GLIBC_2.3' in file /lib64/libc.so.6 [0]
checking for version `GLIBC_2.3.4' in file /lib64/libc.so.6 [0
checking for version `GLIBC_2.14' in file /lib64/libc.so.6 [0]
http://bit.ly/33NpWEk
man ld.soman ld.so
LD_DEBUGLD_DEBUG
⇒ ⇒⇒ ⇒
# LD_DEBUG=help /bin/true
Valid options for the LD_DEBUG environment variable are:
libs display library search paths
reloc display relocation processing
files display progress for input file
...
# LD_DEBUG=versions /bin/true
checking for version `GLIBC_2.3' in file /lib64/libc.so.6 [0]
checking for version `GLIBC_2.3.4' in file /lib64/libc.so.6 [0
checking for version `GLIBC_2.14' in file /lib64/libc.so.6 [0]
http://bit.ly/33NpWEk
Terminal
http://bit.ly/33NpWEk
You cannot escapeYou cannot escape
wikipedia.org
http://bit.ly/33NpWEk
getip.cgetip.c
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
int main()
{
char hostname[256];
char *IPbuffer;
struct hostent *hostStruct;
int h;
gethostname(hostname, sizeof(hostname));
hostStruct = gethostbyname(hostname);
http://bit.ly/33NpWEk
gethostnamegethostname
#include <unistd.h>
int gethostname(char *name, size_t len);
http://bit.ly/33NpWEk
gethostname_wrap.cgethostname_wrap.c
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int gethostname (char *name, size_t len) {
char newname[] = "getip_hostname";
int name_len = strlen(newname);
memcpy(name,newname, name_len < len ? name_len : len);
return 0;
}
http://bit.ly/33NpWEk
SolutionSolution
⇐⇐
http://bit.ly/33NpWEk
SolutionSolution
⇐⇐
http://bit.ly/33NpWEk
It's a machine, Skroeder.
It doesn't get pissed off.
It doesn't get happy,
it doesn't get sad,
it doesn't laugh at your jokes.
It just runs programs.
Short Circuit
http://bit.ly/33NpWEk
More backgroundMore background
http://bit.ly/33NpWEk
Booting processBooting process
http://bit.ly/33NpWEk
Booting processBooting process
BIOS
http://bit.ly/33NpWEk
Booting processBooting process
BIOS Bootsector
0
http://bit.ly/33NpWEk
Booting processBooting process
BIOS Bootsector
0
Bootloader
512
http://bit.ly/33NpWEk
Booting processBooting process
BIOS Bootsector
0
Bootloader
512
Kernel
[0]
http://bit.ly/33NpWEk
Booting processBooting process
BIOS Bootsector
0
Bootloader
512
Kernel
[0]
init
1
http://bit.ly/33NpWEk
ProcessesProcesses
http://bit.ly/33NpWEk
ProcessesProcesses
forkfork
http://bit.ly/33NpWEk
ProcessesProcesses
forkfork
http://bit.ly/33NpWEk
parent/childparent/child
$ ps -eo "ppid pid stat cmd" |sort -n |less
$ psx
$ psk
http://bit.ly/33NpWEk
parent/childparent/child
⇒⇒
$ ps -eo "ppid pid stat cmd" |sort -n |less
$ psx
$ psk
http://bit.ly/33NpWEk
fake lesystemsfake lesystems
http://bit.ly/33NpWEk
fake lesystemsfake lesystems
http://bit.ly/33NpWEk
fake lesystemsfake lesystems
/proc
http://bit.ly/33NpWEk
fake lesystemsfake lesystems
/proc /sys
http://bit.ly/33NpWEk
fake lesystemsfake lesystems
/proc /sys
⇒⇒
http://bit.ly/33NpWEk
File DescriptorsFile Descriptors
http://bit.ly/33NpWEk
File DescriptorsFile Descriptors
STDIN
0
http://bit.ly/33NpWEk
File DescriptorsFile Descriptors
STDIN STDOUT
0 1
http://bit.ly/33NpWEk
File DescriptorsFile Descriptors
STDIN STDOUT STDERR
0 1 2
http://bit.ly/33NpWEk
File DescriptorsFile Descriptors
everything is a le...everything is a le...
STDIN STDOUT STDERR
0 1 2
http://bit.ly/33NpWEk
File DescriptorsFile Descriptors
everything is a le...everything is a le...
STDIN STDOUT STDERR
0 1 2
⇒⇒
http://bit.ly/33NpWEk
ProcessesProcesses
http://bit.ly/33NpWEk
ProcessesProcesses
fork
http://bit.ly/33NpWEk
ProcessesProcesses
fork double fork
http://bit.ly/33NpWEk
ProcessesProcesses
fork double fork
http://bit.ly/33NpWEk
ProcessesProcesses
fork double fork
http://bit.ly/33NpWEk
ProcessesProcesses
fork double fork zombie
http://bit.ly/33NpWEk
fork
#!/usr/bin/env python
import os
import time
pid = os.fork()
if pid == 0:
print("Child")
while True:
time.sleep(10)
else:
print("Parent, Child PID: %s" % pid)
while True:
time.sleep(10)
http://bit.ly/33NpWEk
doublefork
#!/usr/bin/env python
import os
import time
pid = os.fork()
if pid == 0:
pid = os.fork()
if pid == 0:
print("I am the Grandchild(%s)n" % os.getpid())
while True:
time.sleep(10)
else:
print("I am the Child(%s), Grandchild(%s)n" % (os.getpid(),pid))
else:
print("I am the Parent(%s), my Child(%s)n" % (os.getpid(),pid))
http://bit.ly/33NpWEk
zombie
#!/usr/bin/env python
import os
import sys
import time
import signal
def sigalrm(signum, frame):
print("Received %d" % signum)
signal.signal(signal.SIGALRM, sigalrm)
pid = os.fork()
if pid == 0:
print("Child exiting")
sys.exit(0)
else:
print("Parent PID %s, Child PID: %snWaiting for Signal" % (os.getp
signal.pause()
os.wait()
print("Zombie is gonen")
sys.exit(0)
http://bit.ly/33NpWEk
⇒⇒
http://bit.ly/33NpWEk
ThreadsThreads
$ ./thread.py
$ pst thread
PPID PID STAT CMD SPID
4671 6760 - /usr/bin/python ./thread.py -
- - Tl - 6760
- - Tl - 6761
- - Tl - 6762
- - Tl - 6763
- - Tl - 6764
- - Tl - 6765
- - Tl - 6766
- - Tl - 6767
- - Tl - 6768
- - Tl - 6769
- - Tl - 6770
$ ls /proc/6760/task
6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770
http://bit.ly/33NpWEk
LimitsLimits
⇒⇒
http://bit.ly/33NpWEk
PAMPAM
PluggablePluggable
AuthenticationAuthentication
ModulesModules
http://bit.ly/33NpWEk
PAMPAM
PluggablePluggable
AuthenticationAuthentication
ModulesModules
man pamman pam
http://bit.ly/33NpWEk
Terminal
http://bit.ly/33NpWEk
Another storyAnother story
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
inodesinodes
http://bit.ly/33NpWEk
inodesinodes
$ stat /lib64/libc.so.6
File: /lib64/libc.so.6 -> libc-2.29.so
Size: 12 Blocks: 0 IO Block: 4096 symbolic link
Device: fd01h/64769d Inode: 2268443 Links: 1
Access: (0777/lrwxrwxrwx) Uid:(0/root) Gid:(0/root)
Context: system_u:object_r:lib_t:s0
Access: 2019-10-24 20:01:01.282015177 -0700
Modify: 2019-09-04 12:33:47.000000000 -0700
Change: 2019-09-08 19:57:02.255027798 -0700
Birth: 2019-09-08 19:57:02.254027799 -0700
http://bit.ly/33NpWEk
UnlinkUnlink
http://bit.ly/33NpWEk
UnlinkUnlink
# man 2 unlink
DESCRIPTION
unlink() deletes a name from the filesystem.
If that name was the last link to a file and
no processes have the file open, the file is
deleted and the space it was using is made
available for reuse.
If the name was the last link to a file but
any processes still have the file open, the
file will remain in existence until the last
file descriptor referring to it is closed.
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
gdbgdb
http://bit.ly/33NpWEk
gdbgdb
http://bit.ly/33NpWEk
... /usr/include/fcntl.h
... /usr/include/bits/fcntl.h
# man open
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
/* Get the definitions of O_*, F_*, FD_*: all the
numbers and flag bits for `open', `fcntl', et al. */
#include <bits/fcntl.h>
#define O_RDWR 02
#ifndef O_CREAT
# define O_CREAT 0100 /* Not fcntl. */
#endif
http://bit.ly/33NpWEk
# man dup2
int dup2(int oldfd, int newfd);
dup2()
The dup2() system call performs the same task as dup(),
but instead of using the lowest-numbered unused file
descriptor, it uses the file descriptor number specified
in newfd. If the file descriptor newfd was previ‐
ously open, it is silently closed before being reused.
http://bit.ly/33NpWEk
⇐⇐
http://bit.ly/33NpWEk
⇐⇐
http://bit.ly/33NpWEk
TroubleshootingTroubleshooting
http://bit.ly/33NpWEk
TroubleshootingTroubleshooting
... nally... nally
http://bit.ly/33NpWEk
Have a PlanHave a Plan
What is broken?
Did it ever work?
How do I know when it's fixed?
What are the requirements?
How can I test the requirements?
When did it last work?
http://bit.ly/33NpWEk
Troubleshooting StepsTroubleshooting Steps
Make a backupMake a backup
Read LogsRead Logs
Just one thing.Just one thing.
http://bit.ly/33NpWEk
Troubleshooting StepsTroubleshooting Steps
Make a backupMake a backup
Read LogsRead Logs
Just one thing.Just one thing.
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
change one
thing
http://bit.ly/33NpWEk
change one
thing
verify
status
http://bit.ly/33NpWEk
change one
thing
verify
status
if unfixed, undo
change
http://bit.ly/33NpWEk
change one
thing
verify
status
if unfixed, undo
change
repeat
http://bit.ly/33NpWEk
TraceTrace
ltrace
man <call>
SEE ALSO
http://bit.ly/33NpWEk
TraceTrace
ltrace
man <call>
SEE ALSO
...keep reading
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
imdb.com
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
Processes
http://bit.ly/33NpWEk
Processes
Users/Groups
http://bit.ly/33NpWEk
Processes
Users/Groups
Permissions
http://bit.ly/33NpWEk
Processes
Users/Groups
Permissions
runuser
http://bit.ly/33NpWEk
Processes
Users/Groups
Permissions
runuser
Space
http://bit.ly/33NpWEk
Processes
Users/Groups
Permissions
runuser
Space
NSS
http://bit.ly/33NpWEk
Processes
Users/Groups
Permissions
runuser
Space
NSS
Network
http://bit.ly/33NpWEk
Always check permissionsAlways check permissions
runuserrunuser
http://bit.ly/33NpWEk
Please check permissionsPlease check permissions
Hokey religions and ancient weaponsHokey religions and ancient weapons
are no match forare no match for
http://bit.ly/33NpWEk
Please check permissionsPlease check permissions
Hokey religions and ancient weaponsHokey religions and ancient weapons
are no match forare no match for
BASIC UNIX PERMISSIONSBASIC UNIX PERMISSIONS
http://bit.ly/33NpWEk
runuserrunuser
# cat /var/www/html/index.html
Hello World!
# runuser apache -s /bin/bash -c 'cat /var/www/html/index.html'
cat: /var/www/html/index.html: Permission denied
http://bit.ly/33NpWEk
NetworkingNetworking
http://bit.ly/33NpWEk
NetworkingNetworking
http://bit.ly/33NpWEk
nssnss
name service switchname service switch
http://bit.ly/33NpWEk
nssnss
name service switchname service switch
/etc/hosts/etc/hosts
http://bit.ly/33NpWEk
nssnss
name service switchname service switch
/etc/hosts/etc/hosts
/etc/nsswitch.conf/etc/nsswitch.conf
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
http://bit.ly/33NpWEk
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
passwd: db sss files systemd
http://bit.ly/33NpWEk
⇐ ⇐⇐ ⇐
http://bit.ly/33NpWEk
# ltrace tar cf lisa2019:f.tar /etc/hosts 2>&1 |grep gethost
gethostbyname("lisa2019" <unfinished ...="">
</unfinished>
http://bit.ly/33NpWEk
# ltrace tar cf lisa2019:f.tar /etc/hosts 2>&1 |grep gethost
gethostbyname("lisa2019" <unfinished ...="">
</unfinished>
# ltrace -S ping -w1 -c1 lisa2019 2>&1 |grep nss
open@SYS("/etc/nsswitch.conf", 524288, 0666) = 4
read@SYS(4, "#n# /etc/nsswitch.confn#n# An ex"..., 4096) =
open@SYS("/lib64/libnss_files.so.2", 524288, 020165240000) = 4
http://bit.ly/33NpWEk
ncnc
http://bit.ly/33NpWEk
ncnc
http://bit.ly/33NpWEk
⇐ ⇐ ⇐⇐ ⇐ ⇐
http://bit.ly/33NpWEk
tcpdump / wiresharktcpdump / wireshark
mtr / traceroutemtr / traceroute
http://bit.ly/33NpWEk
Encryption / Certi catesEncryption / Certi cates
x509x509
large primeslarge primes
http://bit.ly/33NpWEk
http://bit.ly/33NpWEk
CA / verifyCA / verify
$ openssl verify -CAfile ca.pem getip.example.com.pem
getip.example.com.pem: OK
http://bit.ly/33NpWEk
CA / verifyCA / verify
$ openssl verify -CAfile ca.pem getip.example.com.pem
getip.example.com.pem: OK
$ cat ca.pem crl-revoked.pem >ca_crl.pem
$ openssl verify -CAfile ca_crl.pem -crl_check getip.example.c
getip.example.com.pem: CN = getip.example.com
error 11 at 0 depth lookup:CRL is not yet valid
CN = getip.example.com
error 23 at 0 depth lookup:certificate revoked
http://bit.ly/33NpWEk
$ openssl x509 -in getip.example.com.pem -noout -modulus
Modulus=ACCBE50557F389F778505BD8C147FAD75A91DDA346D6CB4D006496
...
$ openssl x509 -in getip.example.com.pem -noout -modulus |sha2
2688b20c253241e1e291f4cab938d6a1b43a68ac158da47ebba60cfa48e641
http://bit.ly/33NpWEk
$ openssl x509 -in getip.example.com.pem -noout -modulus
Modulus=ACCBE50557F389F778505BD8C147FAD75A91DDA346D6CB4D006496
...
$ openssl x509 -in getip.example.com.pem -noout -modulus |sha2
2688b20c253241e1e291f4cab938d6a1b43a68ac158da47ebba60cfa48e641
$ openssl rsa -in private_keys/getip.example.com.pem -noout
2688b20c253241e1e291f4cab938d6a1b43a68ac158da47ebba60cfa48e641
http://bit.ly/33NpWEk
$ gnutls-cli -p <port> <host>
$ openssl s_client <host>:<port>
</port></host></host></port>
http://bit.ly/33NpWEk
SummarySummary
http://bit.ly/33NpWEk
SummarySummary
Trust no oneTrust no one
http://bit.ly/33NpWEk
SummarySummary
Trust no oneTrust no one
Check permissions (runuser)Check permissions (runuser)
http://bit.ly/33NpWEk
SummarySummary
Trust no oneTrust no one
Check permissions (runuser)Check permissions (runuser)
Read: Logs, DocsRead: Logs, Docs
http://bit.ly/33NpWEk
SummarySummary
Trust no oneTrust no one
Check permissions (runuser)Check permissions (runuser)
Read: Logs, DocsRead: Logs, Docs
One thingOne thing
http://bit.ly/33NpWEk
Questions?Questions?
http://bit.ly/33NpWEk
Questions?Questions?
Thank-youThank-you
http://bit.ly/33NpWEk
Questions?Questions?
Thank-youThank-you
consulting@uphillian.comconsulting@uphillian.com
http://bit.ly/33NpWEk

More Related Content

What's hot

Velocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFBrendan Gregg
 
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven RostedtKernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven RostedtAnne Nicolas
 
Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedBrendan Gregg
 
bcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challengesbcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challengesIO Visor Project
 
YOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceBrendan Gregg
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceSUSE Labs Taipei
 
Kernel Recipes 2017: Performance Analysis with BPF
Kernel Recipes 2017: Performance Analysis with BPFKernel Recipes 2017: Performance Analysis with BPF
Kernel Recipes 2017: Performance Analysis with BPFBrendan Gregg
 
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFOSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFBrendan Gregg
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Brendan Gregg
 
UM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of SoftwareUM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of SoftwareBrendan Gregg
 
Linux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringLinux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringGeorg Schönberger
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)Brendan Gregg
 
Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005dflexer
 
QCon 2015 Broken Performance Tools
QCon 2015 Broken Performance ToolsQCon 2015 Broken Performance Tools
QCon 2015 Broken Performance ToolsBrendan Gregg
 
Linux Performance Tools
Linux Performance ToolsLinux Performance Tools
Linux Performance ToolsBrendan Gregg
 
LPC2019 BPF Tracing Tools
LPC2019 BPF Tracing ToolsLPC2019 BPF Tracing Tools
LPC2019 BPF Tracing ToolsBrendan Gregg
 
Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Brendan Gregg
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 

What's hot (20)

Velocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPF
 
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven RostedtKernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
Kernel Recipes 2017 - Understanding the Linux kernel via ftrace - Steven Rostedt
 
Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting Started
 
bcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challengesbcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challenges
 
BPF Tools 2017
BPF Tools 2017BPF Tools 2017
BPF Tools 2017
 
YOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems Performance
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
Kernel Recipes 2017: Performance Analysis with BPF
Kernel Recipes 2017: Performance Analysis with BPFKernel Recipes 2017: Performance Analysis with BPF
Kernel Recipes 2017: Performance Analysis with BPF
 
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFOSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
UM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of SoftwareUM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of Software
 
Linux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringLinux Performance Profiling and Monitoring
Linux Performance Profiling and Monitoring
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005
 
QCon 2015 Broken Performance Tools
QCon 2015 Broken Performance ToolsQCon 2015 Broken Performance Tools
QCon 2015 Broken Performance Tools
 
Linux Performance Tools
Linux Performance ToolsLinux Performance Tools
Linux Performance Tools
 
ZFSperftools2012
ZFSperftools2012ZFSperftools2012
ZFSperftools2012
 
LPC2019 BPF Tracing Tools
LPC2019 BPF Tracing ToolsLPC2019 BPF Tracing Tools
LPC2019 BPF Tracing Tools
 
Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 

Similar to Linux Systems Troubleshooting Guide

Let the contribution begin
Let the contribution beginLet the contribution begin
Let the contribution beginSeongJae Park
 
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...Felipe Prado
 
Systems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting StartedSystems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting StartedBrendan Gregg
 
Jump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & GithubJump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & Githubhubx
 
The true story_of_hello_world
The true story_of_hello_worldThe true story_of_hello_world
The true story_of_hello_worldfantasy zheng
 
Linux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene PirogovLinux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene PirogovPivorak MeetUp
 
Pentesting an unfriendly environment: bypassing (un)common defences and mate ...
Pentesting an unfriendly environment: bypassing (un)common defences and mate ...Pentesting an unfriendly environment: bypassing (un)common defences and mate ...
Pentesting an unfriendly environment: bypassing (un)common defences and mate ...Sandro Zaccarini
 
Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.Workhorse Computing
 
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...tutorialsruby
 
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...tutorialsruby
 
Linux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compactLinux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compactAlessandro Selli
 
Creating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server HardeningCreating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server Hardeningarchwisp
 
Docker - container and lightweight virtualization
Docker - container and lightweight virtualization Docker - container and lightweight virtualization
Docker - container and lightweight virtualization Sim Janghoon
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot publicSeongJae Park
 
Docker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in PragueDocker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in Praguetomasbart
 
White Lightning Sept 2014
White Lightning Sept 2014White Lightning Sept 2014
White Lightning Sept 2014Bryce Kunz
 
USENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPFUSENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPFBrendan Gregg
 
Let the contribution begin (EST futures)
Let the contribution begin  (EST futures)Let the contribution begin  (EST futures)
Let the contribution begin (EST futures)SeongJae Park
 

Similar to Linux Systems Troubleshooting Guide (20)

Let the contribution begin
Let the contribution beginLet the contribution begin
Let the contribution begin
 
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
 
Systems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting StartedSystems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting Started
 
Jump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & GithubJump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & Github
 
The true story_of_hello_world
The true story_of_hello_worldThe true story_of_hello_world
The true story_of_hello_world
 
Linux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene PirogovLinux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene Pirogov
 
Pentesting an unfriendly environment: bypassing (un)common defences and mate ...
Pentesting an unfriendly environment: bypassing (un)common defences and mate ...Pentesting an unfriendly environment: bypassing (un)common defences and mate ...
Pentesting an unfriendly environment: bypassing (un)common defences and mate ...
 
Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.Shared Object images in Docker: What you need is what you want.
Shared Object images in Docker: What you need is what you want.
 
Metasploitable
MetasploitableMetasploitable
Metasploitable
 
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
 
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
 
Next Stop, Android
Next Stop, AndroidNext Stop, Android
Next Stop, Android
 
Linux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compactLinux Capabilities - eng - v2.1.5, compact
Linux Capabilities - eng - v2.1.5, compact
 
Creating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server HardeningCreating "Secure" PHP applications, Part 2, Server Hardening
Creating "Secure" PHP applications, Part 2, Server Hardening
 
Docker - container and lightweight virtualization
Docker - container and lightweight virtualization Docker - container and lightweight virtualization
Docker - container and lightweight virtualization
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
 
Docker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in PragueDocker and friends at Linux Days 2014 in Prague
Docker and friends at Linux Days 2014 in Prague
 
White Lightning Sept 2014
White Lightning Sept 2014White Lightning Sept 2014
White Lightning Sept 2014
 
USENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPFUSENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPF
 
Let the contribution begin (EST futures)
Let the contribution begin  (EST futures)Let the contribution begin  (EST futures)
Let the contribution begin (EST futures)
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Recently uploaded (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Linux Systems Troubleshooting Guide