Lecture Seven
Linking; Process Management; Shell Startup; Command History; alias
Linking
ln (link) command gives a file an additional name, or pointer, from the same or a different directory
- one common use of links is to give a long pathname an easy to remember shortcut
- hard links
ln file1 file2 - gives file1 the additional name file2 (hard link)
ls -i file1 - and
ls -i file2 - will give same index (or inode) numbers, they are physically the same file
- a file will not be removed until all of its hard links are removed (using
rm)
- symbolic links (or soft links)
ln -s file1 file2 - gives file1 the additional name file2, as an indirect pointer
- a file can be removed even if it still has symbolic links
ln -s path/dir1 dir2 - gives dir1 the additional name dir2 in the current directory
- directories can only be linked symbolically (except by the administrator)
- symbolic links are useful where you wish to recreate a file without having to remove and recreate a lot of links
Process Management
- a process is the execution of a command
- every process has a process id
- a parent process forks (or spawns) a child process
- & at the end of a command line will run the command in the background, and gives the unique process identification (PID) and a job number
- eg. ls -lR / > test 2> testerror & (recursive listing of all files and directories under the root directory)
- eg. tail -f test & (endless loop waiting for additional lines)
- ps - will display process status with PID, for current terminal only
- ps -U username - will display status for all terminals belonging to specified username
- ps -f - will display additional info, such as parent PID (PPID) of each process
- ps f - will display processes showing parent/child relationships
- there are LOTS of ps options, varies by system
- top - will display resource usage, continually updated (end with 'q')
- jobs - will show job number of processes
- kill pid# (or %job) - will abort process with specific PID or job number
- kill -9 pid# - will abort process that has been written to ignore other signals
- kill -stop pid# - will suspend (stop) a background job
- -z - will suspend a foreground job
- bg %job - will start running a suspended process in the background, defaults to last suspended job
- fg %job - will start running a suspended process in the foreground
Shell Startup
bash startup
- upon login,
/etc/profile executes
- controlled by system administrator
- common to all shells
- then
~/.bash_profile executes
- used to customize environment for each user (eg. set PATH, umask, mesg, aliases, etc.)
.bash_login is used if .bash_profile doesn't exist
.profile is used if .bash_profile and .bash_login don't exist
.bashrc is used for interactive sub-shells
.bash_logout is executed when shell is exited
ksh startup
- upon login, /etc/profile executes, then .profile in home directory
- .kshrc is used for interactive sub-shells
Command History
.bash_history is used to store recently executed command lines
- allows use of arrow keys to move back and forth within history
-r can be used to search history by keyword
alias
- assigns a new name to an existing utility
- eg.
alias dir=ls
- eg.
alias ls='ls -al'
- eg.
alias clearfile='cat /dev/null >'
- can be useful, but can also make your scripts cryptic