1. How Would you fix a generic routing issue?
Check the device status through the command line and reset network.
A surprising number of “network problems” boil down to DNS problems of one kind or another. Initial troubleshooting should use
ping -n w.x.y.z in order to leave out DNS resolution of a hostname, and just check IP connectivity. After that, use
route -n to check the default IP route without DNS resolution.
After verifying IP connectivity, and routing,
dig can yield information. Remember that “locking up” can indicate that DNS timeouts are occuring.
Don’t forget to check existence and contents of
/etc/resolv.conf. DHCP clients change that file with every lease, and sometimes they get it wrong, or if disk space is tight, an update might not happen.
What is the Linux Command Line?
The Linux command line is a text interface to your computer. Allows users to execute commands by manually typing at the terminal, or has the ability to automatically execute commands which were programmed in “Shell Scripts.
Can you Explain the Difference Between POP3 and IMAP
IMAP (internet Access Protocol) is a email protocol that deals with managing and retrieving email messages from the receiving server.
You can’t messages with IMAP only receive
POP stands for Post Office Protocol and 3 is the version number. It is also used for receiving email.
POP3 downloads the email fro a server to a single computer, then deletes the email from the server.
IMAP stores the message on a server and synchronizes the message across multiple devices.
You should use IMAP for receiving email if you’re working across multiple devices.
If you prefer to have all email accessible offline, and if you have a designated device for email, then POP could be a good option.
What is SMTP
SMTP is the industry standard protocol for sending email. If you’re looking to send email, then you’ll use SMTP. An SMTP relay.
SMTP – 25, 465, 587, 2525 (465 is non secure)
- Port 143 – Default IMAP port. Also used for TLS.
- Port 993 – IMAP port used for SSL – (secure)
- Port 110 – Default POP3 port.
- Port 995 – POP3 port used for SSL/TLS. (secure)
1. pwd command
Use the pwd command to find out the path of the current working directory (folder) you’re in. The command will return an absolute (full) path, which is basically a path of all the directories that starts with a forward slash (/). An example of an absolute path is /home/username.
2. cd command
To navigate through the Linux files and directories, use the cd command. It requires either the full path or the name of the directory, depending on the current working directory that you’re in.
Let’s say you’re in /home/username/Documents and you want to go to Photos, a subdirectory of Documents. To do so, simply type the following command: cd Photos.
Another scenario is if you want to switch to a completely new directory, for example,/home/username/Movies. In this case, you have to type cd followed by the directory’s absolute path: cd /home/username/Movies.
There are some shortcuts to help you navigate quickly:
- cd .. (with two dots) to move one directory up
- cd to go straight to the home folder
- cd- (with a hyphen) to move to your previous directory
On a side note, Linux’s shell is case sensitive. So, you have to type the name’s directory exactly as it is.
3. ls command
The ls command is used to view the contents of a directory. By default, this command will display the contents of your current working directory.
If you want to see the content of other directories, type ls and then the directory’s path. For example, enter ls /home/username/Documents to view the content of Documents.
There are variations you can use with the ls command:
- ls -R will list all the files in the sub-directories as well
- ls -a will show the hidden files
- ls -al will list the files and directories with detailed information like the permissions, size, owner, etc.
4. cat command
cat (short for concatenate) is one of the most frequently used commands in Linux. It is used to list the contents of a file on the standard output (sdout). To run this command, type cat followed by the file’s name and its extension. For instance: cat file.txt.
Here are other ways to use the cat command:
- cat > filename creates a new file
- cat filename1 filename2>filename3 joins two files (1 and 2) and stores the output of them in a new file (3)
- to convert a file to upper or lower case use, cat filename | tr a-z A-Z >output.txt
5. cp command
Use the cp command to copy files from the current directory to a different directory. For instance, the command cp scenery.jpg /home/username/Pictures would create a copy of scenery.jpg (from your current directory) into the Pictures directory.
6. mv command
The primary use of the mv command is to move files, although it can also be used to rename files.
The arguments in mv are similar to the cp command. You need to type mv, the file’s name, and the destination’s directory. For example: mv file.txt /home/username/Documents.
To rename files, the Linux command is mv oldname.ext newname.ext
7. mkdir command
Use mkdir command to make a new directory — if you type mkdir Music it will create a directory called Music.
There are extra mkdir commands as well:
- To generate a new directory inside another directory, use this Linux basic command mkdir Music/Newfile
- use the p (parents) option to create a directory in between two existing directories. For example, mkdir -p Music/2020/Newfile will create the new “2020” file.
8. rmdir command
If you need to delete a directory, use the rmdir command. However, rmdir only allows you to delete empty directories.
9. rm command
The rm command is used to delete directories and the contents within them. If you only want to delete the directory — as an alternative to rmdir — use rm -r.
Note: Be very careful with this command and double-check which directory you are in. This will delete everything and there is no undo.
10. touch command
The touch command allows you to create a blank new file through the Linux command line. As an example, enter touch /home/username/Documents/Web.html to create an HTML file entitled Web under the Documents directory.
11. locate command
You can use this command to locate a file, just like the search command in Windows. What’s more, using the -i argument along with this command will make it case-insensitive, so you can search for a file even if you don’t remember its exact name.
To search for a file that contains two or more words, use an asterisk (*). For example, locate -i school*note command will search for any file that contains the word “school” and “note”, whether it is uppercase or lowercase.
12. find command
Similar to the locate command, using find also searches for files and directories. The difference is, you use the find command to locate files within a given directory.
As an example, find /home/ -name notes.txt command will search for a file called notes.txt within the home directory and its subdirectories.
Other variations when using the find are:
- To find files in the current directory use, find . -name notes.txt
- To look for directories use, / -type d -name notes. txt
13. grep command
Another basic Linux command that is undoubtedly helpful for everyday use is grep. It lets you search through all the text in a given file.
To illustrate, grep blue notepad.txt will search for the word blue in the notepad file. Lines that contain the searched word will be displayed fully.
14. sudo command
Short for “SuperUser Do”, this command enables you to perform tasks that require administrative or root permissions. However, it is not advisable to use this command for daily use because it might be easy for an error to occur if you did something wrong.
15. df command
Use df command to get a report on the system’s disk space usage, shown in percentage and KBs. If you want to see the report in megabytes, type df -m.
16. du command
If you want to check how much space a file or a directory takes, the du (Disk Usage) command is the answer. However, the disk usage summary will show disk block numbers instead of the usual size format. If you want to see it in bytes, kilobytes, and megabytes, add the -h argument to the command line.
17. head command
The head command is used to view the first lines of any text file. By default, it will show the first ten lines, but you can change this number to your liking. For example, if you only want to show the first five lines, type head -n 5 filename.ext.
18. tail command
This one has a similar function to the head command, but instead of showing the first lines, the tail command will display the last ten lines of a text file. For example, tail -n filename.ext.
19. diff command
Short for difference, the diff command compares the contents of two files line by line. After analyzing the files, it will output the lines that do not match. Programmers often use this command when they need to make program alterations instead of rewriting the entire source code.
The simplest form of this command is diff file1.ext file2.ext
20. tar command
The tar command is the most used command to archive multiple files into a tarball — a common Linux file format that is similar to zip format, with compression being optional.
This command is quite complex with a long list of functions such as adding new files into an existing archive, listing the content of an archive, extracting the content from an archive, and many more. Check out some practical examples to know more about other functions.
21. chmod command
chmod is another Linux command, used to change the read, write, and execute permissions of files and directories. As this command is rather complicated, you can read the full tutorial in order to execute it properly.
22. chown command
In Linux, all files are owned by a specific user. The chown command enables you to change or transfer the ownership of a file to the specified username. For instance, chown linuxuser2 file.ext will make linuxuser2 as the owner of the file.ext.
23. jobs command
jobs command will display all current jobs along with their statuses. A job is basically a process that is started by the shell.
24. kill command
If you have an unresponsive program, you can terminate it manually by using the kill command. It will send a certain signal to the misbehaving app and instructs the app to terminate itself.
There is a total of sixty-four signals that you can use, but people usually only use two signals:
- SIGTERM (15) — requests a program to stop running and gives it some time to save all of its progress. If you don’t specify the signal when entering the kill command, this signal will be used.
- SIGKILL (9) — forces programs to stop immediately. Unsaved progress will be lost.
Besides knowing the signals, you also need to know the process identification number (PID) of the program you want to kill. If you don’t know the PID, simply run the command ps ux.
After knowing what signal you want to use and the PID of the program, enter the following syntax:
kill [signal option] PID.
25. ping command
Use the ping command to check your connectivity status to a server. For example, by simply entering ping google.com, the command will check whether you’re able to connect to Google and also measure the response time.
26. wget command
The Linux command line is super useful — you can even download files from the internet with the help of the wget command. To do so, simply type wget followed by the download link.
27. uname command
The uname command, short for Unix Name, will print detailed information about your Linux system like the machine name, operating system, kernel, and so on.
28. top command
As a terminal equivalent to Task Manager in Windows, the top command will display a list of running processes and how much CPU each process uses. It’s very useful to monitor system resource usage, especially knowing which process needs to be terminated because it consumes too many resources.
29. history command
When you’ve been using Linux for a certain period of time, you’ll quickly notice that you can run hundreds of commands every day. As such, running history command is particularly useful if you want to review the commands you’ve entered before.
30. man command
Confused about the function of certain Linux commands? Don’t worry, you can easily learn how to use them right from Linux’s shell by using the man command. For instance, entering man tail will show the manual instruction of the tail command.
31. echo command
This command is used to move some data into a file. For example, if you want to add the text, “Hello, my name is John” into a file called name.txt, you would type echo Hello, my name is John >> name.txt
32. zip, unzip command
Use the zip command to compress your files into a zip archive, and use the unzip command to extract the zipped files from a zip archive.
33. hostname command
If you want to know the name of your host/network simply type hostname. Adding a -I to the end will display the IP address of your network.
34. useradd, userdel command
Since Linux is a multi-user system, this means more than one person can interact with the same system at the same time. useradd is used to create a new user, while passwd is adding a password to that user’s account. To add a new person named John type, useradd John and then to add his password type, passwd 123456789.
To remove a user is very similar to adding a new user. To delete the users account type, userdel UserName
How many DNS Record types can you name
- A (Host address)
- AAAA (IPv6 host address)
- ALIAS (Auto resolved alias)
- CNAME (Canonical name for an alias)
- MX (Mail eXchange)
- NS (Name Server)
- PTR (Pointer)
- SOA (Start Of Authority)
- SRV (location of service)
- TXT (Descriptive text)
What is the difference between an A record and a CNAME record
The A record maps a name to one or more IP addresses when the IP are known and stable. The CNAME record maps a name to another name. It should only be used when there are no other records on that name. The ALIAS record maps a name to another name, but can coexist with other records on that name.
Explain the difference between shard hosting , VPS hosting , and Dedicated server.
Shared Hosting vs VPS Hosting in Brief
Shared hosting means sharing a server – and its resources – with other sites. That’s bandwidth, storage… the lot. VPS hosting creates a virtual environment that imitates a dedicated server (where you get a server, and all its resources, to yourself), but within a shared hosting environment.
Another way to get your head around the difference is to think of them like renting property:
With shared hosting, you ‘share’ space on a server with other websites. It’s like renting a room in a shared house – you’ve got your own little area, but you’re part of a larger communal space.
Shared hosting is the cheapest type there is. It’s got its benefits, but naturally, things can get a little cramped at times.
VPS hosting is where you have more than just one slice of a server. This can be thought of like renting an apartment in a building block – more rooms, more space, more flexibility, and a little more expensive. You have a greater level of control, but you’re still operating within a shared server with others.
Generally, shared hosting is for static websites – in other words, websites with fixed content that doesn’t change, no matter who visits it. Shared hosting is best for basic personal sites, like blogs, and for startups. You don’t get a wealth of features, ironclad security, or ultra-fast loading speeds, but then again, you don’t really need all that.
VPS hosting is a step up, and ideal for small businesses, online stores, and larger personal sites. You’ll see an increase in features, security and performance, all for a very reasonable rise in cost.
VPS hosting is also great if you’re looking to grow your site. Think of it as an investment – you want to pick a plan that matches your ambitions, not just one for the here-and-now.
Throughout this article, we’ll tackle the main pros/cons, and show you the top-rated providers for each type of hosting. We’ll also talk through the main areas to be aware of, assess the key differences, and pinpoint which hosting type is right for you: shared hosting or VPS hosting.
A Customer can recieve email but not send email. What trouble shooting steps would you take to resolve the issure for this customer?
- Check your internet connection. Yup. It happens. So first of all, be sure that you’re connected to the internet!
- Check your SMTP server details. This is an extremely common mistake: you have set up your mail client with the wrong SMTP parameters. To find out yours, please refer to our list of the most common ones or ask directly your provider.
- Verify all usernames and passwords. Another small mistake that happens usually, so doublecheck your login details.
- Check your SMTP server connection. Now this is trickier: even if your SMTP details are correct, the server itself can be down or not functioning for some reason. Here’s a list of all the SMTP error codes to get your bearings; and remember again that using a professional outgoing server this won’t happen again.
- Change your SMTP port. The outgoing mail server uses normally port 25, but some ISPs may block it due to the increasing spam traffic that’s been passing through it. You can use then port 587 or 465; for more information read our article about SMTP ports.
- Control your antivirus or firewall settings. Sometimes an outgoing mail server can conflict with the computer’s protection systems. So verify that your firewall or antivirus are not blocking it, setting up a proper exception rule.
What is .htaccess?
An .htaccess file is a directory-level configuration file supported by several web servers, used for configuration of website-access issues, such as URL redirection, URL shortening, access control, and more. The ‘dot’ before the file name makes it a hidden file in Unix-based environments
6 Stages of the Linux Boot process
- BIOS stands for Basic Input/Output System
- Performs some system integrity checks
- Searches, loads, and executes the boot loader program.
- It looks for boot loader in floppy, cd-rom, or hard drive. You can press a key (typically F12 of F2, but it depends on your system) during the BIOS startup to change the boot sequence.
- Once the boot loader program is detected and loaded into the memory, BIOS gives the control to it.
- So, in simple terms BIOS loads and executes the MBR boot loader.
- MBR stands for Master Boot Record.
- It is located in the 1st sector of the bootable disk. Typically /dev/hda, or /dev/sda
- MBR is less than 512 bytes in size. This has three components 1) primary boot loader info in 1st 446 bytes 2) partition table info in next 64 bytes 3) mbr validation check in last 2 bytes.
- It contains information about GRUB (or LILO in old systems).
- So, in simple terms MBR loads and executes the GRUB boot loader.
- GRUB stands for Grand Unified Bootloader.
- If you have multiple kernel images installed on your system, you can choose which one to be executed.
- GRUB displays a splash screen, waits for few seconds, if you don’t enter anything, it loads the default kernel image as specified in the grub configuration file.
- GRUB has the knowledge of the filesystem (the older Linux loader LILO didn’t understand filesystem).
- Grub configuration file is /boot/grub/grub.conf (/etc/grub.conf is a link to this). The following is sample grub.conf of CentOS.
- As you notice from the above info, it contains kernel and initrd image.
- So, in simple terms GRUB just loads and executes Kernel and initrd images.
- Mounts the root file system as specified in the “root=” in grub.conf
- Kernel executes the /sbin/init program
- Since init was the 1st program to be executed by Linux Kernel, it has the process id (PID) of 1. Do a ‘ps -ef | grep init’ and check the pid.
- initrd stands for Initial RAM Disk.
- initrd is used by kernel as temporary root file system until kernel is booted and the real root file system is mounted. It also contains necessary drivers compiled inside, which helps it to access the hard drive partitions, and other hardware.
- Looks at the /etc/inittab file to decide the Linux run level.
- Following are the available run levels
- 0 – halt
- 1 – Single user mode
- 2 – Multiuser, without NFS
- 3 – Full multiuser mode
- 4 – unused
- 5 – X11
- 6 – reboot
- Init identifies the default initlevel from /etc/inittab and uses that to load all appropriate program.
- Execute ‘grep initdefault /etc/inittab’ on your system to identify the default run level
- If you want to get into trouble, you can set the default run level to 0 or 6. Since you know what 0 and 6 means, probably you might not do that.
- Typically you would set the default run level to either 3 or 5.
6. Runlevel programs
- When the Linux system is booting up, you might see various services getting started. For example, it might say “starting sendmail …. OK”. Those are the runlevel programs, executed from the run level directory as defined by your run level.
- Depending on your default init level setting, the system will execute the programs from one of the following directories.
- Run level 0 – /etc/rc.d/rc0.d/
- Run level 1 – /etc/rc.d/rc1.d/
- Run level 2 – /etc/rc.d/rc2.d/
- Run level 3 – /etc/rc.d/rc3.d/
- Run level 4 – /etc/rc.d/rc4.d/
- Run level 5 – /etc/rc.d/rc5.d/
- Run level 6 – /etc/rc.d/rc6.d/
- Please note that there are also symbolic links available for these directory under /etc directly. So, /etc/rc0.d is linked to /etc/rc.d/rc0.d.
- Under the /etc/rc.d/rc*.d/ directories, you would see programs that start with S and K.
- Programs starts with S are used during startup. S for startup.
- Programs starts with K are used during shutdown. K for kill.
- There are numbers right next to S and K in the program names. Those are the sequence number in which the programs should be started or killed.
- For example, S12syslog is to start the syslog deamon, which has the sequence number of 12. S80sendmail is to start the sendmail daemon, which has the sequence number of 80. So, syslog program will be started before sendmail.
There you have it. That is what happens during the Linux boot process.
What is Linux Kernel
The Linux® kernel is the main component of a Linux operating system (OS) and is the core interface between a computer’s hardware and its processes. It communicates between the 2, managing resources as efficiently as possible.
The kernel is so named because—like a seed inside a hard shell—it exists within the OS and controls all the major functions of the hardware, whether it’s a phone, laptop, server, or any other kind of computer.
What the kernel does
The kernel has 4 jobs:
- Memory management: Keep track of how much memory is used to store what, and where
- Process management: Determine which processes can use the central processing unit (CPU), when, and for how long
- Device drivers: Act as mediator/interpreter between the hardware and processes
- System calls and security: Receive requests for service from the processes
The kernel, if implemented properly, is invisible to the user, working in its own little world known as kernel space, where it allocates memory and keeps track of where everything is stored. What the user sees—like web browsers and files—are known as the user space. These applications interact with the kernel through a system call interface (SCI).
Think about it like this. The kernel is a busy personal assistant for a powerful executive (the hardware). It’s the assistant’s job to relay messages and requests (processes) from employees and the public (users) to the executive, to remember what is stored where (memory), and to determine who has access to the executive at any given time and for how long.Our Red Hat Enterprise Linux product documentation has a lot more detail
Where the kernel fits within the OS
To put the kernel in context, you can think of a Linux machine as having 3 layers:
- The hardware: The physical machine—the bottom or base of the system, made up of memory (RAM) and the processor or central processing unit (CPU), as well as input/output (I/O) devices such as storage, networking, and graphics. The CPU performs computations and reads from, and writes to, memory.
- The Linux kernel: The core of the OS. (See? It’s right in the middle.) It’s software residing in memory that tells the CPU what to do.
- User processes: These are the running programs that the kernel manages. User processes are what collectively make up user space. User processes are also known as just processes. The kernel also allows these processes and servers to communicate with each other (known as inter-process communication, or IPC).
Code executed by the system runs on CPUs in 1 of 2 modes: kernel mode or user mode. Code running in the kernel mode has unrestricted access to the hardware, while user mode restricts access to the CPU and memory to the SCI. A similar separation exists for memory (kernel space and user space). These 2 small details form the base for some complicated operations like privilege separation for security, building containers, and virtual machines.
This also means that if a process fails in user mode, the damage is limited and can be recovered by the kernel. However, because of its access to memory and the processor, a kernel process crash can crash the entire system. Since there are safeguards in place and permissions required to cross boundaries, user process crashes usually can’t cause too many problems.
- Fedora: Cutting Edge Technology Implementation
- RedHat and Debian Server
- Ubuntu: one of the Introductory distro for Newbies
- Kali and Backtrack: Penetration Testing, etc.
Well this article aims to compare RedHat (Fedora, CentOS) and Debian (Ubuntu) from an administrator point of view. RedHat is a commercial Linux Distribution, which is most widely used on a number of servers, across the world. Fedora is the testing laboratory of RedHat which is well known for its bleeding edge technology implementation, which is released every six month.
Here the question is when there are hundreds of Linux distribution available for free (in either sense, open-source and economic), why would someone invest hundreds of bucks in buying a Linux Distribution, making RedHat so much successful. Well the answer is RedHat is very much stable.
The life cycle is of about ten years and after all there is someone to be blamed if something doesn’t work, the corporate culture. CentOS is another distribution which is RedHat minus Non-Free packages. CentOs is a stable distribution hence latest version of all packages is pushed into its RPM after testing, the focus remains on stability of distribution.
Debian on the other hand is a Linux distribution which is very much stable and contains very large number of packages into its repository. Any other distribution that comes close to Debian at this point is Gentoo. On my Debian server (Squeeze), which is a bit outdated.