Download the AI & Machine Learning For Dummies App: iOS - Android
Some IT DevOps, SysAdmin, Developer positions require the knowledge of basic linux Operating System. Most of the time, we know the answer but forget them when we don’t practice very often. This refresher will help you prepare for the linux portion of your IT interview by answering some gotcha Linux Questions for IT DevOps and SysAdmin Interviews.
How many bytes are there in a MAC address? 48. MAC, Media Access Control, address is a globally unique identifier assigned to network devices, and therefore it is often referred to as hardware or physical address. MAC addresses are 6-byte (48-bits) in length, and are written in MM:MM:MM:SS:SS:SS format.
What are the different parts of a TCP packet? The term TCP packet appears in both informal and formal usage, whereas in more precise terminology segment refers to the TCP protocol data unit (PDU), datagram to the IP PDU, and frame to the data link layer PDU: … A TCP segment consists of a segment header and a data section.
Networking: Which command is used to initialize an interface, assign IP address, etc. ifconfig (interface configuration). The equivalent command for Dos is ipconfig. Other useful networking commands are: Ping, traceroute, netstat, dig, nslookup, route, lsof
What’s the difference between TCP and UDP; Between DNS TCP and UDP? There are two types of Internet Protocol (IP) traffic. They are TCP or Transmission Control Protocol and UDP or User Datagram Protocol. TCP is connection oriented – once a connection is established, data can be sent bidirectional. UDP is a simpler, connectionless Internet protocol. The reality is that DNS queries can also use TCP port 53 if UDP port 53 is not accepted. DNS uses TCP for Zone Transfer over port :53. DNS uses UDP for DNS Queries over port :53.
What are defaults ports used by http, telnet, ftp, smtp, dns, , snmp, squid? All those services are part of the Application level of the TCP/IP protocol. http => 80 telnet => 23 ftp => 20 (data transfer), 21 (Connection established) smtp => 25 dns => 53 snmp => 161 dhcp => 67 (server), 68 (Client) ssh => 22 squid => 3128
How many host available in a subnet (Class B and C Networks)
How DNS works? When you enter a URL into your Web browser, your DNS server uses its resources to resolve the name into the IP address for the appropriate Web server.
What is the difference between class A, class B and class C IP addresses? Class A Network (/ 8 Prefixes) This network is 8-bit network prefix. IP address range from 0.0.0.0 to 127.255.255.255 Class B Networks (/16 Prefixes) This network is 16-bit network prefix. IP address range from 128.0.0.0 to 191.255.255.255Class C Networks (/24 Prefixes) This network is 24-bit network prefix.IP address range from 192.0.0.0 to 223.255.255.255
Difference between ospf and bgp? The first reason is that BGP is more scalable than OSPF. , and this, normal igp like ospf cannot perform. Generally speaking OSPF and BGP are routing protocols for two different things. OSPF is an IGP (Interior Gateway Protocol) and is used internally within a companies network to provide routing.
How to find the Operating System version? $uname -a To check the distribution for redhat for example: $cat /etc/redhat –release
How to list all the process running? top To list java processes, ps -ef | grep java To list processes on a specific port: netstat -aon | findstr :port_number lsof -i:80
How to check disk space? df shows the amount of disk space used and available. du displays the amount of disk used by the specified files and for each subdirectories. To drill down and find out which file is filling up a drive: du -ks /drive_name/* | sort -nr | head
How to check memory usage? free or cat /proc/meminfo
What is the load average? It is the average sum of the number of process waiting in the queue and the number of process currently executing over the period of 1, 5 and 15 minutes. Use top to find the load average.
What is a load balancer? A load balancer is a device that acts as a reverse proxy and distributes network or application traffic across a number of servers. Load balancers are used to increase capacity (concurrent users) and reliability of applications.
What is the Linux Kernel? The Linux Kernel is a low-level systems software whose main role is to manage hardware resources for the user. It is also used to provide an interface for user-level interaction.
What is the default kill signal? There are many different signals that can be sent (see signal for a full list), although the signals in which users are generally most interested are SIGTERM (“terminate”) and SIGKILL (“kill”). The default signal sent is SIGTERM. kill 1234 kill -s TERM 1234 kill -TERM 1234 kill -15 1234
Describe Linux boot process BIOS => MBR => GRUB => KERNEL => INIT => RUN LEVEL As power comes up, the BIOS (Basic Input/Output System) is given control and executes MBR (Master Boot Record). The MBR executes GRUB (Grand Unified Boot Loader). GRUB executes Kernel. Kernel executes /sbin/init. Init executes run level programs. Run level programs are executed from /etc/rc.d/rc*.d Mac OS X Boot Process:
Boot ROM
Firmware. Part of Hardware system BootROM firmware is activated
POST
Power-On Self Test initializes some hardware interfaces and verifies that sufficient memory is available and in a good state.
EFI
Extensible Firmware Interface EFI does basic hardware initialization and selects which operating system to use.
BOOTX
boot.efi boot loader load the kernel environment
Rooting/Kernel
The init routine of the kernel is executed boot loader starts the kernel’s initialization procedure Various Mach/BSD data structures are initialized by the kernel. The I/O Kit is initialized. The kernel starts /sbin/mach_init
Run Level
mach_init starts /sbin/init init determines the runlevel, and runs /etc/rc.boot, which sets up the machine enough to run single-user. rc.boot figures out the type of boot (Multi-User, Safe, CD-ROM, Network etc.)
List services enabled at a particular run level chkconfig –list | grep 5:0n Enable|Disable a service at a specific run level: chkconfig on|off –level 5
How do you stop a bash fork bomb? Create a fork bomb by editing limits.conf: root hard nproc 512 Drop a fork bomb as below: :(){ :|:& };: Assuming you have access to shell: kill -STOP killall -STOP -u user1 killall -KILL -u user1
What is a fork? fork is an operation whereby a process creates a copy of itself. It is usually a system call, implemented in the kernel. Fork is the primary (and historically, only) method of process creation on Unix-like operating systems.
What is the D state? D state code means that process is in uninterruptible sleep, and that may mean different things but it is usually I/O.
III- File System
What is umask? umask is “User File Creation Mask”, which determines the settings of a mask that controls which file permissions are set for files and directories when they are created.
What is the role of the swap space? A swap space is a certain amount of space used by Linux to temporarily hold some programs that are running concurrently. This happens when RAM does not have enough memory to hold all programs that are executing.
What is the role of the swap space? A swap space is a certain amount of space used by Linux to temporarily hold some programs that are running concurrently. This happens when RAM does not have enough memory to hold all programs that are executing.
What is the null device in Linux? The null device is typically used for disposing of unwanted output streams of a process, or as a convenient empty file for input streams. This is usually done by redirection. The /dev/null device is a special file, not a directory, so one cannot move a whole file or directory into it with the Unix mv command.You might receive the “Bad file descriptor” error message if /dev/null has been deleted or overwritten. You can infer this cause when file system is reported as read-only at the time of booting through error messages, such as“/dev/null: Read-only filesystem” and “dup2: bad file descriptor”. In Unix and related computer operating systems, a file descriptor (FD, less frequently fildes) is an abstract indicator (handle) used to access a file or other input/output resource, such as a pipe or network socket.
What is a inode? The inode is a data structure in a Unix-style file system that describes a filesystem object such as a file or a directory. Each inode stores the attributes and disk block location(s) of the object’s data.
What is the difference between a document store and a relational database? In a relational database system you must define a schema before adding records to a database. The schema is the structure described in a formal language supported by the database and provides a blueprint for the tables in a database and the relationships between tables of data. Within a table, you need to define constraints in terms of rows and named columns as well as the type of data that can be stored in each column.In contrast, a document-oriented database contains documents, which are records that describe the data in the document, as well as the actual data. Documents can be as complex as you choose; you can use nested data to provide additional sub-categories of information about your object. You can also use one or more document to represent a real-world object.
How would you build a 1 Petabyte storage with commodity hardware? Using JBODs with large capacity disks with Linux in a distributed storage system stacking nodes until 1PB is reached. JBOD (which stands for “just a bunch of disks”) generally refers to a collection of hard disks that have not been configured to act as a redundant array of independent disks (RAID) array.
V- Scripting
What is @INC in Perl? The @INC Array. @INC is a special Perl variable that is the equivalent to the shell’s PATH variable. Whereas PATH contains a list of directories to search for executables, @INC contains a list of directories from which Perl modules and libraries can be loaded.
Strings comparison – operator – for loop – if statement
Sort access log file by http Response Codes Via Shell using linux commands cat sample_log.log | cut -d ‘”‘ -f3 | cut -d ‘ ‘ -f2 | sort | uniq -c | sort -rn
Please note that this is a basic cheat sheet and git has many more functionalities and options, it is worth reading the git documentation to learn more.
Clone a project: git clone git_repo_url project_name
Switch to a branch locally: git checkout branch_name
Modify a file, then save and push it to remote repo in current branch git add path_to_file_modifeid/file_name git commit -m “Description of modification” git push
Get a new version of a file after modifying local version git checkout path_to_file_modified/file_modified
Get latest version of current branch git fetch git pull if you have local changes, you will be prompted to commit or stash them before pulling.
Create a new branch based on current branch and switch to it git checkout –b branch_name
Switch to master branch git checkout master
Merge branch_name to master git merge branch_name
Delete local branch git branch -d branch_name
Undo a merge or pull git reset –hard
Undo a commit locally and on the remote branch git reset –hard commit_id git push –force
Get remote url of a local branch git remote show origin
Install and run your first noSQL MongoDB on Mac OSX
Classified as a NoSQL database, MongoDB is an open source, document-oriented database designed with both scalability and developer agility in mind. Instead of storing your data in tables and rows as you would with a relational database, in MongoDB you store JSON-like documents with dynamic schemas; This makes the integration of data in certain types of application easier and faster. Why? MongoDB can help you make a difference to the business. Tens of thousands of organizations, from startups to the largest companies and government agencies, choose MongoDB because it lets them build applications that weren’t possible before. With MongoDB, these organizations move faster than they could with relational databases at one tenth of the cost. With MongoDB, you can do things you could never do before.
Install Homebrew $ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” Homebrew installs the stuff you need that Apple didn’t. $ brew install wget
Install MongoDB $ brew install mongodb
Run MongoDB Create the data directory: $ mkdir -p /data/db Set permissions for the data directory:$ chown -R you:yourgroup /data/db then chmod -R 775 /data/db Run MongoDB (as non root): $ mongod
Begin using MongoDB.(MongoDB will be running as soon as you ran mongod above)Open another terminal and run: mongo
How to declare and write a script with hash tables on windows and linux
A hash table, also known as a hash map, is a data structure that is used to store key-value pairs. It is an efficient way to store data that can be quickly retrieved using a unique key.
Here is an example of how to declare and write a script with a hash table in Python:
# Declare an empty hash table hash_table = {}
# Add some key-value pairs to the hash table hash_table[‘key1’] = ‘value1’ hash_table[‘key2’] = ‘value2’ hash_table[‘key3’] = ‘value3’
# Access a value using its key print(hash_table[‘key2’]) # Output: “value2”
# Modify a value using its key hash_table[‘key2’] = ‘new value’ print(hash_table[‘key2’]) # Output: “new value”
# Delete a key-value pair using the `del` statement del hash_table[‘key1’]
# Check if a key is in the hash table using the `in` operator print(‘key1’ in hash_table) # Output: False
# Output: False
In this example, we declare an empty hash table using the {} syntax. We then add some key-value pairs to the hash table using the [] syntax. We access a value using its key, modify a value using its key, delete a key-value pair using the del statement, and check if a key is in the hash table using the in operator.
I hope this helps! Let me know if you have any questions.
Add new key-value in hashtable: $states.Add(“Manitoba”,”Winnipeg”)
Remove key-value in hashtable: $states.Remove(“Manitoba”,”Winnipeg”) Change value in hashtable: $states.Set_Item(“Ontario”,”Ottawa”) Retrieve value in hashtable: $states.Get_Item(“Alberta”) Find key in hashtable: $states.ContainsKey(“Alberta”) Find Value in hashtable: $states.ContainsValue(“Calgary”) Count items in hashtable: $states.Count Sort items by Name in hashtable: $states.GetEnumerator() | Sort-Object Name -descending Sort items by Value in hashtable: $states.GetEnumerator() | Sort-Object Value -descending
Hash tables with perl on linux or windows
Declaration: my %hash = (); #Initialize a hash my $hash_ref = {}; # Initialize a hash reference. ref will return HASH Clear (or empty) a hash for (keys %hash) { delete $hash{$_}; } Clear (or empty) a hash reference for (keys %$href) { delete $href->{$_}; } Add a key/value pair to a hash $hash{ ‘key’ } = ‘value’; # hash $hash{ $key } = $value; # hash, using variables Using Hash Reference $href->{ ‘key’ } = ‘value’; # hash ref $href->{ $key } = $value; # hash ref, using variables Add several key/value pairs to a hash %hash = ( ‘key1’, ‘value1’, ‘key2’, ‘value2’, ‘key3’, ‘value3’ ); %hash = ( key1 => ‘value1’, key2 => ‘value2’, key3 => ‘value3’, );
Copy a hash my %hash_copy = %hash; # copy a hash my $href_copy = $href; # copy a hash ref Delete a single key/value pair delete $hash{$key}; delete $hash_ref->{$key};
Using the rev command: The rev command is a utility that reverses the lines of a file or the characters in a string. To reverse a string, you can use the echo command to pass the string to rev:
echo"string" | rev
Using the sed command: The sed command is a powerful utility that can perform various text transformations. To reverse a string, you can use the sed command with the -r option and the 's/.*(.)/\1/g' expression:
echo"string" | sed -r 's/.*(.)/\1/g'
Using the awk command: The awk command is a programming language that is used for text processing. To reverse a string, you can use the awk command with the {print} action:
echo"string" | awk '{print $1}'
On Windows:
Using the powershell command: The powershell command is a shell that provides a command-line interface for Windows. To reverse a string, you can use the powershell command with the -C option and the '[System.Text.Encoding]::Unicode.GetString([System.Text.Encoding]::Unicode.GetBytes("string"))' expression:
Using the cmd command: The cmd command is the command-line interpreter for Windows. To reverse a string, you can use the cmd command with the for loop:
cmd /c "for /L %i in (1,1,%len%) do @echo !string:~%len%-%i,1!"
These are some ways to reverse a string on Linux and Windows. There are other ways to achieve this, using different utilities or programming languages.
Via shell script on Linux
sh-3.2# vi reverse.sh #### Start Script ##### #!/bin/bash input_string=”$1″ reverse_string=””
input_string_length=${#input_string} for (( i=$input_string_length-1; i>=0; i– )) do reverse_string=”$reverse_string${input_string:$i:1}” done
::—————- :: Calc Var Length ::—————- :: %*=Str to Check :: Returns %Len% :: ————— :StrLen %* set Data=%* for /L %%a in (0,1,80) do ( set Char=!Data:~%%a,1! if not “!Char!”==”” ( set /a Len=%%a+1 ) else (exit /b) ) exit /b
::————— :: Reverse String ::————— :: %* Str to Reverse :: Returns %Reverse% ::—————— :ReverseStr %* set Data=%* call :StrLen %Data% for /L %%a in (!Len!,-1,0) do ( set Char=!Data:~%%a,1! set Reverse=!Reverse!!Char! ) exit /b
Let’s find how to prompt and read input variables from keyboard while executing a script using shell, perl, python, batch and powershell (windows and Linux)
On Linux via shell
read -p “Enter your name: ” name echo “Hi, $name. Let’s be friend!”
On Windows via powershell
$name=read-host “Enter your name:” write-host “Hi $name, Let’s be friend!”
On Windows via batch
Set /p Name=”Enter your name:” echo “Hi %name%, Let’s be friend!”
On Windows or Linux via perl
print “Enter your name “; my $name = ; chomp $name; # Get rid of newline character at the end print “Hello $name, let’s be friend”;
On Windows or Linux via python
name=input(“Enter your name: “) print (“Hello ” + name + ” let’s be friend”)
Today I Learned (TIL) You learn something new every day; what did you learn today? Submit interesting and specific facts about something that you just found out here.
Reddit Science This community is a place to share and discuss new scientific research. Read about the latest advances in astronomy, biology, medicine, physics, social science, and more. Find and submit new publications and popular science coverage of current research.