Lesson 1: Introduction to Biowulf & Unix Navigation
Learning Objectives
- Understand what Biowulf is and why we use it.
- Connect to Biowulf.
- Navigate the file system using Unix commands.
- Create, move, copy, and delete files and directories.
Part 1 — What is Biowulf?
Biowulf is the NIH's high-performance computing (HPC) cluster, a massive Linux system with over 90,000 processors that tackles large computational tasks by dividing jobs across many computers (nodes) running simultaneously. Think of it as a supercomputer made of thousands of regular computers working together.
Key components of the NIH HPC system
| Component | What it is | How you use it |
|---|---|---|
| Login node | Your entry point into Biowulf | SSH here first; do NOT run heavy jobs here |
| Compute nodes | Worker computers that run your jobs | Submit jobs via sbatch, sinteractive, or swarm |
| Helix | Dedicated file transfer node | For uploading/downloading data |
| /home/$USER | Personal home directory (16 GB) | Config files, scripts |
| /data/$USER | Primary working storage (100 GB) | Datasets, results |
Why can't I just use my laptop?
Bioinformatics datasets (e.g., whole genome sequencing) can be hundreds of gigabytes. A single analysis may require 32+ CPU cores and 256 GB of RAM. Biowulf provides this on demand.
Software
Biowulf has 600+ pre-installed bioinformatics programs accessible via the module system (more on this in Lesson 2).
Part 2 — Connecting to Biowulf
Accessing Biowulf via SSH
Connect from your terminal (Mac/Linux) or an SSH client (Windows):
ssh username@biowulf.nih.gov
Note
You must be on the NIH campus network or NIH VPN to connect
Once logged in, you land on the login node. Your command prompt will show your username and the hostname.
Check-your-learning
After connecting, type hostname. What do you see? Why does this matter?
Accessing Biowulf via HPC On Demand
Not comfortable with the terminal yet? No problem. NIH HPC offers Open OnDemand, a browser-based interface that gives you access to Biowulf resources without any SSH client or command-line setup.
- URL: https://hpcondemand.nih.gov
- Preferred browser: Google Chrome
Requirements
- Connected to the NIH network (on campus or via VPN)
- NIH credentials + smart card (PIV) or multi-factor authentication (MFA)
How to connect
- Open Chrome and navigate to https://hpcondemand.nih.gov
- You will be redirected to the NIH central login page
- Sign in with your smart card or MFA authenticator app
- You will land on the HPC OnDemand Dashboard
What you can do from the dashboard
| Feature | What it gives you |
|---|---|
| Files | Browse, upload, and download files in your /home and /data directories |
| Shell Access | A terminal in your browser — same as SSH, no client needed |
| Interactive Apps | Launch RStudio, JupyterLab, VS Code, and other GUI tools on compute nodes |
| Jobs | View and manage your Slurm job queue |
Important
For this course, we will primarily use the Shell Access option in OnDemand, which gives you a terminal window in your browser. All of the commands you learn in this course work the same way whether you connect via SSH or OnDemand.
Check-your-learning
Log into HPC OnDemand and open a shell. Type hostname and pwd. How do the results compare to what you'd see with an SSH connection?
Part 3 — Unix Navigation Basics
Biowulf uses a Linux operating system. To use it, you need the command line interface (CLI) — you type commands rather than clicking icons.
The golden rule: You will make mistakes. That is okay and expected. It is how you learn. Biowulf has safeguards to prevent individual users from breaking the system.
Orientation commands
whoami # print your username
pwd # print working directory (where am I right now?)
ls # list contents of current directory
ls -l # list with details (permissions, size, date)
ls -lh # same but with human-readable file sizes
Check-your-learning
Type pwd. What path do you see? What does the $USER variable represent?
Navigating directories
cd /data/$USER # change to your data directory
pwd # confirm where you are
cd ~ # shortcut: go to home directory
cd .. # go up one directory level
cd - # go back to previous directory
Tip
Use the Tab key to auto-complete file and directory names. Use the ↑ arrow to recall previous commands.
Creating and removing directories
cd /data/$USER
mkdir Module_1 # make a new directory
cd Module_1
mkdir directory_to_delete
ls
cd directory_to_delete
pwd
ls
To remove a directory, it must be empty:
cd ..
rmdir directory_to_delete # only works if empty
Check-your-learning
Type ls to confirm the directory is gone. What happens if you try to rmdir a directory that contains files?
Part 4 — Working with Files
Creating a file
cd /data/$USER/Module_1
nano myseq.txt # open the nano text editor
Type a few lines of text, then press Ctrl+X, then Y, then Enter to save and exit.
Viewing files
cat myseq.txt # print entire file to screen
less myseq.txt # scroll through file (q to quit)
head myseq.txt # show first 10 lines
tail myseq.txt # show last 10 lines
head -20 myseq.txt # show first 20 lines
wc -l myseq.txt # count lines in file
Copying files
# Copy a teaching file to your Module_1 directory
cp /data/classes/BTEP/B4B_2025/Module_1/sample.fast* .
ls
The . means "here" (current directory). The * is a wildcard that matches any characters.
Moving and renaming files
mv myseq.txt mysequence.txt # rename a file
mv mysequence.txt /data/$USER/ # move to a different directory
Deleting files
rm mysequence.txt # permanently deletes — no trash can!
Warning
rm is permanent on Linux. There is no undo. Be careful.
Check-your-learning
What is the difference between mv and cp? What does the -r flag do with rm?
Lesson 1 — End-of-Lesson Quiz
- What does HPC stand for, and why is it useful for bioinformatics?
- What is the difference between the Biowulf login node and a compute node?
- What command do you use to connect to Biowulf from your terminal?
- What is Helix, and when should you use it instead of Biowulf?
- What command prints your current directory location?
- What are the two main storage spaces on Biowulf, and how much space does each provide by default?
- You typed
cd /data/$USER/resultsbut got an error saying "No such file or directory." What likely went wrong, and how would you fix it? - What is the difference between
lsandls -l? - Why must you be careful before using
rm? - What keyboard shortcut auto-completes file and directory names at the command line?