Skip to content
PDF

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.

Requirements

  • Connected to the NIH network (on campus or via VPN)
  • NIH credentials + smart card (PIV) or multi-factor authentication (MFA)

How to connect

  1. Open Chrome and navigate to https://hpcondemand.nih.gov
  2. You will be redirected to the NIH central login page
  3. Sign in with your smart card or MFA authenticator app
  4. 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?

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

  1. What does HPC stand for, and why is it useful for bioinformatics?
  2. What is the difference between the Biowulf login node and a compute node?
  3. What command do you use to connect to Biowulf from your terminal?
  4. What is Helix, and when should you use it instead of Biowulf?
  5. What command prints your current directory location?
  6. What are the two main storage spaces on Biowulf, and how much space does each provide by default?
  7. You typed cd /data/$USER/results but got an error saying "No such file or directory." What likely went wrong, and how would you fix it?
  8. What is the difference between ls and ls -l?
  9. Why must you be careful before using rm?
  10. What keyboard shortcut auto-completes file and directory names at the command line?