Visit Our UNIX and Linux User Community


Obtaining A Process ID (PID)


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Obtaining A Process ID (PID)
# 1  
Old 10-26-2001
Obtaining A Process ID (PID)

Is there any way I can get UNIX to return the Process ID of a process when I actually issue the command to invoke the process?

For example, if I was to launch an emacs process in batch mode, by issuing the UNIX command :

% emacs file.txt&

then UNIX would return the Process ID (PID). "2343", for example.
Is this possible?

The reason I ask this question is because I am invoking programs from a remote machine and need to periodically probe for which processes are running to see whether the processes are still running or if they have terminated.

I suppose I could just issue a 'ps' command, pipe the output to a file and then grep the file for the commands issued, but the processes I am looking for depend on the directory they were invoked from and I don't think the 'ps' utility records the directory which a program/process was executed from - or does it?

Many thanks!
# 2  
Old 10-26-2001
There's no need to double post your question like that. I don't think any of us ignore any of the forums on this small site.

Your question is a shell issue. The pid of a subprocess in ksh is available in the ! variable.

So you want to do:
emacs file.txt &
pid=$!

(Not that I understand why you'd background an editor, but we'll ignore that.)

If your shell doesn't have a ! variable, then please tell us which shell you are using.
# 3  
Old 10-26-2001
Sorry for the double post.

How does the "pid=$!" command reveal the value of the ! variable for the process invoked in the "emacs file.txt&" command?

Is the "pid=$!" command issued separately to the emacs command, or is it on the same command line?

Essentially, all I want to do is 'echo' the value of the PID for each program execution command.

Could you please show me an example?

Many thanks.
# 4  
Old 10-27-2001
To just echo the pid, do this:
emacs file.txt &
echo $!
# 5  
Old 10-28-2001
$!

In short $! returns you the process id of the last process you ran in the background.

Smilie
# 6  
Old 10-29-2001
Thankyou very much for your help! My only outstanding query involves the allocation of a PID to UNIX processes:

Is it simply a case of UNIX maintaining a pool of 'free' PIDs, and then allocating a free PID when a process is run by a user. Conversely, the PID of a terminated process is returned to the 'free' pool ready for another process to receive?

I presume that at any point in time on the UNIX machine, no 2 processes will have the same PID?

Thanks!
# 7  
Old 11-05-2001
The algorithm for allocating process IDs differs by type of OS. Some OS types allocate in sequential order up to 32,000 and then start over at the beginning using free slots. Others, namely AIX, will reuse PIDs as they are freed. Regardless of how the PID is allocated, the PID is actually an index into the Process Table in the Kernel which is an array of structures of type proc (see /usr/include/sys/proc.h). If the process is runnable, active, or in a zombie state, the slot in the process table is marked as full. When the process dies and is successfully cleaned up, the slot is available for allocation by the dispatcher when a new process is started. So, to summarize, PIDs are unique in all types of UNIX.
This User Gave Thanks to wizard For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #238
Difficulty: Easy
Steve Jobs was the first to build a theoretical model for communication using packet switching.
True or False?

10 More Discussions You Might Find Interesting

1. AIX

How to get process name from PID?

HI, i used ps -ef | grep 3539052 | grep -v grep and i got a output like ths root 3539052 3407918 0 May 07 - 709:31 /usr/sbin/syslogd but what i need is instead of full path /usr/sbin/syslogd i want only the process name that is 'syslogd' here. (3 Replies)
Discussion started by: sumanthupar
3 Replies

2. AIX

Swapper Process #PID more than 1

Hi I would like to know more about swapper process.. I knew that swapper is the first process with PID#0, used to perform process swap operations. It used to swap entire processes But sometimes I find swapper process with PID#264 So my doubt is how many swapper process can exist in a system?... (2 Replies)
Discussion started by: Priya Amaresh
2 Replies

3. Programming

[C] Process pid by name

Hi I use linux OS. I've already written a function that allow me to get the process name by pid. (searching in /proc). Now I'd like to perform the inverse task.I mean get the process pid by its name. I could write a function that search in every folder in /proc for the process name, but i... (2 Replies)
Discussion started by: Dedalus
2 Replies

4. Shell Programming and Scripting

getting pid from a process

Hi all, i was able to redirect pid of process to a file in the following way ps aux|awk '$11 == "/Applications/ProjectX/DServer" >> /Applications/ProjectX/DServer.pid it works fine but if one folder name caontains space its not working like below ps aux|awk '$11 == "/Applications/Project\... (1 Reply)
Discussion started by: kirankumars
1 Replies

5. Shell Programming and Scripting

Get an PID of particular process

Hi I have written a shell script to find and kill the particular process. Here in shell script i have written the code like cnt = $(ps -ef | grep Shree) echo $cnt I am getting the output root 2326 2317 0 14:39:46 pts/1 0:28 Shree -f fdc.fbconf FDCapp.fbapp Here I want to... (2 Replies)
Discussion started by: Shreedhar Naik
2 Replies

6. UNIX for Dummies Questions & Answers

Need to get pid of a process and have to store the pid in a variable

Hi, I need to get the pid of a process and have to store the pid in a variable and i want to use this value(pid) of the variable for some process. Please can anyone tell me how to get the pid of a process and store it in a variable. please help me on this. Thanks in advance, Amudha (7 Replies)
Discussion started by: samudha
7 Replies

7. Linux

reserving process id (PID)

I am trying to submit a background process on a remote machine using ssh -f remote-host "sh my-process.sh" Normally the process will be submitted and control returned to the local machine (even when the process is running on the remote machine) I want to get the process id of the submitted... (4 Replies)
Discussion started by: superuser84
4 Replies

8. Solaris

getting pid of process

hi all, Is there a simple script anyone could through out to me, to find the pid of a process given the name. I actually need to bind this pid to a processor set. I would probably put these comamns in a shell script which would have. a) kick start the executable b) get the pid c) bind it to a... (10 Replies)
Discussion started by: Naanu
10 Replies

9. Shell Programming and Scripting

Process PID

Hi Friends :p I have a little problem please help me out. I have a Unix based OS Sun Server having oracle 8i as database on it. The server has one client with windows OS. The client uses developer 2000 (GUI) to run query and run processes. I want to know how can I know the PID of a process run... (3 Replies)
Discussion started by: vanand420
3 Replies

10. Programming

Obtaining Process information on AIX

I have written a program to collect some performance metrics on and AIX box, but I'm having difficultly getting the process information. I'm lead to believe that I'm not getting the correct information because I'm trying to run the program on AIX 5.1 (5100-03), but I'm not convinced as the... (0 Replies)
Discussion started by: StuBob
0 Replies

Featured Tech Videos