30
Introduction to UNIX

Introduction to UNIX. 2 Multitasking zForeground yCurrent Task yThe Command Running at the `$` Prompt zBackground yCommand Running Behind the Scenes yNot

Embed Size (px)

Citation preview

Introduction to UNIX

2

Multitasking

Foreground Current Task The Command Running at the `$`

PromptBackground

Command Running Behind the Scenes Not Interactive (e.g. text editor)

3

Multitasking

Background Tasks & Perform Command in the

Background$ who > whoson &[1] 10946 $

$ who > whoson &[1] 10946 $

Important Notes Logoff Terminates Background Tasks Do Not Overload The System Can Not Require Keyboard Input Screen Output May Not Be Desirable

4

Multitasking

Background Tasks nohup UnixCommand

Prevents Command From Terminating on Logoff

$ nohup who &nohup: appending output to 'nohup.out'$

$ nohup who &nohup: appending output to 'nohup.out'$

$ nohup who > whoson &$

$ nohup who > whoson &$

No output file specified. Output redirected to nohup.out

Output redirected to whoson

5

Multitasking

Every Command is Assigned a Unique Number

Process ID (PID)ps Display Currently Running Tasks $ who > whoson;sleep 15 &$

$ who > whoson;sleep 15 &$

$ psPID TTY STAT TIME COMMAND20174 p1 S 0:00 login -h 20175 p1 S 0:00 -sh20241 p1 S 0:00 sleep 1520244 p1 R 0:00 ps$

$ psPID TTY STAT TIME COMMAND20174 p1 S 0:00 login -h 20175 p1 S 0:00 -sh20241 p1 S 0:00 sleep 1520244 p1 R 0:00 ps$

6

Multitaskingps [-aux]

Display Currently Running Processes (Tasks) -a All User Processes -u User Info -x Not Attached to a Terminal

$ ps -auxUSER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMANDbin 131 0.0 0.0 896 0 ? SW Sep 9 0:00 (portmap)nobody 30221 0.0 4.1 1184 608 ? S Sep 16 0:00 httpdnobody 30224 0.0 4.3 1196 632 ? S Sep 16 0:00 httpdjsmith 20115 0.0 5.2 1024 776 p0 S 21:21 0:00 login -h jsmith 20116 0.0 3.2 1048 472 p0 S 21:21 0:00 -shrdefe 20174 0.0 5.2 1024 776 p1 S 21:36 0:00 login -h rdefe 20175 0.0 2.9 1048 428 p1 S 21:36 0:00 -shrdefe 20245 0.0 2.8 928 412 p1 R 21:47 0:00 ps auxroot 1 0.0 0.3 884 56 ? S Sep 9 0:33 init [3]

$ ps -auxUSER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMANDbin 131 0.0 0.0 896 0 ? SW Sep 9 0:00 (portmap)nobody 30221 0.0 4.1 1184 608 ? S Sep 16 0:00 httpdnobody 30224 0.0 4.3 1196 632 ? S Sep 16 0:00 httpdjsmith 20115 0.0 5.2 1024 776 p0 S 21:21 0:00 login -h jsmith 20116 0.0 3.2 1048 472 p0 S 21:21 0:00 -shrdefe 20174 0.0 5.2 1024 776 p1 S 21:36 0:00 login -h rdefe 20175 0.0 2.9 1048 428 p1 S 21:36 0:00 -shrdefe 20245 0.0 2.8 928 412 p1 R 21:47 0:00 ps auxroot 1 0.0 0.3 884 56 ? S Sep 9 0:33 init [3]

7

Multitasking

kill [-9] PID1 PID2 … PIDN

Stop (kill) A Currently Running Process Can Only Stop Your Processes -9 `Sure Kill` $ kill 20241

$

$ kill 20241$

$ psPID TTY STAT TIME COMMAND20174 p1 S 0:00 login -h 20175 p1 S 0:00 -sh20241 p1 S 0:00 report120244 p1 R 0:00 ps$

$ psPID TTY STAT TIME COMMAND20174 p1 S 0:00 login -h 20175 p1 S 0:00 -sh20241 p1 S 0:00 report120244 p1 R 0:00 ps$

$ kill -9 20241$

$ kill -9 20241$

$ kill 0$

$ kill 0$

8

Multitasking

jobs List background jobskill %1 Kill background job 1

$ jobs[1] Running prog1 &[2]- Running report23 &[3]+ Running x57 &$ kill %2[2]- Terminated report23$

$ jobs[1] Running prog1 &[2]- Running report23 &[3]+ Running x57 &$ kill %2[2]- Terminated report23$

9

Command Line Editing

Command History

$ history 9 653 ls -l data 654 pwd 655 vi junk 656 pwd 657 ls data 658 cat data/junk 659 cat junk 660 who 661 ls | grep m$

$ history 9 653 ls -l data 654 pwd 655 vi junk 656 pwd 657 ls data 658 cat data/junk 659 cat junk 660 who 661 ls | grep m$

Display the last 9 commands

10

Command Line Editing

Editing Commands on the command line Setting command editor to vi Commands can be changed using vi editing commands

$ set –o vi$ history 3 659 cat junk 660 who 661 ls | grep m$ ls | grep m

$ set –o vi$ history 3 659 cat junk 660 who 661 ls | grep m$ ls | grep m

Press ESC – to return last command

11

Command Line Editing

Editing commands using fc

$ history 3 653 ls -l data 654 pwd 655 vi p1$ fc 656$$ fc –s 660

$ history 3 653 ls -l data 654 pwd 655 vi p1$ fc 656$$ fc –s 660

Edit command using vi. Command is run when you exit vi.

Run command 660

12

Command Aliases

Define Command PreferencesRedefine or create new or compound

commands$ alias ls=“ls –p”$ alias cp=“cp –i”$ aliasalias ls=‘ls –p’alias cp=‘cp –i’$ lsa999 et mail/ mymail xyzbin/ examples-cpio mbox public_html/

$ alias ls=“ls –p”$ alias cp=“cp –i”$ aliasalias ls=‘ls –p’alias cp=‘cp –i’$ lsa999 et mail/ mymail xyzbin/ examples-cpio mbox public_html/

13

Command Aliases

Disabling Aliases

$ aliasalias ls='ls -p‘$ $ lsa999 et/ mail/ mymail$

$ aliasalias ls='ls -p‘$ $ lsa999 et/ mail/ mymail$

$ \lsa999 et mail mymail$

$ \lsa999 et mail mymail$

$ unalias ls$

$ unalias ls$

14

Shell ScriptsText File Containing Unix CommandsMust Use Correct Commands & Syntax

Options, Arguments, One Command per Line, etc.

$ cat llls -l $ sh ll-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 feb-rw-r--r-- 1 rdefe unix 62 Sep 12 21:47 ll$

$ cat llls -l $ sh ll-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 feb-rw-r--r-- 1 rdefe unix 62 Sep 12 21:47 ll$

$ chmod u+x ll$ ll-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 feb-rwxr--r-- 1 rdefe unix 62 Sep 12 21:47 ll$

$ chmod u+x ll$ ll-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 feb-rwxr--r-- 1 rdefe unix 62 Sep 12 21:47 ll$

15

Shell Scripts

echo [String] Display a Message to the Screen

$ cat llecho “my ls command”ls -l $ llmy ls command-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 feb-rwxr--r-- 1 rdefe unix 62 Sep 12 21:47 ll$

$ cat llecho “my ls command”ls -l $ llmy ls command-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 feb-rwxr--r-- 1 rdefe unix 62 Sep 12 21:47 ll$

16

Shell Scripts

Passing Arguments to Shell Scripts Positional Parameters

$ cat llls -l $ ll data

$ cat llls -l $ ll data

List the contents of a directory?

No!

$ cat llls -l $1 $ ll data

$ cat llls -l $1 $ ll data

List the contents of a directory?

Yes!

17

Shell Scripts

Passing Arguments to Shell Scripts Positional Parameters

$ cat llls -l $1 $2 $3$

$ cat llls -l $1 $2 $3$

$ ll data mail docs$ ll data mail docs

$0 Script File Name

$1 - $9 Arguments 1-9

$* All Arguments

$0

18

Shell Scripts

Positional Parameters Use Any Where, Any Place for Any Purpose

$ cat mymovemv $1 $1.new$

$ cat mymovemv $1 $1.new$

$0 Script File Name

$1 - $9 Arguments 1-9

$* All Arguments

$ cat mymorepr -n $* | more$

$ cat mymorepr -n $* | more$

$ cat mylogdate >> logwho >> loggrep $1 log$

$ cat mylogdate >> logwho >> loggrep $1 log$

19

Shell Scripts

Examples

$ cat paramecho "the number of parameters passed = $#"

echo "param 0 = $0"echo "param 1 = $1"echo "param 2 = $2"echo "param 3 = $3"echo "param * = $*"$

$ cat paramecho "the number of parameters passed = $#"

echo "param 0 = $0"echo "param 1 = $1"echo "param 2 = $2"echo "param 3 = $3"echo "param * = $*"$

$ param aaa bbb cccthe number of parameters passed = 3param 0 = ./paramparam 1 = aaaparam 2 = bbbparam 3 = cccparam * = aaa bbb ccc

$ param aaa bbb cccthe number of parameters passed = 3param 0 = ./paramparam 1 = aaaparam 2 = bbbparam 3 = cccparam * = aaa bbb ccc

20

Unix File Permissions

Determines Who Can Access What File

$ ls -l-rwxrw-r-- 1 rdefe unix 53 Sep 12 21:46 p1-rwxr-xr-x 1 rdefe unix 62 Sep 12 21:47 mar$

$ ls -l-rwxrw-r-- 1 rdefe unix 53 Sep 12 21:46 p1-rwxr-xr-x 1 rdefe unix 62 Sep 12 21:47 mar$

r Read Permission

w Write Permission

x Execute Permission

- Place Holder/No Permission

21

Unix File Permissions

$ ls -l-rwxrw-r-- 1 rdefe unix 53 Sep 12 21:46 p1-rwxr-xr-x 1 rdefe unix 62 Sep 12 21:47 mar$

$ ls -l-rwxrw-r-- 1 rdefe unix 53 Sep 12 21:46 p1-rwxr-xr-x 1 rdefe unix 62 Sep 12 21:47 mar$

Owner Group

OwnerGroupOther

Ow

ne

r

Gro

up

Oth

er

22

Unix File Permissions

$ ls -l-rw-rw-r-- 1 rdefe unix 53 Sep 12 21:46 p1

$ chmod gu+x p1$ ls -l-rwxrwxr-- 1 rdefe unix 53 Sep 12 21:46 p1

$ ls -l-rw-rw-r-- 1 rdefe unix 53 Sep 12 21:46 p1

$ chmod gu+x p1$ ls -l-rwxrwxr-- 1 rdefe unix 53 Sep 12 21:46 p1

chmod [u|g|o|a] [+|-|=] [r|w|x] File1 File2 … FileN

+ Add Permission

Note: You can only change permissions on files that you own.

23

Unix File Permissions

$ ls -l-rwxrwxr-x 1 rdefe unix 53 Sep 12 21:46 p1

$ chmod g-w,-x p1$ ls -l-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 p1

$ ls -l-rwxrwxr-x 1 rdefe unix 53 Sep 12 21:46 p1

$ chmod g-w,-x p1$ ls -l-rw-r--r-- 1 rdefe unix 53 Sep 12 21:46 p1

chmod [u|g|o|a] [+|-|=] [r|w|x] File1 File2 … FileN

- Remove Permission

24

Unix File Permissions

$ ls -l-rwxrw-r-- 1 rdefe unix 53 Sep 12 21:46 p1

$ chmod u=r,g=rx p1$ ls -l-r--r-xr-- 1 rdefe unix 53 Sep 12 21:46 p1

$ ls -l-rwxrw-r-- 1 rdefe unix 53 Sep 12 21:46 p1

$ chmod u=r,g=rx p1$ ls -l-r--r-xr-- 1 rdefe unix 53 Sep 12 21:46 p1

chmod [u|g|o|a] [+|-|=] [r|w|x] File1 File2 … FileN

= Set to a specific value

25

Shell Variables

Store Values & Text InformationValues Are Lost When You Logoff

$ x=678$ echo $x678

$ mesg=“This is a text string”$ echo $mesgThis is a text string

$ x=678$ echo $x678

$ mesg=“This is a text string”$ echo $mesgThis is a text string

26

Shell Variables

Environmental VariablesStores Important Setup Information

$ envPS1=$PATH=/usr/local/bin:/bin:/usr/bin:/usr/bin/mhHOSTNAME=unix.ccri.cc.ri.usUSER=rdefeMAIL=/var/spool/mail/rdefeHOME=/home/rdefeTERM=vt220LOGNAME=rdefe$

$ envPS1=$PATH=/usr/local/bin:/bin:/usr/bin:/usr/bin/mhHOSTNAME=unix.ccri.cc.ri.usUSER=rdefeMAIL=/var/spool/mail/rdefeHOME=/home/rdefeTERM=vt220LOGNAME=rdefe$

27

Shell Variables

Changing Environmental Variables PS1

$ echo $PS1 $$ export PS1='> '>> export PS1='$PWD> '/home/rdefe> cd /etc/etc> cd/home/rdefe> /home/rdefe> export PS1='$ '$

$ echo $PS1 $$ export PS1='> '>> export PS1='$PWD> '/home/rdefe> cd /etc/etc> cd/home/rdefe> /home/rdefe> export PS1='$ '$

28

Shell Variables

Changing Environmental Variables PATH

$ echo $PATH/usr/local/bin:/bin:/usr/bin:.$ export PATH=$PATH:$HOME/bin$ echo $PATH/usr/local/bin:/bin:/usr/bin:.:/home/rdefe/bin$

$ echo $PATH/usr/local/bin:/bin:/usr/bin:.$ export PATH=$PATH:$HOME/bin$ echo $PATH/usr/local/bin:/bin:/usr/bin:.:/home/rdefe/bin$

29

Shell VariablesSaving Environmental Changes .bash_profile

Shell Script Run at Login TimeJust Like Any Shell Script

$ cat .bash_profilemesg nexport PATH=$PATH:$HOME/binexport PS1='$PWD> 'who -q$

$ cat .bash_profilemesg nexport PATH=$PATH:$HOME/binexport PS1='$PWD> 'who -q$

30

Shell Variables

Using Shell Variables in Shell Scripts

$ cat mycopyend=123cp $1 $HOME/$1.$end$$ mycopy mbox

$ cat mycopyend=123cp $1 $HOME/$1.$end$$ mycopy mbox

Creates the file mbox.123 in your home directory