Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 45

UNIX Tools G22.

2245-001, Fall 2000


Danielle S. Lahmani email: lahmani@cs.nyu.edu Lecture 2
2000 copyright Danielle S. Lahmani

Overview
Review of file manipulation utilities UNIX process subsystem Overview of the UNIX shells csh/ksh Unix tools project description

2000 copyright Danielle S. Lahmani

File Attributes
Stored in the file I-node Files ownership: user and group file permissions: read, write, execute file modification times file type: regular, directory, link, symbolic link, special file
2000 copyright Danielle S. Lahmani

Utilities for Manipulating file attributes


chmod change file permissions chown change file owner chgrp change file group only owner or super-user can change file attributes upon creation, default permissions given to file modified by process umask value
2000 copyright Danielle S. Lahmani

File Permissions
Three types of permissions:
read, process may read contents of file write, process may write contents of file execute, process may execute file

three sets of permisions:


permissions for owner permissions for group permissions for other

access checks made against processs effective ids


2000 copyright Danielle S. Lahmani

Chmod command
Symbolic access modes
example: chmod +r file

Octal access modes


octal
0 1 2 3 4 5 6 7

read
no no no no yes yes yes yes

write
no no yes yes no no yes yes

execute
no yes no yes no yes no yes

2000 copyright Danielle S. Lahmani

Directory permissions
Same types and sets of permissions as for files
read: means process may a read a dir (i.e., list files) write: process add/rm files in dir execute: process can search, access files, in dir or subdir

2000 copyright Danielle S. Lahmani

Common Utilities for Managing files and directories


pwd cat, ed, vi, emacs ls rm mv cp ln mkdir and rmdir lp: wc print process current dir create files list contents of directory remove file rename file copy a file create a hard link to a file create and remove dir print a file counts the words in a file

2000 copyright Danielle S. Lahmani

Unix Processes
Definitions: program: collection of bytes and data stored in a file image: computer execution environment process: execution of an image multi-tasking: many processes can execute simultaneously in Unix.
2000 copyright Danielle S. Lahmani

Unix Process Groups


process id: unique id assigned to process upon creation process group id: id of the group to which the process belongs to foreground process group: is the process group associated with a terminal at a time background process group: processes created by you not in the foreground group
2000 copyright Danielle S. Lahmani

Process Relationships
A process spawns another process using the fork(2) system call. The creating process is the parent process The newly created process is the child process. fork() returns 0 to the child process fork() returns the process_id of the child to the parent process

2000 copyright Danielle S. Lahmani

Process Relationship (continued)


exec(2) :To run a new program, the child, will issue the exec( ) system call and overwrites itself with the code and initial data of the new program, thus initiating the execution of the new program wait(2): a parent can suspend its execution until one or more child processes complete via a wait(2) system call
2000 copyright Danielle S. Lahmani

Process Relationships (continued)


exit(2) :upon terminations, process can set an exit status available to parent. Code used
zero for success non-zero for failure

2000 copyright Danielle S. Lahmani

Example: Program that creates a new process to copy files Reference: M.Bach, "The Unix Operating system", p 11.
main(argc,argv) int(argcl char *argv[]; {/* assumes 2 args, source and target files */ if ( fork() == 0) { /* child process */ execl("cp"."cp",argv[1],argv[2],0); } /* parent process */ wait(int *) 0); printf("copy done\n");

2000 copyright Danielle S. Lahmani

Fork operation
After fork operation shared text

parent process data

child process data

2000 copyright Danielle S. Lahmani

After exec of prog2 in child


(prog2 is cp in example)
After exec "prog2" in child parent process data child process data

prog text data unchanged

prog2 text data

2000 copyright Danielle S. Lahmani

Unix process genealogy


Process generation Init process 1 forks init processes

init execs

init execs

Init execs

getty

getty execs

getty

login execs

/bin/sh
2000 copyright Danielle S. Lahmani

Process permissions
real id and one of more real group id set at login. effective uid and effective group id determine process access to read/write/search/execute files or dir. umask() file mode creation mask, used when file or dir created by process
2000 copyright Danielle S. Lahmani

Signals
Signal: mesg a process can send to a process or process group, if it has appropriate permissions. mesg number represented by a symbolic name

for each signal, receiving process can:


explicitly ignore signal specify action to be taken upron receipt (signal handler) otherwise, default action takes place (usually process is killed)
2000 copyright Danielle S. Lahmani

Signals (continued)
Example: When a child exists, it send a SIGCHLD signal to its parent. When the parent issues a wait, it tells the system it wants to catch the SIGCHLD signal When a parent does not issue a wait, it ignores the SIGCHLD signal
2000 copyright Danielle S. Lahmani

Inter-process Communication
Related Processes
signals read/write regular files

pipes: when a process B tries to read from a pipe


returns data if process A has written to pipe returns with EOF, if no other process has pipe open for writing suspends execution until process A writes data to it child returns exit value to waiting parent process
2000 copyright Danielle S. Lahmani

Interprocess Communication
Unrleated Processes
FIFO (named Pipes) System V IPC msg queues semaphores shared memory sockets (client/server model)

2000 copyright Danielle S. Lahmani

Process Environment includes:


Process id and process group id open files current working directory real and effective user and group ids file creation mask (umask) resource limits signal action settings set of named local variables
2000 copyright Danielle S. Lahmani

File Descriptors
each process associates a number or handle, called file descriptor, (fd) with each file it has opened. At login, three files associated with terminal
standard input: fd 0, open for reading standard output: fd 1, open for writing standard error: fd 2, open for reading,writing

process inherits parents file descriptors unless specified (close-on-exec)


2000 copyright Danielle S. Lahmani

Process Subsystem utilities


ps kill wait
nohup

sleep nice

monitors status of processes terminate a process (by pid) parent process wait for one of its children to terminate makes a command immune to the hangup and terminate signal sleep in seconds run processes at low priority
2000 copyright Danielle S. Lahmani

Setuid and Setgid Mechanisms


Mechanism pattented process effective uids are different from its real uids when it executes a set-uid or setgid program. the process effective uid and gid become that of the executable example: changing your passwd

2000 copyright Danielle S. Lahmani

Security Problems
Permissions on the executable program and directory in which it is contained must be correct, otherwise easily replaced by Trojan Horse. Some systems remove setuid and setgid bits whenever files are modified as a security precaution.

2000 copyright Danielle S. Lahmani

Overview of the shell


Command line interpreter and programming language between operating system and user user may select which shell to run:
/bin/csh /bin/ksh other shells Cshell Korn shell

shell scripts: files of UNIX and shell commands executed from a UNIX shell
2000 copyright Danielle S. Lahmani

Working with the shell


Shell invoked automatically during a login session or manually at the prompt by user
1. Reads a special startup file for initialization 2. Displays prompt and waits for user command 3. Executes user command and goes to step 2, unless contrl D, then shell terminates

2000 copyright Danielle S. Lahmani

Redirection of input/ouput
Redirection of output: >, >>
example:$ man ls > info.ls

Redirection of input: <


example: $ cat <input.data

using filters: pipes


example: $ cat file| wc -l; /* counts the number of line in file */
2000 copyright Danielle S. Lahmani

Shell Core Features


Simple and complex commands redirection of input/output pipes wildcards command substitution background processes shell variables here documents built-in cmds programming constructs
2000 copyright Danielle S. Lahmani

Simple Commands supported


simple command: sequence of non blanks arguments separated by blanks or tabs. 1st argument (numbered zero) usually specifies the name of the command to be executed. Any remaining arguments (with a few exceptions, see meta-characters)
Are passed as arguments to that command. Arguments may be filenames, pathnames, directories or special options
2000 copyright Danielle S. Lahmani

Complex commands
Multiple commands Command groupings Conditional command execution

2000 copyright Danielle S. Lahmani

File name expansion


Wildcards
* matches any string of characters ? matches any single character [list] matches any character in list [lower-upper] matches any character in range lower-upper inclusive

2000 copyright Danielle S. Lahmani

Command substitution
A command can be placed with grave accents ` ` to capture the output of command often used with shell variables

2000 copyright Danielle S. Lahmani

Shell Scripts
A shell script is a regular text file that contains shell or UNIX commands Before running it , it must have execute permissions ( see chmod +x filename) Very useful for automating repetitive task and administrative tools and for storing commands for later execution

2000 copyright Danielle S. Lahmani

Shell Scripts (continued)


When a script is run , kernel determines which shell it is written for by examining the first line of the script If 1st line is just #, then it is interpreted by a C shell If 1st line is of the form #!pathname, then the executable Pathname is used to interpret the script If neither rule 1 nor rule 2 applies, the script is interpreted by a Bourne shell.
2000 copyright Danielle S. Lahmani

Here Documents
Shell provides alternative ways of supplying standard input to commands Shell allows in-line input redirection using << called here documents
format command [arg(s)] << arbitrary-delimiter command input : : arbitrary-delimiter arbitrary-delimiter should be a string that does not appear in text
2000 copyright Danielle S. Lahmani

Shell Variables
Shell has several mechanisms for creating variables. A variable is a name Representing a string value
Shell variables can save time and reduce typing errors, variables

Allow you to store and manipulate information two types: local and environmental
local are set by the user of by the shell itself Positional parameters variables are normally set only on a command line
2000 copyright Danielle S. Lahmani

Environmental Variables
NAME $HOME directory $PATH $MAIL $USER $SHELL $TERM MEANING absolute pathname of your home a list of directories to search for absolute pathname to mailbox your user id absolute pathname of login shell type of your terminal

2000 copyright Danielle S. Lahmani

Positional parameters
when a shell procedure is invoked, the shell implicitly creates positional parameters. The name for a positional parameter is a number. Positional parameters are used mainly in scripts.
$0 is the argument in position zero on the command line $1 is the first argument $1.. $9 $n refers to the nth argument on the command line if applicable $# the number of positional parameters, not counting 0 $* the list of all arguments
2000 copyright Danielle S. Lahmani

QUOTING
Quoting restores the literal meaning to characters that are processed specially by the shell. The literal quotes are not passed on to the command Single quotes ( ' ) inhibit wildcard replacement, variable substitution, and

command substitution
Double quotes ( " ) inhibit wildcard replacement only When quotes are nested, only the outer quotes have any effect
2000 copyright Danielle S. Lahmani

BUILT-IN commands
commands that are internal to the shell Faster to execute and more efficient than other commands
Shell does not have to fork to execute the command Trade-off: redirection of input/output not allowed for most of these

2000 copyright Danielle S. Lahmani

Built-in commands (continued)


built-in commands common to the 3 shells:
echo cd wait exit exec shift umask eval

2000 copyright Danielle S. Lahmani

Subshells
When a parent shell forks a child to execute a command, the new child shell is sometimes called a subshell. This happens when: a group command is executed ( $(cmd1; cmd2; cmd3) ) a shell script is executed ( $myscript ) a background job is executed ( cmd1&) A shell inherits the parent's environment but not the parent's local variables.

2000 copyright Danielle S. Lahmani

You might also like