Copyright (c) 2013-2021 UL HPC Team <hpc-sysadmins@uni.lu>
The use of the shell is fundamental to a wide range of advanced computing tasks, including high-performance computing. These lessons will introduce you to this powerful tool. We will cover a range of basic commands that will help you navigate and explore, create files and directories, write script, read and concatenate, how to use command arguments/options and combine existing commands, as well as copy, move and remove files.
If you're not already comfortable manipulating files and directories, searching for files with grep
and find
, and writing simple loops and scripts. Please follow this lesson Unix Shell from Software Carpentry (from which we made our slides).
You'll learn within a command shell to:
- move around on your computer
- see what files and directories you have
- specify the location of a file or directory on your computer
- create, copy, and delete files and directories
- edit files
- combine existing commands to do new things
- perform the same actions on many different files
- save and re-use commands
- find files and find things in them
- write scripts
Having this basic UNIX/Linux Shell knowledge is the first requirement to use efficiently an HPC facility.
$ nano <path/filename>
- quit and save:
CTRL+x
- save:
CTRL+o
- highlight text:
Alt+a
- Cut the highlighted text:
CTRL+k
- Paste:
CTRL+u
$ vim <path/filename>
There are 2 main modes:
- Edition mode: press
i
orinsert
once - Command mode: press
ESC
once
Here is a short list of useful commands:
- save:
:w
- save and quit:
:wq
- quit and discard changes:
:q!
- search:
/<pattern>
- search & replace:
:%s/<pattern>/<replacement>/g
- jump to line 100:
:100
- highlight text:
CTRL+V
- cut the highlighted text:
d
- cut one line:
dd
- paste:
p
- undo:
u
GNU Screen is a tool to manage persistent terminal sessions. It becomes interesting since you will probably end at some moment with the following scenario:
you frequently program and run computations on the UL HPC platform i.e on a remote Linux/Unix computer, typically working in six different terminal logins to the access server from your office workstation, cranking up long-running computations that are still not finished and are outputting important information (calculation status or results), when you have 2 interactive jobs running... But it's time to catch the bus and/or the train to go back home.
Probably what you do in the above scenario is to
a. clear and shutdown all running terminal sessions
b. once at home when the kids are in bed, you're logging in again... And have to set up the whole environment again (six logins, 2 interactive jobs etc. )
c. repeat the following morning when you come back to the office.
Enter the long-existing and very simple, but totally indispensable GNU screen command. It has the ability to completely detach running processes from one terminal and reattach it intact (later) from a different terminal login.
Note that screen is not available anymore on modern system, especially when using the Aion cluster, you should use Tmux instead.
While not mandatory, we advise you to rely on our customized configuration file for screen .screenrc
available on Github.
Otherwise, simply clone the ULHPC dotfile repository and make a symbolic link ~/.screenrc
targeting the file screen/screenrc
of the repository.
You can start a screen session (i.e. creates a single window with a shell in it) with the screen
command.
Its main command-lines options are listed below:
screen
: start a new screenscreen -ls
: does not start screen, but prints a list ofpid.tty.host
strings identifying your current screen sessions.screen -r
: resumes a detached screen sessionscreen -x
: attach to a not detached screen session. (Multi display mode i.e. when you and another user are trying to access the same session at the same time)
Once within a screen, you can invoke a screen command which consist of a "CTRL + a
" sequence followed by one other character. The main commands are:
CTRL + a c
: (create) creates a new Screen window. The default Screen number is zero.CTRL + a n
: (next) switches to the next window.CTRL + a p
: (prev) switches to the previous window.CTRL + a d
: (detach) detaches from a ScreenCTRL + a A
: (title) rename the current windowCTRL + a 0-9
: switches between windows 0 through 9.CTRL + a k
orCTRL + d
: (kill) destroy the current windowCTRL + a ?
: (help) display a list of all the command options available for Screen.
Tmux is a more modern equivalent to GNU screen.
While not mandatory, we advise you to rely on our customized configuration file for tmux .tmuxrc
available on Github.
Otherwise, simply clone the ULHPC dotfile repository and make a symbolic link ~/.tmuxrc
targeting the file tmux/tmuxrc
of the repository.
You can start a tmux session (i.e. creates a single window with a shell in it) with the tmux
command.
Its main command-lines options are listed below:
tmux
: start a new tmux sessiontmux ls
: does not start tmux, but print the list of the existing sessions.tmux a
: resumes a detached tmux session
Once within a tmux, you can invoke a tmux command which consist of a "CTRL + b
" sequence followed by one other character. The main commands are:
CTRL + b c
: (create) creates a new tmux window. The default tmux number is zero.CTRL + b n
: (next) switches to the next window.CTRL + b p
: (prev) switches to the previous window.CTRL + b d
: (detach) detaches from a sessionCTRL + b ,
: (title) rename the current windowCTRL + b 0-9
: switches between windows 0 through 9.CTRL + d
: (kill) destroy the current windowCTRL + b ?
: (help) display a list of all the command options available for tmux.