Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to the Linux Command Line for High-Performance Computing Dr. Charles J Antonelli LSAIT ARS May, 2014.

Similar presentations


Presentation on theme: "Introduction to the Linux Command Line for High-Performance Computing Dr. Charles J Antonelli LSAIT ARS May, 2014."— Presentation transcript:

1 Introduction to the Linux Command Line for High-Performance Computing Dr. Charles J Antonelli LSAIT ARS May, 2014

2 Roadmap Linux overview the command shell navigating the filesystem basic commands shell redirection permissionsProcesses shell pipelining 05/14cja 20142

3 Poll How many here to learn the command line For HPC, specifically Flux, work? For other computing cluster work? For desktops/other Linux/Unix/Mac OS X? Other? 05/14cja 20143

4 Course Text William E Shotts, Jr., “The Linux Command Line: A Complete Introduction,” No Starch Press, January 2012. Download Creative Commons Licensed version athttp://downloads.sourceforge.net/project/linuxcomma nd/TLCL/13.07/TLCL-13.07.pdf. http://downloads.sourceforge.net/project/linuxcomma nd/TLCL/13.07/TLCL-13.07.pdfhttp://downloads.sourceforge.net/project/linuxcomma nd/TLCL/13.07/TLCL-13.07.pdf 05/14cja 20144

5 Linux Overview 05/14 cja 2014 5

6 A compute node 12 Intel cores 48 GB RAM Local disk Network 05/14cja 20146

7 05/14cja 2014 http://linuxforums.org.uk/index.php?action=media;sa=item;in=262 7

8 The command shell 05/14 cja 2014 8

9 The command line A basic way of interacting with a Linux system Execute commands Create files and directories Edit file content Access the web Copy files to and from other hosts Run HPC jobs … do things you can’t do from the conventional point- and-click Graphical User Interface (GUI) 05/14cja 20149

10 Why command line? 1.Linux was designed for the command line 2.You can create new Linux commands using the command line, without programming 3.Many systems provide only the command line, or poorly support a GUI interface Such as most HPC systems Such as most HPC systems 4.Many things can be accomplished only through the command line Much systems administration & troubleshooting Much systems administration & troubleshooting 5.You want to be cool 05/14cja 201410

11 The command shell The command shell is an application that reads command lines from the keyboard and passes them to the Linux operating system to be executed When you login to a remote Linux system using a tool like ssh, you will automatically be connected to a shell On your desktop, laptop, or tablet, you may have to find and execute a terminal emulator application to bring up a shell in a window 05/14cja 201411

12 Connecting via ssh Terminal emulators Linux and Mac OS X Start Terminal Use ssh command Windows SSH Secure Shell (U-M Blue Disc) https://www.itcs.umich.edu/bluedisc/ https://www.itcs.umich.edu/bluedisc/ PuTTY http://www.chiark.greenend.org.uk/~sgtatham/putty/ http://www.chiark.greenend.org.uk/~sgtatham/putty/ 05/14 cja 201412

13 The command shell 05/14cja 2014 http://www.livefirelabs.com/208_global/images/unix-operating-system.gif 13

14 Lab 1 Task: Start a local shell on Mac OS X 1.Login to Mac OS X with your uniqname and Kerberos password 2.If there is a Terminal icon in the Dock, double-click it Otherwise: a.Bring up a Finder window: Click on the desktop, type Command-N b.Start the Terminal Application: In the Finder window, click on Applications on the left, scroll down on the right until you find the Utilities folder, double-click on the Utilities folder, scroll down on the right until you find the Terminal application, double-click it 3.This creates a Terminal window with a shell running inside it 4.From a Terminal window, Command-N will start a new Terminal 05/14cja 201414

15 Lab 0 05/14cja 201415

16 The shell prompt The “~$ “ is the shell prompt This means the shell is waiting for you to type something Format can vary, but will usually end with “$” or “#” If $, you have a normal shell If #, you have a so-called “root shell” This shell has administrator privileges You can do a great deal of irreversible damage You can do a great deal of irreversible damage 05/14cja 201416

17 Typing into the shell Basic input line editing commands Backspace erases previous character Left and right arrow move insertion point on the line Control-U erases the line so you can start over Enter executes the line you typed Control-C interrupts whatever command you started and returns you to the shell prompt (usually) Up and down arrow will access your command history Type “ exit ” without the quotes to exit the shell Click the red circle at upper left of the Terminal window to close it 05/14cja 201417

18 Lab 1 Task: Enter some basic commands ~$ date ~$ id ~$ ps ~$ df -kh ~$ who ~$ top 05/14cja 201418

19 Interlude: Flux 05/14 cja 2014 19

20 Flux Flux is a university-wide shared computational discovery / high-performance computing service. Interdisciplinary Provided by Advanced Research Computing at U-M (ARC) Operated by CAEN HPC Hardware procurement, software licensing, billing support by U-M ITS Used across campus Collaborative since 2010 Advanced Research Computing at U-M (ARC) College of Engineering’s IT Group (CAEN) Information and Technology Services Medical School College of Literature, Science, and the Arts School of Information 05/14cja 2014 http://arc.research.umich.edu/resources-services/flux/ 20

21 The Flux cluster … 05/14cja 201421

22 A Flux node 12 Intel cores 48 GB RAM Local disk Network 05/14cja 201422

23 Logging in to Flux ssh flux-login.engin.umich.edu MToken (or Software Token) required You will be randomly connected a Flux login node Currently flux-login1 or flux-login2 Firewalls restrict access to flux-login. To connect successfully, either Physically connect your ssh client platform to the U-M campus wired or MWireless network, or Use VPN software on your client platform, or Use ssh to login to an ITS login node (login.itd.umich.edu), and ssh to flux-login from there 05/14cja 201423

24 A shell on a login node Now you have a shell on the login node Your shell prompt has changed to something like [flux-login1 ~]$ Try those simple commands here! Flux is for HPC work The login nodes are reserved for copying data, editing and compiling programs and scripts, and short test runs For HPC computation, you should run on the compute nodes A batch job will always run on the compute nodes An interactive batch job will get you a shell on a compute node 05/14cja 201424

25 A shell on a compute node Getting a shell on a compute node Enter this command on the login node: [flux-login1 ~] $ ~cja/hpc100/getshell After a short delay, you’ll get an interactive shell: qsub: waiting for job 11147004.nyx.engin.umich.edu to start qsub: job 11147004.nyx.engin.umich.edu ready [nyx5509 ~]$ You can type commands into this shell for all of our in-class experiments Type “exit” to exit this shell After two hours, your interactive shell will be killed 05/14cja 201425

26 Navigating the filesystem 05/14 cja 2014 26

27 Linux Filesystem Concepts Files are stored in a directory Directories may contain other directories as well as files A hierarchy of these directories is called a directory tree A directory tree (a connected graph with no cycles) has a single topmost root directory A directory tree rooted at the system root directory “ / ” is called a filesystem 05/14cja 201427

28 05/14cja 2014 http://redhatlinux4u.blogspot.com/2011/11/file-hierarchy-system.html 28

29 Linux Filesystem Concepts A file is accessed using its path name Absolute path name /dir1/dir2/…/dirn/filename/usr/X11R6/bin Relative path name current-working-directory/filenamebin Every shell maintains a notion of a current working directory Initialized at login to your home directory Changed via cd command Two special directories. refers to the current directory.. refers to the current directory’s parent directory 05/14cja 201429

30 Basic commands 05/14 cja 2014 30

31 Prerequisites Some fundamental commands: ~$ file file# what kind of file is file? ~$ cat file# display contents of text file ~$ less file# paginate text file ~$ man command# get info about command Exercise: figure out how to make the date command display the date in Coordinated Universal Time (UTC) 05/14cja 201431

32 Lab 2 Task: navigate the file system Commands: ~$ cd # make your home directory the current working directory ~$ pwd# print working directory ~$ mkdir foo# create directory foo ~$ cd foo# cd to the foo directory ~$ mkdir bar# create directory bar ~$ cd..# cd back to the foo directory ~$ tree# display foo’s directory tree 05/14cja 201432

33 Navigating the filesystem Some fundamental commands: ~$ pwd# print working directory ~$ cd dir# make dir the current working directory ~$ cd # cd to your home dir ~$ cd ~cja# cd to cja’s home dir ~$ mkdir dir# create directory dir ~$ rmdir dir# remove (empty) directory dir ~$ tree# display dir tree 05/14cja 201433

34 Listing info on files ls – list information about files ~$ ls # list contents of cur dir ~$ ls dir# list contents of dir ~$ ls –l# list details of files in cur dir ~$ ls –t# list newest files first ~$ ls –R dir# list all files in tree dir ~$ ls –lt dir# options can be combined 05/14cja 201434

35 Working with files These commands manipulate files ~$ mv foo bar# rename file foo to bar ~$ cp foo bar# copy file foo to bar ~$ cp –r dir1 dir2# copy dir tree dir1 to dir2 ~$ cp f1 f2 dir# copy f1 and f2 to directory dir ~$ mkdir dir# create empty directory dir ~$ rmdir dir# remove empty directory dir ~$ rm file# remove file file ~$ rm –r dir# remove directory tree dir 05/14cja 201435

36 Lab 3 Exercise: Create a directory named tutorial in your home directory. In that directory, create a directory named sample and a directory named test. Create a file named msg in directory test that contains a copy of the file /etc/motd. 05/14cja 201436

37 Wildcards All Linux commands take wildcarded arguments Wildcards: ?Matches a single character *Matches zero or more characters [chars]Matches any of the chars [c 1 -c 2 ]Matches chars ‘c 1 ’ through ‘c 2 ’ [^chars]Matches any but the chars ~$ ls foo.?# match files named foo.x, where x is any character ~$ echo *.[cs]# echo files that end in.c or.s ~$ mv [o-z]* save# move files starting with o through z to directory save ~$ echo [^A-Z]?# ??? 05/14cja 201437

38 Shell redirection & pipelining 05/14 cja 2014 38

39 Shell redirection A Linux command can have its inputs and outputs redirected ~$ ls >foo# put list of files in current directory into file foo ~$ ls >>bar# add list of files in current directory to end of file foo ~$ sort <bar# sort lines from file bar ~$ sort <<EOF # sort lines entered at keyboard whiskey bravo tango EOF ~$ wc -l ~/mycounts # count number of lines from file /etc/motd and put result in file mycounts in my home directory 05/14cja 201439

40 More Linux commands More useful Linux tool commands ~$ grep string # show lines of input containing string ~$ tail# show last few lines of input ~$ head# show first few lines of input ~$ sort# sort the input 05/14cja 201440

41 Text files Watch out for source code or data files written on Windows systems Use these tools to analyze and convert source files to Linux format file dos2unix 05/14cja 201441

42 Editing 05/14 cja 2014 42

43 Editing text files Two recommended editors nano or pico "What you see is what you get" editor with on- screen help Simple to learn and use if you want to get started quickly vi or vim Powerful but more complex If you have time and inclination to become proficient, spend time here 05/14cja 201443

44 Permissions 05/14 cja 2014 44

45 File Permissions I Three permission bits, aka mode bits Files: Read, Write, Execute Directories: List, Modify, Search Three user classes User (File Owner), File Group, Other man chmod 05/14 cja 2014 45

46 File Permissions, examples -rwxr-xr-x cja lsait file read, write, and execute rights for the owner, read and execute for others -rwxr-x--x cja lsait same permissions as above, except only the owner can read the file, while all can execute chmod u=rwx,g=rx,o=x file drwxr-x--x cja lsait list, modify, and search for the owner, list and search for group, and execute only for others 05/14 cja 2014 46

47 Processes 05/14 cja 2014 47

48 Processes On Linux, every program runs in a process You can examine these processes man ps ps ps ax top 05/14cja 201448

49 Processes You can signal a running process To stop it, or "kill" it man kill 05/14cja 201449

50 Shell pipelining A Linux command can have its output connected to the input of another Linux command ~$ ls | wc –l# count files in current directory ~$ last | grep reboot# when did we reboot? Exercise: How many people are running MATLAB on your compute node? 05/14cja 201450

51 Any Questions? Charles J. Antonelli LSAIT Advocacy and Research Support cja@umich.edu http://www.umich.edu/~cja 734 763 0607 cja@umich.edu http://www.umich.edu/~cja cja@umich.edu http://www.umich.edu/~cja Please evaluate our course: http://umichlsa.qualtrics.com/SE/?SID=SV_3pzjrMdjGXtU DAh http://umichlsa.qualtrics.com/SE/?SID=SV_3pzjrMdjGXtU DAh 05/14cja 201451

52 References 1.http://en.wikipedia.org/wiki/History_of_Linux http://en.wikipedia.org/wiki/History_of_Linux 2.http://redhatlinux4u.blogspot.com/2011/11/file-hierarchy-system.html http://redhatlinux4u.blogspot.com/2011/11/file-hierarchy-system.html 3.William E Shotts, Jr., “The Linux Command Line: A Complete Introduction,” No Starch Press, January 2012. Download Creative Commons Licensed version athttp://downloads.sourceforge.net/project/linuxcommand/TLCL/13.07/TLCL-13.07.pdf. Licensed http://downloads.sourceforge.net/project/linuxcommand/TLCL/13.07/TLCL-13.07.pdfLicensed http://downloads.sourceforge.net/project/linuxcommand/TLCL/13.07/TLCL-13.07.pdf 05/14cja 201452

53 Extra Task: compile and execute simple programs on the Flux compute node Copy sample code to your login directory: cd cp ~brockp/cac-intro-code.tar.gz. tar -xvzf cac-intro-code.tar.gz cd./cac-intro-code Examine, compile & execute helloworld.f90: ifort -O3 -ipo -no-prec-div -xHost -o f90hello helloworld.f90./f90hello Examine, compile & execute helloworld.c: icc -O3 -ipo -no-prec-div -xHost -o chello helloworld.c./chello Examine, compile & execute MPI parallel code: mpicc -O3 -ipo -no-prec-div -xHost -o c_ex01 c_ex01.c mpirun -np 2./c_ex01 05/14cja 201453


Download ppt "Introduction to the Linux Command Line for High-Performance Computing Dr. Charles J Antonelli LSAIT ARS May, 2014."

Similar presentations


Ads by Google