Introduction to Unix, SGE, Emacs and ROOT (06/03/2010)

advertisement
Introduction to
Unix, SGE, Emacs & ROOT
Jianchun Wang
06/03/2010
Files for Reference
cp –r ~jwang/For_Group ~/UnixTest
.login
.tcshrc
login startup file
shell startup file
.Xdefaults
default X parameters by “xrdb –merge .Xdefaults”
.emacs
setup emacs environment
config
configure certain ssh settings
sample.job
SGE batch job sample script
hp1.root
example.C
for ROOT demonstration
06/03/10
Jianchun Wang
2
Linux Cluster
GigaBit local net
public net
New disk server
16 TB (max 48 TB)
hepc1, hepc2: dual CPU
2GB RAM, 150GB disk
Gate way, SGE master,
LHCb library service
/home disk
06/03/10
node1-15: single CPU,
1GB RAM, 160 GB disk
Disk server, dual CPU,
2GB RAM, 2.7 TB RAID
Provide data storage
Run background jobs
/tmp storage
Jianchun Wang
3
Unix Account
 Identity of your account:
home directory, shell
username, password, UID, GID, full name,
13:39@hepc1 ypcat passwd | grep jwang
jwang:$1$P8CxmAXK$.dRGuAxw6Y2vFsnyIImjB/:272:551:Jianchun Wang:/home/jwang:/bin/tcsh
 Login and logout




Use hummingbird exceed
ssh hepc1 –l jwang
exit, logout
sftp, scp
 Setting password:
passwd, yppasswd
 Shells:
tcsh (recommended), bash, csh, …
06/03/10
Jianchun Wang
4
Unix Shells
 A shell is the interface between the OS and the user. It interprets the
commands you enter to direct the OS to take an appropriate action.
 Two families of shell.
 Based on the Bourne shell: sh, ksh, bash, zsh.
 Based on the Berkeley/C shell: csh, tcsh.
 To show what shell you are using: in passwd file, finger, echo $SHELL, env,
printenv.
 You are using either tcsh or bash as login shell. To change to other
shell temporarily, type the shell as a command. Once you are done,
type “exit” to quit the temporary shell.
06/03/10
Jianchun Wang
5
Basics on Command
 Command prompt: %, $, or whatever prompt you set, e.g. 9:39@hepc1
for me.
 Basic format: command [-option(s)] [argument(s)]
 date -u
 gcc –o outputfile.o yourprogram.C
 Help on command: man.
 Search path: PATH is defined in your startup files. Mine is defined in
.tcshrc file.
10:27@hepc1 echo $PATH
/home/sge/root/bin/lx24x86:/lhcb/lib/lhcb/LBSCRIPTS/LBSCRIPTS_v5r1/InstallArea/scripts:/lhcb/lib/lhcb/C
OMPAT/COMPAT_v1r5/CompatSys/slc4_ia32_gcc34/bin:/lhcb/lib/lcg/external/Python/2.5.4p2/slc4_ia32_gc
c34/bin:/lhcb/lib/contrib/CMT/v1r20p20090520/Linuxi686:/home/jwang/bin:/usr/sue/bin:/bin:/usr/local/bin:/usr
/bin:/usr/bin/X11:/cern/pro/bin:/usr/kerberos/bin:/cern/pro/bin:/lhcb/lib/lcg/external/ROOT/pro/slc4_ia32_gcc
34/root/bin
 Start background process:
06/03/10
xterm &
Jianchun Wang
6
Input/output of Command
 The shell and many commands take input from standard input (stdin),
normally keyboard. And They write out to standard output (stdout), and
error output to standard error (stderr), normally the terminal screen.
 Redirection of stdin, stdout, stderr:
>
>&
<
|
>>
redirect stdout >! overwrite if you set protection (set noclobber)
redirect stdout, stderr
redirect stdin
redirect stdout to another command (pipe)
append stdout
 Examples:
 ls –l ~ | sort –k 5 > /tmp/filelist
 (date; echo $USER) >> ~/logfile
 grep –i set ~/.tcshrc | tee set_list | sort
06/03/10
Jianchun Wang
7
Shell Script and Profile Files
 A shell script is a file containing a sequence of commands which
can be executed by the shell.
 . scriptfile
( Bourne shell family)
 source script_file
( C shell family)
 scriptfile
( executed as a command, must be executable)
 User-specified startup files
 tcsh:
 bash:
.login,
(all in $HOME directory).
.tcshrc or .cshrc,
.bash_profile or .profile,
.logout.
.bashrc,
.bash_logout.
 There are also system startup files. They are different for
different computers setting by system administrator.
06/03/10
Jianchun Wang
8
Environment Variables
 Setting environment variables:
 setenv ROOTSYS /lhcb/lib/lcg/external/ROOT/pro/slc4_ia32_gcc34/root
(tcsh)
 ROOTSYS= /lhcb/lib/lcg/external/ROOT/pro/slc4_ia32_gcc34/root;
export ROOTSYS (bash)
 printenv, env, echo $PWD
 Changing command prompt:
 PS1=“Hello:”
(Bourne shell family)
 set prompt=“$cwd” (C shell family)
 set prompt="%U%T@%m%u "
11:05@hepc1 (mine)
 Some useful environment variables:
EDITOR, PRINTER, MAIL, HOME, PWD, PATH, MANPATH,
DISPLAY, TERM, HOST, SHELL, USER, …
06/03/10
Jianchun Wang
9
Command Alias and Recall
 Format of the alias command




alias new old
alias –x new=old
alias new=old
alias new old
(C shell)
(Korn shell)
(bash, zsh shell)
(tcsh shell)
 Recalling command: history






set history = 100 (tcsh shell)
history
give you a list of command just used
!!
reexecute the previous one
!n
reexecute command n
!text
reexecute the most recent one beginning with text
!?text?
reexecute the most recent one containing text
06/03/10
Jianchun Wang
10
File System
 File types: directories, ordinary file, special file, symbolic links.
 Path: absolute/full path name, relative path name.
 Special directories: / ~ – $HOME . .. $cwd $PWD ~username.
 Commands:











cd [directory]
pwd
ls [file]
rm file, rmdir directory, rm –fr directory
mv file_source file_target
cp file_source file_target
ln -s file_source file_target
chmod:
ugoa +–= rwx
eg. chmod a+x file, chmod 755 file
mkdir (–m mode, –p)
cat, more, less
find, wc, sort, grep, head, tail, awk
06/03/10
Jianchun Wang
11
Secure Shell

Systems exchange security key during. Communication data
are encoded with security key.

Remote login using ssh: Open ssh, hummingbird exceed
security shell, PuTTy, …

Transfer remote files:



sftp wangjc@lxplus.cern.ch
scp wangjc@lxplus.cern.ch:remoteFileName ./newFileName
Your files are in ~/.ssh/:
authorized_keys2, id_ras, id_rsa.pub, known_hosts, config

Password free to access node B from node A:
1.
2.
Generate key on node A: ssh-keygen –t rsa
Append id_rsa.pub on A into authorized_keys2 on B.
06/03/10
Jianchun Wang
12
Basic Editing with emacs
 GNU emacs is written in LISP. For many standard extension, emacs
knows the grammar. It has many other powerful functions. You should
learn it if you just start.
 Configuration with ~/.emacs.
(add-hook 'fortran-mode-hook 'turn-on-font-lock)
(load (expand-file-name "$EMACSDIR/lhcb"))
 Basic commands (most of them can be accessed via menu):










<ctrl-x><ctrl-f>
<ctrl-x><ctrl-c>
<ctrl-x><ctrl-s>
<ctrl-k>
<ctrl-w>
<ctrl-y>
<ctrl-<space>>
<ctrl-g>
<ctrl-_>
<ctrl-s>
06/03/10
edit a file or directory
exit
save file
delete from cursor to end of line
delete region
restore what you have deleted
mark the beginning of a region
abort current command
undo last edit
search
Jianchun Wang
13
Run Job with SGE



Cluster configuration

Master:
hepc1

Submit hosts:
hepc1, hepc2

Excecution:
hepc2, node1-15
Commands ( try with ~jwang/For_Group/sample.job )

qsub your_job_script [your_options]

qsub -q long@hepc2 your_job_script [your_options]

qstat –f

qdel your_jobi_d
Notes

It is set to have only one queue per CPU

There is no time limit.

It is recommended to use /tmp/your_name to store large output files during
running and move them to designated directory at the end of your job in
script.
06/03/10
Jianchun Wang
14
ROOT
 Setup proper environment parameters:
 setenv ROOTSYS /lhcb/lib/lcg/external/ROOT/pro/slc4_ia32_gcc34/root
 setenv LD_LIBRARY_PATH .:$ROOTSYS/lib:/usr/lib
 Add $ROOTSYS/bin in your PATH
 Root resource file: ~/.rootrc
 Run root program




root –help
root rootHistogramFile
root
Quit with .q
You can get syntax.
It opens the root histogram file as _file0
 Copy example files: ~jwang/For_Group/hp1.root, example.C
06/03/10
Jianchun Wang
15
Interactive Draw of A Histogram
15:20@hepc1 root hp1.root
root[0]
new TBrowser
ROOT Files  hp1.root  Vetra  SyrCommonModeNoise SyrPedCms_24  hAdcValue
root [1] hAdcValue->Draw(“colz”)
06/03/10
Jianchun Wang
16
Interactive Fit of A Histogram

Draw histogram
ROOT Files  hp1.root  Vetra  SyrCommonModeNoise SyrUpset_24  hAllSignal

Start FitPanel
root [2] gStyle->SetOptFit(11111)
root [3] hAllSignal->SetFillColor(4)
root [4] hAllSignal->Draw("hist")
root [5] hAllSignal->GetFunction("gaus")->SetLineColor(2)
root [6] hAllSignal->GetFunction("gaus")->Draw("same")

Change X/Y range etc.
06/03/10
Jianchun Wang
17
Run C++ Code In ROOT
root [4] .L example.C
root [6] example("hp1.root",24)
06/03/10
Jianchun Wang
18
To Learn More
 Unix/Linux
 Any Unix / Linux book.
 Red Hat Linux web
https://www.redhat.com/docs/manuals/linux/
 Emacs
 GNU web site
http://www.gnu.org/software/emacs/manual/
 Root
 Manual: http://root.cern.ch/root/doc/RootDoc.html
 Classes reference: http://root.cern.ch/root/Reference.html
06/03/10
Jianchun Wang
19
Download