233 lines
16 KiB
Markdown
233 lines
16 KiB
Markdown
|
# Linux essentials [source](https://github.com/sudomateo/lsa-i/tree/master/docs/linux-essentials)
|
||
|
|
||
|
1. Change into the `/tmp` directory using the command `cd /tmp`.
|
||
|
2. Confirm you are in the `/tmp` directory using the command `pwd`.
|
||
|
3. Change back into your home directory using the command `cd`.
|
||
|
4. Confirm you are in your home directory using the command `pwd`.
|
||
|
5. Print the text `This is file01.` to the file `/tmp/file01` using the command `echo "This is file01." > /tmp/file01`.
|
||
|
6. Confirm the `/tmp/file01` file has the correct content using the command `cat /tmp/file01`.
|
||
|
7. Append the text `This is appended.` to the file `/tmp/file01` using the command `echo "This is appended." >> /tmp/file01`.
|
||
|
8. Confirm the `/tmp/file01` file has the updated content using the command `cat /tmp/file01`.
|
||
|
9. Send the output of the `printenv` command to a new file named `/tmp/myenv` using the command `printenv > /tmp/myenv`.
|
||
|
10. View the first five lines of the `/tmp/myenv` file using the command `head -n 5 /tmp/myenv`.
|
||
|
11. Declare and export a new environment variable with the command `export COURSE_NAME="LSA1"`.
|
||
|
12. Verify your newly exported environment variable exists using the command `printenv | grep COURSE_NAME`.
|
||
|
13. Practice these and other commands until you feel comfortable with them.
|
||
|
14. When finished, use the `exit` command to exit the shell and logout.
|
||
|
|
||
|
# Managing files [source](https://lsa-i.sudomateo.com/managing-files/)
|
||
|
|
||
|
1. Create a directory for these exercises by using the command `mkdir /tmp/managing-files`.
|
||
|
2. Change into the newly created directory using the command `cd /tmp/managing-files`.
|
||
|
3. Create six empty files using the command `touch file{01..06}`.
|
||
|
4. Run each of the following commands to change the permissions of each file. See if you can guess what the permissions will be before you run each command:
|
||
|
1. `chmod 764 file01`
|
||
|
2. `chmod 400 file02`
|
||
|
3. `chmod 651 file03`
|
||
|
4. `chmod 4744 file04`
|
||
|
5. `chmod 4664 file06`
|
||
|
6. `chmod 1444 file06`
|
||
|
5. Run the command `ls -l`. You should see output similar to the following.
|
||
|
```
|
||
|
$ ls -l
|
||
|
total 0
|
||
|
-rwxrw-r--. 1 vagrant vagrant 0 Aug 23 01:10 file01
|
||
|
-r--------. 1 vagrant vagrant 0 Aug 23 01:10 file02
|
||
|
-rw-r-x--x. 1 vagrant vagrant 0 Aug 23 01:10 file03
|
||
|
-rwsr--r--. 1 vagrant vagrant 0 Aug 23 01:10 file04
|
||
|
-rw-rw-r--. 1 vagrant vagrant 0 Aug 23 01:10 file05
|
||
|
-r--r--r-T. 1 vagrant vagrant 0 Aug 23 01:10 file06
|
||
|
```
|
||
|
6. Run the commmand `tar -zcvf /tmp/managing-files.tgz -C /tmp/managing-files .` to create an archive named `/tmp/managing-files.tgz` of all the files in the `/tmp/managing-files` directory.
|
||
|
7. Run the command `rm -f file0*` to remove all six files that were created earlier. Verify the files were removed using the command `ls -l`.
|
||
|
8. Run the command `tar -zxvf /tmp/managing-files.tgz -C /tmp/managing-files` to extract the contents of your archive back into the `/tmp/managing-files` directory.
|
||
|
9. Verify the files were restored correctly using the command `ls -l`. You should see output similar to the following. **NOTE: `tar` does not restore special permissions (SUID, SGID, sticky bit) so you will only see the read, write, and execute permissions.**
|
||
|
```
|
||
|
$ ls -l
|
||
|
total 0
|
||
|
-rwxrw-r--. 1 vagrant vagrant 0 Aug 23 01:10 file01
|
||
|
-r--------. 1 vagrant vagrant 0 Aug 23 01:10 file02
|
||
|
-rw-r-x--x. 1 vagrant vagrant 0 Aug 23 01:10 file03
|
||
|
-rwxr--r--. 1 vagrant vagrant 0 Aug 23 01:10 file04
|
||
|
-rw-rw-r--. 1 vagrant vagrant 0 Aug 23 01:10 file05
|
||
|
-r--r--r--. 1 vagrant vagrant 0 Aug 23 01:10 file06
|
||
|
```
|
||
|
10. Practice these and other commands until you feel comfortable with them.
|
||
|
11. When finished, use the `exit` command to exit the shell and logout.
|
||
|
|
||
|
# Managing software [source](https://lsa-i.sudomateo.com/managing-software/)
|
||
|
|
||
|
1. Install the `screen` package using the command `sudo yum install screen`. Press ++y++ if prompted.
|
||
|
2. Verify the screen package is installed using the command `sudo yum list installed | grep -i screen`. You should see the matching output.
|
||
|
3. Remove the `screen` package using the command `sudo yum remove screen`.
|
||
|
4. Verify the screen package is removed using the command `sudo yum list installed | grep -i screen`. You should see no matching output.
|
||
|
5. Run the command `ps aux` to view all of the processes currently executing on the system.
|
||
|
6. Run the command `top` to view all of the processes and their resource usage. Notice how the output refreshed every 2 seconds. Press ++q++ to quit when done looking around.
|
||
|
7. Run the command `sleep 60`. Press ++ctrl+c++ to quit the command early.
|
||
|
8. Run the command `sleep 15 &` to run `sleep` in the background. Run the `jobs` command to verify the background command is still running. Wait for 15 seconds and run the `jobs` command again to verify that the job is no longer executing in the background.
|
||
|
9. Run the command `sleep 600 &` to run the `sleep 600` command in the background. You will be shown the PID of the background process. Keep a note of this for the next steps.
|
||
|
1. Verify the PID exists using the command `ps aux | grep PID` where `PID` is the PID from earlier.
|
||
|
2. Use the `kill -15 PID` command where `PID` is the PID from earlier to send a `SIGTERM` command to that process.
|
||
|
3. Run the `jobs` command to verify your background process was terminated.
|
||
|
10. Run the command `sleep 444 &` to run the `sleep 444` command in the background. You will be shown the PID of the background process. Keep a note of this for the next steps.
|
||
|
1. Verify the PID exists using the command `ps aux | grep PID` where `PID` is the PID from earlier.
|
||
|
2. Use the `kill -9 PID` command where `PID` is the PID from earlier to send a `SIGKILL` command to that process.
|
||
|
3. Run the `jobs` command to verify your background process was killed.
|
||
|
11. Run the command `sudo yum install epel-release` to install the EPEL repository.
|
||
|
12. Run the command `sudo yum install nginx` to install the nginx webserver. Press ++y++ if prompted.
|
||
|
13. Run the command `sudo systemctl status nginx` to see the status of the nginx webserver. It should show inactive or dead.
|
||
|
14. Run the command `sudo systemctl start nginx` to start the nginx webserver.
|
||
|
15. On your local workstation, open a web browser and navigate to `http://127.0.0.1:8080`. You should see an nginx test page.
|
||
|
16. Run the command `sudo systemctl stop nginx` to stop the nginx webserver.
|
||
|
17. Try to reload the web page on your local workstation. It should not load this time.
|
||
|
18. Verify the nginx service is not running using the command `sudo systemctl status nginx`.
|
||
|
19. Practice these and other commands until you feel comfortable with them.
|
||
|
20. When finished, use the `exit` command to exit the shell and logout.
|
||
|
|
||
|
# Configuring hardware [source](https://lsa-i.sudomateo.com/configuring-hardware/)
|
||
|
|
||
|
1. Drop down to the `root` user using the command `sudo su -`.
|
||
|
2. Verify the `/dev/sdb` and `dev/sdc` devices are attached to your system by running the command `lsblk`. You should see output similar to the following:
|
||
|
```
|
||
|
[root@lsa-i ~]# lsblk
|
||
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||
|
sda 8:0 0 40G 0 disk
|
||
|
├─sda1 8:1 0 1M 0 part
|
||
|
├─sda2 8:2 0 1G 0 part /boot
|
||
|
└─sda3 8:3 0 39G 0 part
|
||
|
├─VolGroup00-LogVol00 253:0 0 37.5G 0 lvm /
|
||
|
└─VolGroup00-LogVol01 253:1 0 1.5G 0 lvm [SWAP]
|
||
|
sdb 8:16 0 1G 0 disk
|
||
|
sdc 8:32 0 1G 0 disk
|
||
|
```
|
||
|
3. Run the command `fdisk /dev/sdb` to begin formatting the device `dev/sdb`. Follow the subtasks below to format the device with 1 partition that takes up all the space:
|
||
|
1. Type `n` and hit ++enter++ to create a new partition.
|
||
|
2. Type `p` and hit ++enter++ to make this a primary partition.
|
||
|
3. Type `1` and hit ++enter++ to make this primary partition the first partition on this device.
|
||
|
4. Hit ++enter++ to accept the default first sector.
|
||
|
5. Hit ++enter++ to accept the default last sector.
|
||
|
6. Type `p` and hit ++enter++ to print the proposed partition changes. You should see the partition `/dev/sdb1`.
|
||
|
7. Type `w` and hit ++enter++ to write these changes to the device and exit.
|
||
|
4. Verify the `/dev/sdb1` partition was created successfully by running the command `lsblk`. You should see output similar to the following:
|
||
|
```
|
||
|
[root@lsa-i ~]# lsblk
|
||
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||
|
sda 8:0 0 40G 0 disk
|
||
|
├─sda1 8:1 0 1M 0 part
|
||
|
├─sda2 8:2 0 1G 0 part /boot
|
||
|
└─sda3 8:3 0 39G 0 part
|
||
|
├─VolGroup00-LogVol00 253:0 0 37.5G 0 lvm /
|
||
|
└─VolGroup00-LogVol01 253:1 0 1.5G 0 lvm [SWAP]
|
||
|
sdb 8:16 0 1G 0 disk
|
||
|
└─sdb1 8:17 0 1023M 0 part
|
||
|
sdc 8:32 0 1G 0 disk
|
||
|
```
|
||
|
5. Run the command `mkfs.xfs /dev/sdb1` to create an XFS file system on the `/dev/sdb1` partition.
|
||
|
6. Run the command `lsblk -f` to list the UUID and file system type of the `/dev/sdb1` partition. You'll need this information for the `/etc/fstab` file.
|
||
|
7. Run the command `mkdir /mnt/exercise01` to create a directory to use for mounting the `/dev/sdb1` partition.
|
||
|
8. Add an entry to the `/etc/fstab` file to mount your `/dev/sdb1` device to the `/mnt/exercise01` directory. Your new entry should be similar to the following:
|
||
|
```
|
||
|
UUID=<DEVICE_UUID> /mnt/exercise01 xfs defaults 0 2
|
||
|
```
|
||
|
9. Run the command `mount -a` to read the `/etc/fstab` file and mount all currently unmounted devices.
|
||
|
10. Verify the `/dev/sdb1` partition was mounted successfully by running the `lsblk` command. You should see output simiar to the following:
|
||
|
```
|
||
|
[root@lsa-i ~]# lsblk
|
||
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||
|
sda 8:0 0 40G 0 disk
|
||
|
├─sda1 8:1 0 1M 0 part
|
||
|
├─sda2 8:2 0 1G 0 part /boot
|
||
|
└─sda3 8:3 0 39G 0 part
|
||
|
├─VolGroup00-LogVol00 253:0 0 37.5G 0 lvm /
|
||
|
└─VolGroup00-LogVol01 253:1 0 1.5G 0 lvm [SWAP]
|
||
|
sdb 8:16 0 1G 0 disk
|
||
|
└─sdb1 8:17 0 1023M 0 part /mnt/exercise01
|
||
|
sdc 8:32 0 1G 0 disk
|
||
|
```
|
||
|
11. Run the command `df -h` to see the current disk usage of the system. Take note of the value in the Used column for `/dev/sdb1`. My output is below.
|
||
|
```
|
||
|
[root@lsa-i ~]# df -h
|
||
|
Filesystem Size Used Avail Use% Mounted on
|
||
|
/dev/mapper/VolGroup00-LogVol00 38G 823M 37G 3% /
|
||
|
devtmpfs 910M 0 910M 0% /dev
|
||
|
tmpfs 920M 0 920M 0% /dev/shm
|
||
|
tmpfs 920M 8.5M 911M 1% /run
|
||
|
tmpfs 920M 0 920M 0% /sys/fs/cgroup
|
||
|
/dev/sda2 1014M 63M 952M 7% /boot
|
||
|
tmpfs 184M 0 184M 0% /run/user/1000
|
||
|
/dev/sdb1 1020M 33M 988M 4% /mnt/exercise01
|
||
|
```
|
||
|
12. Run the command `dd bs=1M count=50 if=/dev/urandom of=/mnt/exercise01/myfile` to create a file /mnt/exercise01/myfile with a size of around 50 MiB. This command may take a few seconds to run.
|
||
|
13. Run the command `df -h` to see the current disk usage of the system. Take note of the value in the Used column for `/dev/sdb1`. Notice how the value has increased by roughly 50 MiB. My output is below.
|
||
|
```
|
||
|
[root@lsa-i ~]# df -h
|
||
|
Filesystem Size Used Avail Use% Mounted on
|
||
|
/dev/mapper/VolGroup00-LogVol00 38G 823M 37G 3% /
|
||
|
devtmpfs 910M 0 910M 0% /dev
|
||
|
tmpfs 920M 0 920M 0% /dev/shm
|
||
|
tmpfs 920M 8.5M 911M 1% /run
|
||
|
tmpfs 920M 0 920M 0% /sys/fs/cgroup
|
||
|
/dev/sda2 1014M 63M 952M 7% /boot
|
||
|
tmpfs 184M 0 184M 0% /run/user/1000
|
||
|
/dev/sdb1 1020M 83M 938M 9% /mnt/exercise01
|
||
|
```
|
||
|
14. Run the command `fdisk /dev/sdc` to begin formatting the device `/dev/sdc`. Follow the subtasks below to format the device with 2 partitions with 256 MiB and 512 MiB respectively:
|
||
|
1. Type `n` and hit ++enter++ to create a new partition.
|
||
|
2. Type `p` and hit ++enter++ to make this a primary partition.
|
||
|
3. Type `1` and hit ++enter++ to make this primary partition the first partition on this device.
|
||
|
4. Hit ++enter++ to accept the default first sector.
|
||
|
5. Type `+256M` and hit ++enter++ to give the partition a size of 256 MiB.
|
||
|
6. Type `p` and hit ++enter++ to print the proposed partition changes. You should see the partition `/dev/sdc1`.
|
||
|
7. Type `n` and hit ++enter++ to create another new partition.
|
||
|
8. Type `p` and hit ++enter++ to make this a primary partition.
|
||
|
9. Type `2` and hit ++enter++ to make this primary partition the second partition on this device.
|
||
|
10. Hit ++enter++ to accept the default first sector.
|
||
|
11. Type `+512M` and hit ++enter++ to give the partition a size of 512 MiB.
|
||
|
12. Type `p` and hit ++enter++ to print the proposed partition changes. You should see the partition `/dev/sdc2`.
|
||
|
13. Type `w` and hit ++enter++ to write these changes to the disk and exit.
|
||
|
15. Verify the `/dev/sdc1` and `/dev/sdc2` partitions were created successfully by running the command `lsblk`. You should see output similar to the following:
|
||
|
```
|
||
|
[root@lsa-i ~]# lsblk
|
||
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||
|
sda 8:0 0 40G 0 disk
|
||
|
├─sda1 8:1 0 1M 0 part
|
||
|
├─sda2 8:2 0 1G 0 part /boot
|
||
|
└─sda3 8:3 0 39G 0 part
|
||
|
├─VolGroup00-LogVol00 253:0 0 37.5G 0 lvm /
|
||
|
└─VolGroup00-LogVol01 253:1 0 1.5G 0 lvm [SWAP]
|
||
|
sdb 8:16 0 1G 0 disk
|
||
|
└─sdb1 8:17 0 1023M 0 part /mnt/exercise01
|
||
|
sdc 8:32 0 1G 0 disk
|
||
|
├─sdc1 8:33 0 256M 0 part
|
||
|
└─sdc2 8:34 0 512M 0 part
|
||
|
```
|
||
|
16. Run the command `mkfs.ext4 /dev/sdc1` to create an EXT4 file system on the `/dev/sdc1` partition.
|
||
|
17. Run the command `mkfs.xfs /dev/sdc2` to create an XFS file system on the `/dev/sdc2` partition.
|
||
|
18. Run the command `lsblk -f` to list the UUIDs and file system types of the `/dev/sdc1` and `/dev/sdc2` partitions. You'll need this information for the `/etc/fstab` file.
|
||
|
19. Run the command `mkdir /mnt/small` to create a directory to use for mounting the `/dev/sdc1` partition.
|
||
|
20. Run the command `mkdir /mnt/large` to create a directory to use for mounting the `/dev/sdc2` partition.
|
||
|
21. Add two entries to the `/etc/fstab` file to mount your `/dev/sdc1` and `/dev/sdc2` devices to the `/mnt/small` and `/mnt/large` directories respectively. Your new entries should be similar to the following:
|
||
|
```
|
||
|
UUID=<DEVICE_UUID> /mnt/small ext4 defaults 0 2
|
||
|
UUID=<DEVICE_UUID> /mnt/large xfs defaults 0 2
|
||
|
```
|
||
|
22. Run the command `mount -a` to read the `/etc/fstab` file and mount all currently unmounted devices.
|
||
|
23. Verify the `/dev/sdc1` and `/dev/sdc2` partitions were mounted successfully by running the `lsblk` command. You should see output simiar to the following:
|
||
|
```
|
||
|
[root@lsa-i ~]# lsblk
|
||
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||
|
sda 8:0 0 40G 0 disk
|
||
|
├─sda1 8:1 0 1M 0 part
|
||
|
├─sda2 8:2 0 1G 0 part /boot
|
||
|
└─sda3 8:3 0 39G 0 part
|
||
|
├─VolGroup00-LogVol00 253:0 0 37.5G 0 lvm /
|
||
|
└─VolGroup00-LogVol01 253:1 0 1.5G 0 lvm [SWAP]
|
||
|
sdb 8:16 0 1G 0 disk
|
||
|
└─sdb1 8:17 0 1023M 0 part /mnt/exercise01
|
||
|
sdc 8:32 0 1G 0 disk
|
||
|
├─sdc1 8:33 0 256M 0 part /mnt/small
|
||
|
└─sdc2 8:34 0 512M 0 part /mnt/large
|
||
|
```
|
||
|
24. Practice these and other commands until you feel comfortable with them. You'll need to run `vagrant destroy` and then `vagrant up` to reset your virtual machine if you wish to do these exercises over.
|
||
|
25. When finished, use the exit command to exit the shell and logout.
|