Process Title

Commands covered in this section: ps wait sleep fg bg nohup kill

Foreword

When using UNIX, process management becomes very important, because a given program can start more than one process and you can have suspended processes, processes running in the background, ...
In this section we will show you how to see what processes you are running, how to run a process in the background and how to bring them to the foreground.



Viewing Running processes

Use ps to view what processes are running, this will give you the following output:

PID TTY TIME COMMAND
067 console 00:05 sh
063 tty02 10:20 /bin/local/usr/zsh
062 tty02 10:22 ps
060 tty00 12:05 /net/pppd

This tells you what the Process Id of the given process is, where it is being run, at what time it started, and what command is being executed.
To get more details use ps -f, this will give you the userid which started the process, the parent process which spun the child process, and a few more ... There is also the ps -l option which is an extended version of the output ps provides, all the extra information given with the -l option is really of use just for system admins, you can have a go at it but it won't be of much use.

Further useful options ps offers are also available threw the command line options of ps. Use ps -e to get details about every process running, ps - u userlist gives details about all the processes run by the given user. Use ps -t ttynn gives details about all processes run on the given device, you can replace ttynn by any valid device listed in the /dev directory.



Process Execution

To suspend the execution of a process to a later time use sleep time replacing time with the time in seconds to wait before executing the process.

To run a process after another process use wait PID where PID is the process Id to wait for. After that process is executed the specified process will run. If you do not give a PID your process will wait for all other background processes to finish executing first.



Background & Foreground Processes

To run a process in the background use bg commands, where commands is what you want your shell to execute. Only non- interactive processes can run in the background and interactive process will be just suspended.
To bring a process to the foreground use fg process, the process will then run in the foreground. You can use fg to bring to the foreground any suspended process or any process running in the background.



Background Processes (Advanced Use)

At certain time the need to leave a process running when you log off. To do this the nohup command is availabe. This will in effect start the process and let you log off ignorinag any hangup signals. Use nohup command args... &, this will start the command you specify and pass arguments to it (if any) leaving the command to execute when you log off. The & sign is required because the nohup command will not cause the process to run in the backgound automatically, so the & is used to start running the process.



Killing Processes

It might, at some point, become necessary to kill/terminate a process. This is most commonly used to terminate a process which is no longer responding, or to kill all processes before logging out. Leaving running processes which are practically useless will slow down your system, so make sure no processes are left running. This is just a case of cleaning up after use type of situation.
Use kill -s SIGNAL PID to send a signal to the given PID. If you do not know which signal to use type kill -l to get a list of all available signals.
To kill a process you would use the KILL signal as such: kill -s KILL PID, this would in effect terminate the process indicated by its PID.
To find out what signal terminated the previous shell command use kill -l $?.
Note that indiscriminate use of kill can get you into trouble, and that you will only be allowed to kil you own processes.



< Previous: Making It Easier ^ Next: The Internet >
Index

Frankie Blaskovic
Last modified: Sun Aug 10 11:54:37 BST 1997