You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 78 Next »

This course has been designed to help users access the research/teaching and Viking Linux servers. The aim is to provide you with some basic Linux commands to get you going.  You can access these machines from Windows, Mac and Linux OS.

Introduction

There are a number of different computing facilities available at the University of York.  Have you found any of the following when doing research on your own computer?

  • Your workload is taking a long time to run (>6hrs)

  • It uses all your machine's resources (compute cores or memory)

  • You need lots of memory

  • You need GPUs

  • You are either using or producing a lot of data

  • You think you could cut your job into smaller chunks and process them at the same time
  • You know you want to analyse larger datasets in the future.

We have a few different machines to use when you have these problems: individual large machines known as the research and teaching servers, and the Viking compute cluster, a connected group of hundreds of machines. Here will will give you a very brief introduction on how to access these machines.

The research and teaching servers

These servers are also known as the Linux Managed Service or LMS for short. There are currently four research servers (research0, research1, research2 and research3) and two teaching servers (teaching0 and teaching1). Detailed information on the server specifications can be found here.  These machines are Desktops, similar to what you may have at home or in your office, but with a large number of compute cores and memory.  This means that work that your local machine is struggling with may easily be run on one of these machines. You can log on to these machines from anywhere on campus, or off campus if you use the Virtual Private Network (VPN) or SSH gateway service. Some caveats:

  • They are a shared machine which means a number of users may be logged on at the same time
  • They run Linux so you need a little bit of Linux command line knowledge to get started
  • If you are a undergraduate you will only have access to the teaching servers  
  • They get rebooted on the first Tuesday of every month


Exercise 1 - Logging into the research or teaching servers.

There are different ways to login to the LMS depending on what operating system you are running.  We will break down the different options here.

Before You Login

If you have not changed your IT Services password since August 2013 then you must do so before you will be able to login. All user password changes are manage via the My IT Account  web page. Click on the Password Management (IDM) link in the Manage Your Password field to change your password. You may be given the option to 'synchronise' your password; please use this option if you do not want to change your password. The password change (or synchronisation) may take a few minutes before it is visible to the servers.

Accessing research and teaching servers off campus

To access the research and teaching servers off campus you can either use the Virtual Private Network - VPN or the SSH gateway service (registration required). The instructions below should work if you log on through the VPN; the SSH service works slightly differently.

Access from a Windows desktop

Command-line access using PuTTY

PuTTY is available on all IT Services Managed Windows systems. It is pre-installed on Classroom PCs; on Office PCs you can install it from Run Advertised Programs / Software Center. It appears under "Internet Tools" on the start menu.

On unmanaged PCs you can download the installer from the PuTTY Website.

When you run PuTTY for the first time, enter the following settings to log on to the research0 server (or replace research0 with teaching0, research1 etc):

  1. Add the name "research0.york.ac.uk" to the 'Host Name' field
  2. Check the 'Connection Type' to SSH
  3. Type the name "research0"  in 'Saved Sessions'
  4. Click 'Save'



  1. Expand the 'SSH' tab from the 'Connection' list in the 'Category' box
  2. Choose 'X11' from 'SSH' list
  3. Check 'Enable X11 Forwarding'



  1. Choose 'Session' from the 'Category' box
  2. Click 'Save'


Connecting to research0
  1. Start PuTTY
  2. Select 'research0' from the 'Saved Sessions'
  3. Click 'Open'
  4. The first time you connect you will get a security alert showing the fingerprint of the server, labeled as 'ssh-rsa' or 'ssh-ed25519'. Check the fingerprint below for the label shown and click "Yes" to proceed if it matches.


ssh-rsa 2048 5c:43:e5:e6:57:e0:4d:9f:f8:b5:ca:52:2f:30:39:ef research0
ssh-rsa 2048 bb:1f:6e:58:fa:d7:23:0d:ae:b2:b2:e8:62:a0:e7:5c research1
ssh-rsa 2048 13:42:77:57:ad:33:67:12:a4:8f:d3:26:24:37:2c:e0 research2
ssh-rsa 2048 99:da:16:61:09:e0:19:1f:53:0e:2b:e9:2a:22:50:99 research3
ssh-rsa 2048 ac:7e:1e:2a:05:d8:a1:3b:cf:b5:77:48:d0:bb:8a:22 teaching0
ssh-rsa 2048 bb:de:33:ff:07:23:6b:0a:73:ad:1f:8a:57:b2:c7:77 teaching1

ssh-ed25519 5a:c9:c1:76:16:00:42:45:f9:e5:bd:63:5d:87:db:8a research0
ssh-ed25519 f4:51:59:b7:b5:74:1c:14:a7:2c:78:1c:11:1f:72:cc research1
ssh-ed25519 76:93:b3:2d:e0:73:cb:25:a5:9e:c7:bd:ce:76:8f:a2 research2
ssh-ed25519 64:b2:f0:11:93:fc:d7:ea:12:bb:90:bc:7d:06:75:cc research3
ssh-ed25519 f4:ff:10:59:1e:5f:21:10:14:59:6e:04:16:63:7d:95 teaching0
ssh-ed25519 bc:73:f8:4f:40:7a:6b:41:73:90:f6:77:2b:4f:aa:d5 teaching1



Graphical login using x2go

The previous methods using NX Client and eXceed are now deprecated.
x2go client is available on all IT Services Managed Windows systems. It is pre-installed on Classroom PCs; users on Office PCs can install it from Run Advertised Programs / Software Center. It appears under "Internet Tools" on the Start Menu and there are pre-defined menu entries for research0 and teaching0.






On unmanaged PCs you can download the installer from the x2go Website. You will need to configure the settings as follows for research0 (or replace research0 with the name of the server you want to use):


  1. If the "New session" panel does not appear, select the menu item "Session | New session..."
  2. Enter "research0" in the 'Session name' field at the top
  3. Enter "research0.york.ac.uk" to the 'Server: Host:' field
  4. Change the 'Session Type' to XFCE
  5. Click "OK" (all other settings can stay on default).






If you wish to change any settings:


  1. Cancel any login dialogs
  2. Click the pull-down on the corner of the panel and select "Session preferences..."

Access from a Mac

Go to 'Finder | Applications | Utilities' and run the Terminal application on your local machine. Then type the following, using your university username (abc123):

Logging into research0

$ ssh username@research0.york.ac.uk

For a graphical login, install and configure the x2go client software as described in the unmanaged Windows section above.

teaching0 and the other servers can be accessed in the same manner.

Access from a UNIX server or desktop

To login from a terminal window, type the following from your local machine with your university username (abc123):

Logging into research0

$ssh username@research0.york.ac.uk

 If you require X forwarding, type:

Logging research0 with X forwarding

$ ssh -X username@research0.york.ac.uk

You will be prompted for your IT Services password.

Accessing teaching0 is done in the same manner.

Using the research/teaching servers with the Linux command line interface

Once you have successfully logged into the research or teaching servers, they may look very different to what you are used too, particularly if you are used to using Windows. Please do not let this put you off. The research computing team have successfully managed to help many people use these computers who have never used the Linux command line before. It takes a bit of getting used to but the more you use it the easier and quicker it will become over time.

The command line, or shell, has been the major interface for the Unix/Linux operating system since it was first conceived in the late 1960s. The shell allows interaction with the operating system through a text based interface, rather than the graphical interface you are used to. While the graphical interface is easy to learn, and usually makes simple things easy to do, it can be hard to do complex things like operate on large numbers of files, or make different tools work together. The shell can be hard to learn, but is much more powerful and flexible than most graphical interfaces, so can be very useful for research, where we often want to try new things on large data sets.

In this tutorial, we will only scratch the surface of the shell's features, just to get you started, but we will note some further features at the end of the tutorial that you may want to look into.

The user starts the shell by logging into the computer with a userid and password:


Logging in
******************************************************************************
***                   THE UNIVERSITY OF YORK IT SERVICES                   ***
***                                                                        ***
***                       THIS IS A PRIVATE COMPUTER                       ***
***                UNAUTHORISED ACCESS STRICTLY PROHIBITED                 ***
******************************************************************************

login: user001
password: 
Last login: Mon Sep  8 14:12:44 2014 from gallifrey.york.ac.uk
-bash-4.1$


The last line is a command prompt and it is the means by which the computer is telling you that it is ready to accept a command from you. If you do not see the prompt, the computer is probability still executing the last command you have typed. The user types commands which take the form:


program [ options ] [ arguments ]


Roughly speaking, program is the name of the program we want to run, arguments are objects we want to process (typically data files or folders), and options modify how the program will run. Options to a command are usually proceeded by a '-' or '- -' to differentiate them from arguments. The following exercise demonstrates using the echo program with a series of arguments and the ls program with or without options.

Exercise 2 - Running commands in the Linux shell


When you see the prompt type the following command (you can also copy and paste the command into your terminal).

echo I love York

What happens?  The terminal should write out "i love York".  echo is a small program that takes a series of arguments and repeats them to the user.

Now try typing the following commands.

ls
ls -l

What do you see? Something like this?

Exmaple of command execution
-bash-4.1$ ls
bin  Chemistry  Desktop  examples  Experiments  intel  jobs  logs  tmp
-bash-4.1$ ls -l
total 296
drwxr-xr-x 2 abs4 csrv        4096 Jun 24 09:39 bin
drwxr-xr-x 3 abs4 csrv        4096 Jun  6 09:23 Chemistry
drwxr-sr-x 2 abs4 elecclust   4096 Mar 11 10:53 Desktop
drwxr-xr-x 3 abs4 csrv        4096 Jun 30 12:21 examples
drwxr-xr-x 5 abs4 csrv        4096 May 23 11:34 Experiments
drwxr-xr-x 3 abs4 csrv        4096 Aug 14 12:26 intel
drwxr-sr-x 3 abs4 elecclust   4096 Aug 15 12:49 jobs
drwxr-xr-x 2 abs4 csrv      266240 Aug 15 13:48 logs
drwxr-xr-x 3 abs4 csrv        4096 Aug 14 14:50 tmp
-bash-4.1$ 

The ls command lists all of the files in your current directory. A directory is equivalent to a folder.  The ls -l command gives you a long list, showing more information about each file or folder such as who is the owner of the file, who can access it, when it was last accessed. You can use most Linux programs in a number of ways by adding extra options.  Here for ls -l we added the -l option. If you need to know more about a program you can use either of the following:


ls --help
man ls


ls can also take arguments as input. For example, to see the contents of a directory in your current directory, pass the name of the directory to ls as an argument. You can combine options and arguments, like the second command below:

ls Desktop
ls -l Desktop

Filesystem organisation

The file system is the component of the operating system that organises data into files. These files are organised into directories (similar to folders in Windows OS).

When you have logged in you will be placed in a directory which is called your home directory. To find the name of the directory use the program pwd (print working directory). 

Now try running the following commands. Here we have shown the prompt (-bash-4.1$) followed by the command to type on one line, then the output of the command on the following line (e.g after the -bash-4.1$, the first command is pwd, and the output is /home/userfs/e/ejb573; do not type the prompt as well, only the command). Your output will be slightly different as it will display the path to your home directory. 

Locating your home directory and files
-bash-4.1$ pwd
/home/userfs/e/ejb573
-bash-4.1$ cd /home
-bash-4.1$ pwd
/home
-bash-4.1$ cd
-bash-4.1$ pwd
/home/userfs/e/ejb573
-bash-4.1$ cd ..
-bash-4.1$ pwd
/home/userfs/e
-bash-4.1$ cd 
-bash-4.1$ pwd
/home/userfs/e/ejb573
-bash-4.1$ 


The output of the pwd command, /home/userfs/e/ejb573, is called a pathname, and this specifies the location of user ejb573's home directory. The first '/' in the pathname is called the root directory, the top-level directory in the hierarchy. Names following the '/' are directory names. Directories within directories are called sub-directories. Path names can also specify the location of files. The last part of a pathname (after the last /) is typically the name of a file or directory.

The cd program lets you change your working directory to another directory in the file system. cd with no arguments places you back in your home directory. The special argument '..' means the directory above your current directory (known as the parent directory).


Creating, moving and copying files and directories

You can create new files with the touch program and new directories with mkdir. You can move or copy files or directories to other locations with the mv (move) and cp (copy) programs.

First, let's create a new file and directory.

Create a new directory
-bash-4.1$ touch afile
-bash-4.1$ touch bfile
-bash-4.1$ mkdir new-dir
-bash-4.1$ ls
afile bfile  Chemistry  examples     intel  logs     tmp
bin    Desktop    Experiments  jobs   new-dir

 You should now see the files afile and bfile and the directory new-dir.  Let's experiment with afile and new-dir:

Create a new directory
-bash-4.1$ ls
afile  bin        Desktop   Experiments  jobs  new-dir
bfile  Chemistry  examples  intel        logs  tmp
-bash-4.1$ mv afile new-dir
-bash-4.1$ cp bfile new-dir
-bash-4.1$ ls
bfile  Chemistry  examples     intel  logs     tmp
bin    Desktop    Experiments  jobs   new-dir
-bash-4.1$ ls new-dir
afile  bfile
-bash-4.1$ mv new-dir/afile .
-bash-4.1$ ls
afile  bin        Desktop   Experiments  jobs  new-dir
bfile  Chemistry  examples  intel        logs  tmp
-bash-4.1$ 

This example creates a new directory, 'new-dir', We then move the file 'afile' to it and create a copy of 'bfile'. We then move the file 'afile' back to our current working directory. The '.' argument in "mv new-dir/afile ." means the current working directory, so this command moves 'afile' to your working directory.


Copying a directory is a little more complicated as the directory may contain files and directories. We use cp's '-r' option (recursive) to do this.

Copying a directory
-bash-4.1$ ls
afile  bin        Desktop   Experiments  jobs  tmp
bfile  Chemistry  examples  intel        logs
-bash-4.1$ ls tmp
icc-start  ifort-start  logs       mpi-stop  start  test
icc-stop   ifort-stop   mpi-start  new-dir   stop
-bash-4.1$ cp tmp/test .
cp: omitting directory `tmp/test'
-bash-4.1$ cp -r tmp/test .
-bash-4.1$ ls 
afile  bin        Desktop   Experiments  jobs  test
bfile  Chemistry  examples  intel        logs  tmp
-bash-4.1$ ls test
test.c  test.cpp  test.f  test.f90  test.x
-bash-4.1$ 

In this example we wish to copy the contents of the directory 'tmp/test' into the current directory. cp will not copy a directory; we have to use the '-r' (recursive) option to tell cp to copy all files and directories within the directory.

Deleting files and directories

You can use the rm (remove) program is used to delete files. Please be careful with these commands, because Linux has no undo!

rm filename

To remove a directory and all of its contents use the rm -r (recursive) option to the rm command. To be safe and check the files before you remove them use -ri (recursive and interactive) options.

rm -r dirname


Displaying and editing the contents of files

There are a variety of different tools to help you display and edit the contents of your files.  We will provide some examples below but you may find other ones which you prefer to use in the future. 

Exercise 3 - Displaying the contents of files

File contents can be displayed with several different Linux programs. cat (concatenate files) will print your file to the screen, but this is not a good idea when the files are large. Instead, we can use less to view the file one screen at a time. Try them both on an existing file on the research/teaching servers (here we are using a file we already have called snark2).

cat and more
 -bash-4.1$ cat snark2

The Hunting of the Snark
By Lewis Carroll
Fit the First
            The Landing

"Just the place for a Snark!" the Bellman cried,
   As he landed his crew with care;
Supporting each man on the top of the tide
   By a finger entwined in his hair.

"Just the place for a Snark! I have said it twice:
   That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
   What I tell you three times is true."

-bash-4.1$ less snark
The Hunting of the Snark
By Lewis Carroll
            Fit the First
            The Landing
"Just the place for a Snark!" the Bellman cried,
   As he landed his crew with care;
Supporting each man on the top of the tide
   By a finger entwined in his hair.
"Just the place for a Snark! I have said it twice:
   That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
   What I tell you three times is true."
The crew was complete: it included a Boots—
   A maker of Bonnets and Hoods—
A Barrister, brought to arrange their disputes—
   And a Broker, to value their goods.
A Billiard-marker, whose skill was immense,



To move through the file with less, or to quit back to the command line, use the following keys:

  • SPACE - display the next screen of text
  • q - quit displaying the file
  • b - skip backwards through he file
  • /pattern - search for text in the file


There are many text editors available on Linux. The easiest to use is probably nano:

nano filename

To edit text within nano, just type; to move around the file, use the arrow keys; to exit nano, type Control+X (^X is shown in the shortcuts at the bottom of the screen); to save the file, type Control+O (^O) and hit Enter when prompted for a filename. You might explore the other shortcuts shown at the bottom to try out some other features.

You might also try vi or emacs, which are harder to learn and use but very powerful once you get used to them. If you are using X forwarding (see above), you might also try gedit, which is a graphical text editor.




Being a good citizen: check for others using the machine before running large jobs:

htop

Running long jobs in the background?

nohup/nice/&?

Ctrl+Z / bg?

(Or just say, if you need to run long-running jobs, use Viking…?)


Copying files and directories remotely

You may need to copy files from your machine at home to one of the research/teaching servers.  There are a number of ways to do this

Exercise 4 - Copying files from your machine to the research machines

If you are a windows user follow the instructions for WINSCP.  If you are a Linux or mac user follow those instructions.  Try to copy one file from your local computer to the research/teaching servers.


Copying File To/From a Windows Desktop

WinSCP is an open source free SFTP client, SCP client, FTPS client and FTP client for Windows. Its main function is file transfer between a local and a remote computer. WinSCP is available on IT Services supported desktops or can be downloaded from http://winscp.net/eng/index.php.

Run WinSCP  from the Start menu or double clicking on the icon on the desktop;


A login window will appear Fill in the hostname and your username:

Running WinSCP

You can click the "Save" button to save the session details for future use:

Return to the login window and click the "Login" button Some host may present you with an information window:

You will then be prompted for your password:

The file manager window will be displayed:

The drag-and-drop interface is a similar to Windows file manager and its use should be intuitive.



Copying File To/From a Linux/MacOS desktop

There are a number of ways to copying files and directories using Linux command line.


you can copy your data from any Linux device to Viking using the following commands 

  • scp
  • rsync

Here are a couple of examples.  

scp 

Recommended  for a small number of files 

Example

You wish to copy your data from local machine to your home area on the research machines.  Run the following commands on your local machine in the terminal. 

-bash-4.1$ touch cfile
-bash-4.1$ touch dfile
-bash-4.1$ mkdir new-dir2
-bash-4.1$ mv dfile new-dir2
-bash-4.1$ ls
cfile  Chemistry  examples     intel  logs     tmp
bin    Desktop    Experiments  jobs   new-dir2

Here we have created some test files and directories on your local machine.  We will now copy these to research0.  You will need to enter your university of york password and replace abc123 with your university of York username.

-bash-4.1$ #For an individual file
-bash-4.1$ scp cfile abc123@research0.york.ac.uk:~/ 

-bash-4.1$ #For a folder with lots of files
-bash-4.1$ scp -r new-dir2 abc123@research0.york.ac.uk:~/

Now login to research0 you should now see the following files and folders in your home area.

-bash-4.1$ ls
cfile dfile new-dir2

The scp command securely copies these files and folders to the research machine.  The -r flag means scp will recursively copy everything within the folder new-dir2.  If you moved dfile to new-dir2 that has also been copied to the research machine. The :~/ at the end of the command is the location of where to send the files on the research machine.  In this case it is your home area. If we wanted to send a copy of dfile directly to new-dir folder use the following command.

-bash-4.1$ #For an individual file
-bash-4.1$ scp dfile abc123@research0.york.ac.uk:~/new-dir

This can save you an extra step of moving files on the research machines.


What if you want to copy files from research0 to your local machine?  Run the following commands on your local machine.

-bash-4.1$ #For an individual file
-bash-4.1$ scp abc123@research0.york.ac.uk:~/afile . 

-bash-4.1$ #For a folder with lots of files
-bash-4.1$ scp -r abc123@research0.york.ac.uk:~/bfile .
-bash-4.1$ ls

After running ls, do you see the files on your local machine?


There are many options you can use with scp.  To view these options either run

man scp 

on the device you are using scp on or have a look at this scp wiki page



RSYNC

Rsync is another command that will let you copy files and folders to the research machines.  If you have a large number of files it is always best to use Rsync.  The Rsync command will compare what is already in place, therefore if the network is interrupted you can run the command again and it will pick up where you left off.  It will only copy files that do not exists on the other server or files that have been changed. 

Example

You wish to copy your data from your local machine to the research machine and place it in your home directory run the following command.  This should be run on your local machine

Here is an example

rsync -avz new-dir2 abc123@research0.york.ac.uk:~/

The flags on rsync mean different things.  This would recursively transfer all files from the directory new-dir2 on your local machine onto the home directory on the research machine.  The files are transferred in "archive" mode, which  ensures  that  symbolic  links,  devices,  attributes,  permissions, ownerships, etc. are preserved in the transfer.  Additionally, compression will be  used  to reduce the size of data portions of the transfer.

There are many options you can use with rsync.  To view these options either run

man rsync 

on the device you are using rsync on or consult the rsync webpage





Copying files

cp 


Scp 


Rsync


FileZilla?




More features

This has been a very basic introduction to the command line, just to get you started. You may also want to look up the following features:

  • Using pipes (|) to pass the output of one tool as input to the next, allowing you to make new tools by combining existing ones
  • Redirecting input and output to files with >
  • Using wildcard characters such as * to refer to many files or directories at once
  • Writing scripts: saving a series of commands to a text file and then running the file as a program
  • Variables and options for environment customisation
  • Command-line editing
  • Command history (quick access to previous commands)






-bash-4.1$ #For an individual file
-bash-4.1$ scp afile research0.york.ac.uk:~/ 

-bash-4.1$ #For a folder with lots of files
-bash-4.1$ scp -r new-dir research0.york.ac.uk:~/



-bash-4.1$ #For an individual file
-bash-4.1$ scp cfile abc123@research0.york.ac.uk:~/ 

-bash-4.1$ #For a folder with lots of files
-bash-4.1$ scp -r new-dir2 abc123@research0.york.ac.uk:~/
  • No labels