How to get the number / id of processes and threads?

Since I am working on Hi3518 with Linux, in order to reduce the use of computing power of the device, I used a simplified version of Linux. So, most of the applications are gone or are simplified without any option. I just summarized the methods I can use on Hi3518 and should be also work on some other Embedded Linux.

In fact, the applications in Linux usually obtain related information by reading the files in /proc. Under /proc, you can see a lot of folder, some of them are in numbers. Those folders named in numbers, which are process ids (PIDs) represent the processes run in the system. Thus, you can see the details of each process in each folder.

/proc/***/

where *** are the corresponding process pid.

Obtaining the number, the name and the id of all processes

By using command: top

This only shows the processes which are running. The names are shown in the last column, COMMAND.

Figure 1: by using top

To obtain the total number of processes, you can use wc -l. “wc” prints the number of lines (-l), the number of characters (-m), the number of words (-w) etc. to the command prompt. You may check out more on man page: http://linux.die.net/man/1/wc.
But, since top is running, you may press Ctrl + C to stop it before printing you the value. And you need to subtract some lines that is not contributed to the number of processes, like the first 4 lines in Figure 1, 24 – 4 = 20 processes.

By using command: ps

This gives you all the processes run. Similarly, the name are in the last column, and you can use wc -l to obtain the total number of processes. And, don’t forget to subtract some lines!

Figure 2: by using ps

 

Obtaining the number and the id of threads in each process

By reading the status file in /proc

The status file in each folder of a process states all the details of the process, including the number of thread. Get the pid of the process you want to check first, by running the above command, and then run the following command.

cat /proc/***/status

where *** are the corresponding process pid.
Take pid 138 as an example and there is a item “Threads” with value 1, in which you can know the number of threads. You will see something like this.

To list the thread ids, you can just simply list the directory /proc/***/task with the following command.

ls -l /proc/***/task

where *** are the corresponding process pid.
And you’ll see a list of numbers (the name of directories) again, which are the thread ids of the process. You can also check whether the total number match the number shown in /proc/***/status.
Example: Case of process id 138, only one item in the list, which matches the number shown above.

Hope you find this useful.

Comments

comments

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">