Files
OBIJupyterHub/jupyterhub_volumes/course/unix_exercises_bash.ipynb
Eric Coissac 30b7175702 Make cleaning
2025-11-17 14:18:13 +01:00

1560 lines
26 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Unix Essentials — Bash Practice Notebook\n",
"\n",
"This notebook contains 50 short exercises grouped in 5 series.\n",
"Each exercise has a hidden solution for self-assessment."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Series 1 Path Manipulation\n",
"\n",
"Focus: `pwd`, `cd`, `mkdir`, `.`, `..`, relative and absolute paths."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.1 Show current directory"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"pwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.2 Create a directory named `work`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mkdir work"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.3 Change to the `work` directory"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cd work"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.4 Create two subdirectories `data` and `logs`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mkdir data logs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.5 Move back to the parent directory"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cd .."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.6 Create nested directories `project/src` in one command"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mkdir -p project/src"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.7 Display the absolute path"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"pwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.8 List all including hidden ones"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"ls -a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.9 Create directory using absolute path `/tmp/test1`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mkdir /tmp/test1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1.10 Remove directory `/tmp/test1`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"rmdir /tmp/test1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Series 2 File Manipulation\n",
"\n",
"Focus: `rm`, `rm -rf`, `rmdir`, `cp`, `mv`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.1 Create an empty file `a.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"touch a.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.2 Copy `a.txt` to `b.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cp a.txt b.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.3 Rename `b.txt` to `c.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mv b.txt c.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.4 Move `c.txt` to `/tmp/`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mv c.txt /tmp/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.5 Create a folder `tempdir`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mkdir tempdir"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.6 Create files `x.txt`, `y.txt` in it"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"touch tempdir/x.txt tempdir/y.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.7 Remove `y.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"rm tempdir/y.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.8 Remove non-empty folder `tempdir` recursively"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"rm -rf tempdir"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.9 Create and remove empty folder `delete_me`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"mkdir delete_me && rmdir delete_me"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2.10 Create file with text using echo"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"echo 'hello world' > greeting.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Series 3 Redirections and Pipes\n",
"\n",
"Focus: Redirect input/output, combine with pipes."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.1 Save `ls` output to file"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"ls > list.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.2 Append date to `list.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"date >> list.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.3 View first 5 lines of `list.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"head -5 list.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.4 Count lines using pipe"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cat list.txt | wc -l"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.5 Redirect errors to `errors.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"ls /fake 2> errors.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.6 Redirect both output and errors"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"ls /fake > all.txt 2>&1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.7 Use pipe to sort `list.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cat list.txt | sort"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.8 Combine commands with `| grep`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"ls /etc | grep conf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.9 Use input redirection `<` to count words"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"wc -w < list.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3.10 Chain three commands"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cat list.txt | sort | uniq"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Series 4 Viewing Results\n",
"\n",
"Focus: `head`, `tail`, `cat`, `grep`, `less`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.1 Display first 10 lines of `/etc/passwd`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"head /etc/passwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.2 Show last 5 lines of `/etc/passwd`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"tail -5 /etc/passwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.3 View complete file `/etc/hostname`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cat /etc/hostname"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.4 Search for 'root' in `/etc/passwd`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"grep root /etc/passwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.5 Count matches of 'bash' in `/etc/passwd`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"grep -c bash /etc/passwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.6 Show line numbers with `grep`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"grep -n bash /etc/passwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.7 Invert match to exclude 'bash'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"grep -v bash /etc/passwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.8 Use `tail` to see the 5 last lines of `/etc/services`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"tail -5 /etc/services"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.9 Concatenate multiple small files"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cat a.txt greeting.txt > merged.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 4.10 Show sorted unique words from `list.txt`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"cat list.txt | tr ' ' '\\n' | sort | uniq"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Series 5 Process Management\n",
"\n",
"Focus: `ps`, `kill`, `ctrl-c`, `ctrl-z`, `top`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.1 List processes"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"ps"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.2 Show detailed process tree"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"ps aux"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.3 Find your shell PID"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"echo $$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.4 Launch sleep in background"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"sleep 60 &"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.5 List background jobs"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"jobs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.6 Bring job to foreground"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"fg"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.7 Stop a process by PID"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"kill <PID>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 5.8 Force kill a process"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# your work here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
}
},
"outputs": [],
"source": [
"# Solution\n",
"kill -9 <PID>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Bash",
"language": "bash",
"name": "bash"
},
"language_info": {
"name": "bash"
}
},
"nbformat": 4,
"nbformat_minor": 5
}